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
- Sign in at app.qr3.app
- Go to Settings → API Keys
- Click New Key
- Choose the desired scopes
- Copy the key — it is only shown once!
Key types
| Type | Prefix | Usage |
|---|---|---|
| Secret Key | qr3_sk_ | Server-side (API, backend) |
| Publishable Key | qr3_pk_ | Client-side (read-only access) |
| Test Key | qr3_test_sk_ | Development (own rate limits) |
Usage
HTTP header
Authorization: Bearer qr3_sk_your_key_herecURL
curl https://qr3.app/v1/codes \ -H "Authorization: Bearer qr3_sk_your_key_here"TypeScript SDK
import { QR3 } from "@qr3/sdk";
const client = new QR3({ apiKey: "qr3_sk_your_key_here" });const codes = await client.codes.list();CLI
qr3 login# or:export QR3_API_KEY=qr3_sk_your_key_hereRate limits
The rate limit is enforced per API key from its stored value. New keys created through the API currently use 60 requests per minute, independent of the plan.
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 60 requests/minute exceeded"}Scopes
| Scope | Description |
|---|---|
* | Full access |
codes:read | Read QR codes |
codes:write | Create and edit QR codes |
scans:read | Read scan analytics |
webhooks:write | Configure webhooks |
account:read | Read account information |