API overview
The REST API lives at /api/v1. The reference lists every route and /api/v1/doc returns the OpenAPI document.
Authenticate
Create a key under Settings > API Keys and send it as a bearer token. The key is shown once, and only its hash is stored.
curl -H "Authorization: Bearer $QRHOOKS_API_KEY" \
https://your-domain/api/v1/qr-codes
A key belongs to one workspace, so it only sees that workspace's codes. A missing or wrong key returns 401.
Errors
Errors return a JSON body with a message and a code:
{ "error": "QR code not found", "code": "not_found" }
A URL field using a scheme such as javascript: or data:text/html returns 400 with the code invalid_url.
Each key gets 1000 requests per 24 hours. Requests over that return 429 with a Retry-After header in seconds.
Retry a failed delivery
curl -X POST -H "Authorization: Bearer $QRHOOKS_API_KEY" \
https://your-domain/api/v1/webhook-deliveries/$ID/retry
Returns 202 with the new delivery's id, or 409 if that delivery didn't fail. The retry uses the original scan data and the webhook's current URL and template.
Check the service
GET /api/v1/health returns {"status":"ok"} and needs no key.