Leadible API v1 · Pro and Business plans
Tell your AI assistant to make the QR code. It shows up in your account.
Connect Claude, ChatGPT, Make, Zapier, or your own code to Leadible. You can create dynamic QR codes in your colors, change where they point after they are printed, and check how many people scanned them, without opening the dashboard.
What you can do
Create QR codes
Give a name and a link. You get back a dynamic QR code that is ready to print.
Change where a code points
Send people somewhere new at any time. Codes you already printed keep working.
Set your colors
Pick the dot and background colors, or use a transparent background for designs.
Pause and resume
Turn a code off after an event ends and back on when you need it.
List your codes
See every dynamic QR code in your account, newest first.
Read scan stats
Total and unique scans, scans per day, top countries, and device types.
Download images
Each code comes with PNG and SVG links you can drop into any design tool.
What a key cannot do
- See your leads or anyone’s contact details
- Delete QR codes (pause them instead)
- Change your plan, billing, or account settings
- Touch business cards or static QR codes (Wi-Fi, vCard, and so on)
- Reach any other Leadible account
Try asking your assistant: “Make a QR code for our spring open house that goes to our listings page, in navy on a transparent background.” Then, after the event: “Point the open house code at our thank-you page.”
Get your API key
- 1
Be on a Pro or Business plan
The API is not included on the Free plan. See plans. - 2
Open Settings, then API Keys
Sign in to Leadible and go to Settings › API Keys. - 3
Name your key and click Create key
Use a name that tells you where it lives, like “ChatGPT” or “Make”. Each tool should get its own key. - 4
Copy the key right away
Your key starts withlk_live_. Leadible shows it once. Save it in your password manager, then paste it into the tool you are connecting.
Connect your tool
ChatGPT (custom GPT)
- In ChatGPT, open Explore GPTs, then Create, then the Configure tab.
- Under Actions, click Create new action, then Import from URL.
- Paste
https://leadible.app/api/v1/openapi.jsonand import. - Set Authentication to API Key, Auth Type Bearer, and paste your key.
- Keep the GPT private (Only me). Anyone who can use the GPT acts on your account.
Claude
Use Claude Code or the Claude desktop app with a terminal. Save your key as an environment variable named LEADIBLE_API_KEY, then ask Claude to read the API description at https://leadible.app/api/v1/openapi.json and make the request for you. Keep the key out of chat messages.
Make, Zapier, n8n, or your own code
Add an HTTP request step pointed at https://leadible.app/api/v1 with the header Authorization: Bearer YOUR_API_KEY and a JSON body. The examples below work as written.
Authentication
Send your key in the Authorization header of every request. All requests use HTTPS and JSON.
Authorization: Bearer YOUR_API_KEYBase URL: https://leadible.app/api/v1
Machine-readable description (OpenAPI 3.1): https://leadible.app/api/v1/openapi.json
Endpoints
POST/qr-codes
Create a dynamic QR code that sends people to a link.
curl -X POST https://leadible.app/api/v1/qr-codes \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Spring Expo Booth",
"destination_url": "https://example.com/expo",
"foreground_color": "#006B7D",
"transparent_background": true
}'{
"id": "3f9c2a1e-5b7d-4c8e-9a10-2b3c4d5e6f70",
"name": "Spring Expo Booth",
"short_code": "k7m2xq9p",
"scan_url": "https://leadible.app/r/k7m2xq9p",
"destination_url": "https://example.com/expo",
"foreground_color": "#006B7D",
"background_color": "transparent",
"error_correction": "M",
"dot_style": "square",
"is_active": true,
"scan_count": 0,
"unique_scan_count": 0,
"image": {
"png": "https://leadible.app/api/v1/qr-images/k7m2xq9p.png",
"svg": "https://leadible.app/api/v1/qr-images/k7m2xq9p.svg"
},
"created_at": "2026-11-05T15:00:00.000Z",
"updated_at": "2026-11-05T15:00:00.000Z",
"warnings": []
}PATCH/qr-codes/{id}
Change where a code points, rename it, restyle it, or pause it. Send only the fields you want to change.
curl -X PATCH https://leadible.app/api/v1/qr-codes/3f9c2a1e-5b7d-4c8e-9a10-2b3c4d5e6f70 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "destination_url": "https://example.com/thank-you" }'GET/qr-codes
List your dynamic QR codes, newest first. Use limit (1 to 100, default 25) and pass next_cursor back as cursor to get the next page.
curl "https://leadible.app/api/v1/qr-codes?limit=25" \
-H "Authorization: Bearer YOUR_API_KEY"{
"items": [ { "id": "3f9c2a1e-...", "name": "Spring Expo Booth", "...": "..." } ],
"next_cursor": null
}GET/qr-codes/{id}
Get one QR code.
curl https://leadible.app/api/v1/qr-codes/3f9c2a1e-5b7d-4c8e-9a10-2b3c4d5e6f70 \
-H "Authorization: Bearer YOUR_API_KEY"GET/qr-codes/{id}/analytics
Scan stats for one code over the last 1 to 90 days (default 30). Bot traffic is left out.
curl "https://leadible.app/api/v1/qr-codes/3f9c2a1e-5b7d-4c8e-9a10-2b3c4d5e6f70/analytics?days=30" \
-H "Authorization: Bearer YOUR_API_KEY"{
"total_scans": 412,
"unique_scans": 288,
"window_days": 30,
"last_scanned_at": "2026-11-04T18:22:10.000Z",
"daily": [ { "date": "2026-11-04", "scans": 37 } ],
"top_countries": [ { "country": "US", "scans": 301 } ],
"devices": { "mobile": 350, "desktop": 48, "tablet": 14 }
}Image links such as /qr-images/k7m2xq9p.png need no key, so you can paste them into Canva, an email, or a print order. Add ?size=512 to pick a width from 128 to 2048 pixels (default 1024). The image only contains your scan link, so sharing it is safe.
QR code fields
Use these fields when you create or update a code. Unknown fields are rejected so typos never go unnoticed.
nameRequired to create · text
- 1 to 100 characters. Only you see it.
destination_urlRequired to create · link
- Where people land after scanning. Must start with http:// or https://.
foreground_colorOptional · hex color
- Dot color, like #1A2B3C. Defaults to black.
background_colorOptional · hex color
- Defaults to white.
transparent_backgroundOptional · true / false
- Use true to drop the background so the code sits on your design.
error_correctionOptional · L, M, Q, or H
- Higher levels still scan when part of the code is covered or damaged. Defaults to M.
dot_styleOptional · text
- square, dots, rounded, classy, classy-rounded, or extra-rounded. Shown in your dashboard downloads. Image links always use square dots.
is_activeUpdate only · true / false
- Use false to pause a code. Paused codes send people to the Leadible homepage.
If your colors are too close together to scan reliably, the response includes a note in warnings. The code is still saved so you can adjust it.
The scan_url is the link inside the QR code. Changing destination_url never changes it, so printed codes keep working. If you set up a branded subdomain in Leadible, your scan links use it automatically.
Plans and limits
| Plan | API access | Requests per day | New codes per day | Total QR codes |
|---|---|---|---|---|
| Free | None | None | 5 (dashboard only) | |
| Pro | 500 | 50 | 50 | |
| Business | 2,000 | 200 | Unlimited |
Daily limits reset at 00:00 UTC and are shared by all keys on your account. Every response tells you where you stand:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 482
X-RateLimit-Reset: 1793923200 (Unix time of the next reset)
Retry-After: 3600 (only when you hit the limit)Codes you create through the API count toward the same QR code total as codes you make in the dashboard.
Errors
Errors always come back in the same shape, so your tool can explain what went wrong:
{
"error": {
"code": "validation_error",
"message": "must be a 6-digit hex color like #1A2B3C",
"field": "foreground_color"
}
}| Status | Code | What it means |
|---|---|---|
| 401 | invalid_api_key | The key is missing, mistyped, or revoked. |
| 403 | plan_required | The account is on the Free plan. Upgrade to Pro or Business. |
| 403 | qr_limit_reached | You have reached the QR code limit for your plan. |
| 404 | not_found | No QR code with that id exists in your account. |
| 422 | validation_error | A field is invalid. The field property tells you which one. |
| 429 | rate_limited | You used all of today’s requests. The count resets at 00:00 UTC. |
| 429 | create_limit_reached | You created today’s maximum number of codes through the API. |
| 500 | internal_error | Something went wrong on our side. Wait a moment and try again. |
Keeping your key safe
- Treat your key like a password. Anyone who has it can create codes and change where your codes point.
- Give each tool its own key. If one leaks, revoke just that one and everything else keeps working.
- Never paste a key into a public GPT, a shared document, a screenshot, or website code that visitors can see.
- You can have up to 5 active keys. Settings › API Keys shows when each key was last used and your recent requests.
- Revoking a key stops it immediately. Leadible stores only a fingerprint of your key, so we cannot show it to you again.
Make your next QR code without opening the dashboard
Included on Pro and Business. Your key is ready in under a minute.