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. 1

    Be on a Pro or Business plan

    The API is not included on the Free plan. See plans.
  2. 2

    Open Settings, then API Keys

    Sign in to Leadible and go to Settings › API Keys.
  3. 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. 4

    Copy the key right away

    Your key starts with lk_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)

  1. In ChatGPT, open Explore GPTs, then Create, then the Configure tab.
  2. Under Actions, click Create new action, then Import from URL.
  3. Paste https://leadible.app/api/v1/openapi.json and import.
  4. Set Authentication to API Key, Auth Type Bearer, and paste your key.
  5. 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.

Header
Authorization: Bearer YOUR_API_KEY

Base 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.

Request
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
  }'
Response
{
  "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.

Request
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.

Request
curl "https://leadible.app/api/v1/qr-codes?limit=25" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "items": [ { "id": "3f9c2a1e-...", "name": "Spring Expo Booth", "...": "..." } ],
  "next_cursor": null
}

GET/qr-codes/{id}

Get one QR code.

Request
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.

Request
curl "https://leadible.app/api/v1/qr-codes/3f9c2a1e-5b7d-4c8e-9a10-2b3c4d5e6f70/analytics?days=30" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "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.

name

Required to create · text

1 to 100 characters. Only you see it.
destination_url

Required to create · link

Where people land after scanning. Must start with http:// or https://.
foreground_color

Optional · hex color

Dot color, like #1A2B3C. Defaults to black.
background_color

Optional · hex color

Defaults to white.
transparent_background

Optional · true / false

Use true to drop the background so the code sits on your design.
error_correction

Optional · L, M, Q, or H

Higher levels still scan when part of the code is covered or damaged. Defaults to M.
dot_style

Optional · text

square, dots, rounded, classy, classy-rounded, or extra-rounded. Shown in your dashboard downloads. Image links always use square dots.
is_active

Update 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

PlanAPI accessRequests per dayNew codes per dayTotal QR codes
FreeNoneNone5 (dashboard only)
Pro5005050
Business2,000200Unlimited

Daily limits reset at 00:00 UTC and are shared by all keys on your account. Every response tells you where you stand:

Response headers
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"
  }
}
StatusCodeWhat it means
401invalid_api_keyThe key is missing, mistyped, or revoked.
403plan_requiredThe account is on the Free plan. Upgrade to Pro or Business.
403qr_limit_reachedYou have reached the QR code limit for your plan.
404not_foundNo QR code with that id exists in your account.
422validation_errorA field is invalid. The field property tells you which one.
429rate_limitedYou used all of today’s requests. The count resets at 00:00 UTC.
429create_limit_reachedYou created today’s maximum number of codes through the API.
500internal_errorSomething 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.