Skip to content

Authentication

Authentication

qr3.app uses API keys (Bearer tokens) for authentication. No OAuth flows — just generate a key and use it immediately.

Create an API key

  1. Sign in at app.qr3.app
  2. Go to Settings → API Keys
  3. Click New Key
  4. Choose the desired scopes
  5. Copy the key — it is only shown once!

Key types

TypePrefixUsage
Secret Keyqr3_sk_Server-side (API, backend)
Publishable Keyqr3_pk_Client-side (read-only access)
Test Keyqr3_test_sk_Development (own rate limits)

Usage

HTTP header

Authorization: Bearer qr3_sk_your_key_here

cURL

Terminal window
curl https://qr3.app/v1/codes \
-H "Authorization: Bearer qr3_sk_your_key_here" \
-H "X-Workspace-Id: ws_your_workspace_id"

TypeScript SDK

import { QR3 } from "@qr3/sdk";
const client = new QR3({ apiKey: "qr3_sk_your_key_here" });
const codes = await client.codes.list();

CLI

Terminal window
qr3 login
# or:
export QR3_API_KEY=qr3_sk_your_key_here

Rate limits

PlanRequests/MinuteResponse headers
Free30X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Pro120
Business300
Agency600

On limit exceeded, the API returns HTTP 429:

{
"type": "https://docs.qr3.app/errors/rate-limited",
"title": "Too Many Requests",
"status": 429,
"detail": "Rate limit of 30 requests/minute exceeded"
}

Scopes

ScopeDescription
*Full access
codes:readRead QR codes
codes:writeCreate and edit QR codes
scans:readRead scan analytics
webhooks:writeConfigure webhooks
account:readRead account information