Developer portal
POST /admin/tenants
Create a tenant workspace with default billing, policy, and key management settings.
PilotPOST /admin/tenantsAuth: admin
Summary
Create a tenant workspace with default billing, policy, and key management settings.
Example
curl
curl -X POST "https://sparkling-vibrancy-production-1a7a.up.railway.app/admin/tenants" \
-H "Authorization: Bearer 811f31d4-5b8e-4ed0-a7a2-8176e05eba63" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Bank - EMEA",
"slug": "acme-bank-emea"
}'Request body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Display name for the tenant organization. e.g. Acme Bank - EMEA |
| slug | string | Yes | Unique tenant slug used in internal routing and auditing. e.g. acme-bank-emea |
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