Integrationsopskrifter
Fire mønstre dækker næsten enhver integration, vi ser. Hvert er en håndfuld kald, og de kan kombineres.
Omdirigér en trykt kode
Grunden til at de fleste teams overhovedet griber til API’et. En kode på emballage, et klistermærke eller en plakat bliver ved med at virke, mens kampagnen bag den flytter.
curl -X POST https://api.mosaqo.app/v1/public-api/qr/$QR_ID/destination \
-H "Authorization: Bearer $MOSAQO_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/winter" }'På en udgivet kode virker det med det samme — der er ikke noget genudgivelsestrin — og svaret fortæller, om koden er live eller stadig et udkast.
Hæft en QR på en CRM-post
Opret koden med postens egen URL, udgiv den, og træk så billedet direkte ind i et filfelt. Billed-endpointet returnerer bytes inline, så de fleste CRM-systemer tager imod dem som vedhæftning uden en mellemliggende upload.
const headers = { Authorization: `Bearer ${process.env.MOSAQO_KEY}` };
const created = await fetch('https://api.mosaqo.app/v1/public-api/qr', {
method: 'POST',
headers: { ...headers, 'Content-Type': 'application/json' },
body: JSON.stringify({
name: `Deal ${deal.id}`,
mode: 'dynamic',
contentType: 'url',
content: { targetUrl: `https://crm.example.com/deals/${deal.id}` },
}),
}).then((r) => r.json());
const qrId = created.data.id;
await fetch(`https://api.mosaqo.app/v1/public-api/qr/${qrId}/publish`, { method: 'POST', headers });
const png = await fetch(
`https://api.mosaqo.app/v1/public-api/qr/${qrId}/image?format=png&size=1024`,
{ headers },
).then((r) => r.arrayBuffer());Gem qrId på din post. Det er håndtaget til alt det senere — omdirigering, arkivering, analyse.
Udsted koder i massevis
Én kode pr. produkt, pr. bord, pr. udstyr. Send en CSV, spørg til opgaven, og knyt så resultaterne til dine egne rækker — hver række bærer det qrId, den gav.
curl -X POST https://api.mosaqo.app/v1/public-api/bulk \
-H "Authorization: Bearer $MOSAQO_KEY" \
-H "Content-Type: application/json" \
-d '{
"contentType": "url",
"mode": "dynamic",
"csv": "name,destination\nTable 1,https://example.com/menu?t=1\nTable 2,https://example.com/menu?t=2"
}'
curl "https://api.mosaqo.app/v1/public-api/bulk/$JOB_ID?limit=500" \
-H "Authorization: Bearer $MOSAQO_KEY"Send først "dryRun": true for at validere hver række uden at skrive noget.
Indlejr billedet via URL
Airtable, Notion og Sheets viser et billede fra et link, de selv henter, så de sender aldrig din Authorization-header og kan ikke bruge endpointet ovenfor. Bed om et signeret link i stedet:
curl -X POST https://api.mosaqo.app/v1/public-api/qr/$QR_ID/image-url \
-H "Authorization: Bearer $MOSAQO_KEY" \
-H "Content-Type: application/json" \
-d '{ "format": "png", "size": 1024 }'Kun udgivne koder kvalificerer — en udgiven kode er allerede trykt og ude i verden, mens et udkast kan være en uannonceret kampagne. Læg den returnerede url direkte i et vedhæftnings- eller billedfelt. At arkivere eller slette koden lukker linket med det samme: sådan tilbagekalder du et, der er spredt længere end tilsigtet.
Reagér på scanninger
Scanninger sendes aldrig ud: der er ingen webhook pr. scanning, og vi sender ikke analyse på scanningsniveau til tredjeparts-endpoints. Abonnér på scan.aggregate_ready, hvis en aggregering er nok, eller hent enkelte scanninger selv efter en plan:
curl "https://api.mosaqo.app/v1/public-api/scans?since=$LAST_SEEN&limit=500" \
-H "Authorization: Bearer $MOSAQO_KEY"Behold den returnerede pagination.nextCursor, og send den med næste gang. Rækkefølgen er stabil, så en poller læser aldrig om og springer aldrig en scanning over. Hvilke felter der dukker op, afhænger af arbejdsområdets privatlivsindstillinger for analyse — svaret viser allowedDimensions, så du ved, hvad du kan forvente.
Duer polling virkelig ikke for dig, og har du brug for scanninger i samme øjeblik de sker, kan det lade sig gøre efter aftale, ikke som standard.
No-code-platforme
Make, Zapier, n8n og Pipedream kan allerede i dag tale med Mosaqo gennem et generisk HTTP-modul, og de dele, de har brug for, er på plads: GET /me som forbindelsestest, markørpaginering til iteratorer, og webhook-abonnementer, som en trigger selv opretter og fjerner.
| Hvad de beder om | Hvad du bruger |
|---|---|
| Basis-URL | https://api.mosaqo.app/v1/public-api |
| Auth-header | Authorization: Bearer <din nøgle> |
| Forbindelsestest | GET /me |
| OpenAPI-import | https://api.mosaqo.app/v1/public-api/openapi.json |
| Øjeblikkelig trigger | POST /webhooks når den tændes, DELETE /webhooks/{id} når den slukkes |
| Pollende trigger | GET /qr?updatedSince=…&cursor=… |
Det samme OpenAPI-dokument importeres i Postman og Insomnia og genererer en typet klient med openapi-typescript eller en hvilken som helst OpenAPI-generator.
To regler værd at følge
- Gem `qrId`, ikke den offentlige URL. URL’en er stabil, men det er id’et, hvert senere kald har brug for.
- Arkivér frem for at slette. Sletning er permanent og ødelægger hvert trykt eksemplar; arkivering tager en kode ud af drift og kan fortrydes.
Alle detaljer om endpoints står i API-referencen.