Developer portal
POST /admin/tenants/{tenant_id}/keys
Issue a new API key for a tenant with scoped role and optional expiry.
PilotPOST /admin/tenants/{tenant_id}/keysAuth: admin
Summary
Issue a new API key for a tenant with scoped role and optional expiry.
Example
curl
curl -X POST "https://sparkling-vibrancy-production-1a7a.up.railway.app/admin/tenants/{tenant_id}/keys" \
-H "Authorization: Bearer 811f31d4-5b8e-4ed0-a7a2-8176e05eba63" \
-H "Content-Type: application/json" \
-d '{
"label": "staging-ci",
"role": "operator"
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
| label | string | Yes | Human-readable key label for inventory and audits. e.g. staging-ci |
| role | "viewer" | "operator" | "admin" | No (operator) | Role bound to the issued API key. |
Errors
| Code | Meaning | Typical cause | Suggested fix |
|---|---|---|---|
| 404 | Not found | Scan, schedule, share link, or resource id does not exist or expired. | Verify id and tenant scope; share links expire per expiresHours. |
| 422 | Unprocessable entity | Invalid payload shape, unsupported scenario, or infeasible constraints. | Fix field errors in response detail; relax constraints and retry. |
| 429 | Too many requests | Per-key rate limit exceeded (default 300 requests per minute) or public endpoint limit. | Backoff with jitter; cache results; request higher limit for production. |
| 500 | Internal server error | Unexpected backend failure; includes requestId in response. | Retry with exponential backoff; contact support with requestId if persistent. |
See the full errors reference.
Found an issue? Report documentation feedback