API reference
Read-only mirror of the StudioAxis external API. WorldAxis does not implement these routes.
Base URL: https://studioaxis.io/api/external
For copy-paste workflows: API Examples.
Commercial terms: Pricing. A generation is one successful billed API output (v1 or v2), recorded in usage logs.
Authentication
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <API_KEY> issued in StudioAxis |
X-External-Org-Id | Yes | Organization identifier for your integration |
Idempotency-Key | Recommended | Unique key per logical operation (UUID v4) |
Content-Type | Yes (POST) | application/json |
Rate limits
| Tier | Typical limit |
|---|---|
| Standard | 60 requests / minute / organization |
| Enterprise | Contract-specific |
Response headers (when enabled):
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1715789400
Exceeded limits return 429 with Retry-After (seconds).
POST /v1/generate-image
Standard image generation with minimal orchestration. Suitable for simple production paths without the v2 cinematic stack.
URL: https://studioaxis.io/api/external/v1/generate-image
Request body
{
"prompt": "modern office workspace with natural light",
"aspectRatio": "16:9",
"resolution": "2K"
}
| Field | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Generation intent |
aspectRatio | string | No | e.g. 16:9, 1:1, 9:16 |
resolution | string | No | e.g. 1K, 2K |
Response 200
{
"success": true,
"generationId": "gen_123",
"imageUrl": "https://cdn.studioaxis.io/outputs/gen_123.png",
"aspectRatio": "16:9",
"resolution": "2K"
}
Each successful response counts as one generation for usage billing.
Example
curl -X POST "https://studioaxis.io/api/external/v1/generate-image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-External-Org-Id: your-org-id" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{"prompt":"Product hero on marble surface, soft key light","aspectRatio":"16:9","resolution":"2K"}'
POST /v2/cinematic-image
Cinematic orchestration: semantic translation → creative direction → image generation.
URL: https://studioaxis.io/api/external/v2/cinematic-image
Request body
{
"prompt": "a team celebrating a product launch in a modern office",
"category": "category_product_launch",
"aspectRatio": "16:9",
"resolution": "2K",
"cinematicMode": true
}
| Field | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | Creative brief (interpreted by orchestration, not passed raw to the model) |
category | string | Yes | Scene / use-case template (e.g. category_product_launch, category_business_presentation, category_customer_story) |
aspectRatio | string | No | Output aspect ratio |
resolution | string | No | Output resolution |
cinematicMode | boolean | No | Enable full cinematic orchestration stack (default true for v2) |
Visual identity context (brand look, tone, style constraints) is resolved automatically from your organization settings in StudioAxis. It is not a request-time parameter - contact info@studioaxis.io for enterprise brand configuration.
Response 200
{
"success": true,
"generationId": "gen_456",
"imageUrl": "https://cdn.studioaxis.io/outputs/gen_456.png",
"visualMetaphor": "A dynamic team moment captured with warm cinematic lighting and shallow depth of field",
"semanticTranslationMs": 842,
"providerLatencyMs": 3120
}
| Field | Description |
|---|---|
semanticTranslationMs | Orchestration time before image provider |
providerLatencyMs | Underlying image generation provider |
visualMetaphor | Resolved cinematic intent (structured metadata) |
Example
curl -X POST "https://studioaxis.io/api/external/v2/cinematic-image" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-External-Org-Id: your-org-id" \
-H "Idempotency-Key: 7c9e6679-7425-40de-944b-e07fc1f90ae7" \
-H "Content-Type: application/json" \
-d '{"prompt":"Professional consultant presenting strategy in meeting room","category":"category_business_presentation","aspectRatio":"16:9","resolution":"2K"}'
Errors
{
"success": false,
"code": "rate_limited",
"message": "Too many requests per minute",
"requestId": "req_9m2x1a"
}
| HTTP | Code | Meaning |
|---|---|---|
| 400 | bad_request | Invalid body or unknown category |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | Key valid but org mismatch |
| 402 | insufficient_balance | Generation quota or prepaid balance insufficient |
| 409 | idempotency_conflict | Same key, different payload |
| 429 | rate_limited | Throttled; honor Retry-After |
| 500 | internal_error | Upstream failure; retry with backoff |
| 503 | unavailable | Maintenance or overload |
Idempotency
Send Idempotency-Key on all POST requests that create billable work.
- Same key + same body → same response (within retention window)
- Same key + different body →
409 idempotency_conflict - Default retention: 24 hours (enterprise may extend)
Webhooks (enterprise)
Optional completion/failure events to your HTTPS endpoint. Configured in StudioAxis — not via WorldAxis.
Changelog
| Version | Notes |
|---|---|
| v1 | generate-image — standard generation |
| v2 | cinematic-image — semantic + creative direction orchestration |
Contact info@studioaxis.io for sandbox keys.