Skip to main content
Every tool is annotated so your client knows what it does before it runs. Four of them change something already in circulation, and a well-behaved client will ask you to confirm those.

QR codes

Creates. Create a dynamic QR code. The printed pattern encodes a short link rather than the content itself, so what it leads to can be changed later without reprinting, and every scan is recorded.Pass the payload field matching the type you choose.
string
url · text · email · phone · sms · wifi · vcard · crypto · whatsapp. Defaults to url.
string
For type url: the destination the code should lead to.
string
For type text: the plain text to encode.
string
For type phone: the number to call, e.g. +5511999999999.
object
For type email: the message a scan should open.
object
For type sms: the message a scan should compose.
object
For type wifi: the network a scan should join.
object
For type vcard: the contact card a scan should offer to save. City, state, zipcode and country are only encoded when address is also given.
object
For type crypto: the payment request a scan should open.
object
For type whatsapp: the conversation a scan should open.
Three sub-fields are named in a way nobody guesses, and a wrong key saves without error and encodes nothing: the recipient in crypto is address, the blind-copy field in email is cco, and sms carries a subject.
string
Domain for the underlying short link.
string
Custom slug for the underlying short link.
number
Size in pixels.
string
Error correction level: L · M · Q · H.
string
Foreground color, hex.
string
Background color, hex.
Read. List all QR codes in the workspace.
number
Page number.
Overwrites. Change what a dynamic QR code leads to without reprinting it: copies already distributed now resolve to the new content.Pass the payload field matching the type the code already hasurl for a link code, wifi for a Wi-Fi code. A code cannot be converted from one type to another here: sending a wifi payload to a url code is accepted and silently changes nothing, so check the type with list_qrcodes first if you are unsure.
This does not apply to static QR codes, which encode the content directly in the printed pattern. For those the stored record changes, but anything already printed keeps leading to the old content forever.
string
required
The QR code ID to update.
string
For a url code: the new destination.
string
For a text code: the new plain text.
string
For a phone code: the new number.
object
For an email code: the new message.
object
For an sms code: the new message.
object
For a wifi code: the new network.
object
For a vcard code: the new contact card.
object
For a crypto code: the new payment request.
object
For a whatsapp code: the new conversation.
string
New foreground color, hex.
string
New background color, hex.
boolean
Archive status.
Overwrites. Delete a QR code. Any printed copy stops resolving and cannot be recovered by reprinting.
string
required
The QR code ID to delete.

Analytics

Read. Scan and click analytics — workspace-wide, or for one link or QR code.
string
required
clicks · scans · leads · sales · composite. Use scans for QR codes and clicks for short links.
string
required
count · timeseries · countries · cities · devices · browsers · os · referers · top_links · top_qrcodes · top_urls.
Filter by link ID.
string
Filter by QR code ID.
string
Filter by domain.
string
Filter by slug. Use with domain.
string
1h · 24h · 7d · 30d · 90d · ytd · 1y · all. Defaults to 24h.
How far back you can look depends on your plan, and a longer window returns 403 rather than a truncated result: Free stops at 30 days, Starter at 90 days, Pro at 1 year, Business has no limit.
scans is only separated from clicks for count and timeseries. Every other grouping — countries, cities, devices, browsers, os, referers — reports traffic as clicks across links, QR codes and pages together, whichever event you pass.To break a QR code’s scans down by country, pass its qrcodeId so the query is scoped to that one code; read the figure as that code’s traffic. For a workspace-wide scan total, use groupBy: count or groupBy: timeseries, which do separate the three.

Workspace

Read. List custom domains configured in the workspace.
string
Search keyword.
number
Page number.
number
Results per page.
Read. List all tags in the workspace.
string
Search keyword.
number
Page number.
number
Results per page.
Workspace only. Create a tag for organizing links.
string
required
Tag name.
string
red · yellow · green · blue · purple · pink · brown.
Read. The workspace this connection is authorized for, including its name, slug and plan. Useful before creating in bulk, or before using a feature the plan may not include.Takes no arguments.

Not available here

Conversion tracking. track_lead and track_sale are not exposed. They need the conversions.write scope, which cannot be requested without locking non-owners out of the connection entirely. Use the API for conversions.