Developer

qr-cow API & MCP

Create QR codes, manage dynamic destinations, and pull scan analytics from any programming language. Plug-and-play with Claude Desktop, Claude Code, Cursor, and Zed via MCP.

1

Get a token

Sign in, open Dashboard → API & MCP and click Create token. You'll get a qrc_live_… value — copy it once; we only store the hash.
2

Make a call

Send the token as a Bearer header against api.qr-cow.com. Every endpoint a session JWT can hit also accepts a token.
3

Or wire MCP

Drop the JSON snippet below into your AI client's MCP config and the same token works there — no glue code.

Try it

Pick an endpoint and a language. The token in the snippets is a placeholder — paste your own from the dashboard.

Create a QR code

POST /qrcodes — every content type the studio supports (URL, Wi-Fi, vCard, …).

curl https://qr-cow.com/api/v1/qrcodes \
  -H "Authorization: Bearer qrc_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Café menu",
    "type": "static",
    "content_type": "url",
    "content": "https://my-cafe.com/menu"
  }'

Endpoint reference

Everything in /api/v1 — same shape across languages.

MethodPathWhat it does
GET/auth/meAuthenticated user + plan
POST/qrcodesCreate a static or dynamic QR
GET/qrcodesList your QR codes (paginated)
GET/qrcodes/{id}Get one QR's full details
PATCH/qrcodes/{id}Update name / dynamic destination
DELETE/qrcodes/{id}Soft-delete a QR
GET/analytics/qrcodes/{id}Scans, geo, device, hour-of-day
GET/dev/tokensList API tokens
POST/dev/tokensCreate a token (returns plaintext ONCE)
DELETE/dev/tokens/{id}Revoke a token

MCP — Model Context Protocol

MCP is an open protocol Anthropic published for connecting AI clients to external tools. Once wired up, your assistant can say things like "make a QR code for my new menu" or "show me which countries scanned my café QR last week" and call qr-cow directly.

Claude Desktop / Claude Code

{
  "mcpServers": {
    "qr-cow": {
      "command": "uvx",
      "args": ["qr-cow-mcp"],
      "env": { "QRCOW_API_TOKEN": "qrc_live_..." }
    }
  }
}

Cursor / Zed / others

Same shape — the editor's MCP config uses command, args, and an env block. The MCP server is a stdio process — anything that speaks MCP can use it.

Full MCP setup guide ↗

Tools exposed by the server

ToolWhat it does
create_qrcodeCreate a static or dynamic QR (URL, Wi-Fi, vCard, …).
list_qrcodesList recent QR codes in the user's account.
get_qrcodeFetch one QR's current design + destination.
update_qrcode_destinationChange a dynamic QR's destination — printed code keeps working.
delete_qrcodeSoft-delete a code.
get_qrcode_analyticsScans + breakdown by country, device, hour.
meThe signed-in user's profile + plan.

Authentication

Send Authorization: Bearer qrc_live_… on every request. Tokens are universal — they work against every endpoint a session JWT does. Revoked tokens are rejected immediately.

Errors

All responses follow {success, data, error}. HTTP status codes match RFC 7231; theerror field carries a short machine-readable code (e.g. token_limit_reached).

Rate limits & security

  • Reads

    600 / minute

    Per user, GETs only.

  • Writes

    60 / minute

    POST / PATCH / DELETE.

  • Token cap

    20 / user

    Active tokens. Revoke to make room.

We only store the SHA-256 of each token. Revoke immediately if a token leaks; a new one takes seconds to provision in the dashboard.

Ready to build?

Provision your first token and ship a "make a QR code from this URL" integration in under 5 minutes.

Open the dashboard