Download OpenAPI specification:Download
HTTP API for submitting and retrieving asynchronous AI jobs (transcription, translation, video analysis, LLM tasks).
All operations follow the same pattern:
POST /v1/{resource} accepts the job and returns 202 Accepted with a job resource (status: pending).processing.completed and the result is available; on failure it reaches failed with an error object.To retrieve the outcome, either:
GET /v1/{resource}/{id} until status is completed or failed.attributes.webhook in the creation request. The gateway POSTs a lifecycle event payload to that URL on each state transition.The result payload is also available separately at GET /v1/{resource}/{id}/result once the job is completed.
x-oidc-audience in /openapi.json).id.Returns all AI services exposed by the gateway, along with their endpoint paths, job type discriminators, and current operational status. Use this to discover what capabilities the gateway offers and which endpoints to call.
Array of objects (Service) | |||||||
Array
| |||||||
{- "data": [
- {
- "id": "transcriptions",
- "type": "service",
- "attributes": {
- "name": "Transcription",
- "description": "Converts audio or video content into structured, time-aligned text.",
- "endpoint": "/v1/transcriptions",
- "job_type": "transcription-job",
- "status": "active"
}
}
]
}Returns all backend providers configured in the gateway, along with the resource types and features each one supports. Use this to determine which provider value to pass when creating a job, and which features are available for a given provider.
Array of objects | |||||||
Array
| |||||||
{- "data": [
- {
- "id": "twelvelabs",
- "type": "provider",
- "attributes": {
- "name": "TwelveLabs",
- "status": "active",
- "services": {
- "transcriptions": {
- "features": [
- "language_detection",
- "diarization",
- "timestamps"
], - "languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "translations": {
- "features": [
- "language_detection",
- "formality"
], - "source_languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it"
], - "target_languages": [
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "video-analyses": {
- "features": [
- "labels",
- "scenes",
- "faces",
- "speech_to_text",
- "ocr",
- "content_moderation",
- "sentiment",
- "topics",
- "brands",
- "summary"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "llm-tasks": {
- "models": [
- "gpt-4o",
- "gpt-4o-mini"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}
}
}
}
]
}Returns a paginated, cross-service list of jobs. When filter[tenant] is omitted, the caller's tenant is resolved from their JWT token claim. Super-admins may specify filter[tenant] to query jobs for any tenant. Each item contains common job fields only (status, timing, routing, tenant, user) — no service-specific input or result payload. Use GET /v1/{resource}/{id}/result to fetch the full result for a completed job.
object | |
object |
required | Array of objects | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z"
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}Returns all tenants known to the gateway along with their current service and provider access configuration. Tenants are created and managed externally; this endpoint is read-only.
object |
required | Array of objects (Tenant) | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}Returns the service and provider access configuration for a single tenant.
| slug required | string Example: acme-corp Slug identifier of the tenant. |
object (Tenant) A tenant identified by a unique slug, with its service and provider access configuration. | |||||||||||||
| |||||||||||||
{- "data": {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}
}
}Enables or disables specific services and providers for a tenant. Only entries included in the request body are changed; all other access settings remain unchanged.
| slug required | string Example: acme-corp Slug identifier of the tenant. |
required | object | ||||||||||||
| |||||||||||||
object (Tenant) A tenant identified by a unique slug, with its service and provider access configuration. | |||||||||||||
| |||||||||||||
{- "data": {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "translations": {
- "enabled": true
}
}, - "providers": {
- "twelvelabs": {
- "enabled": true
}
}
}
}
}{- "data": {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}
}
}Returns all policies the caller is authorised to see. When filter[tenant] is omitted, the caller's tenant is resolved from their JWT token claim. Super-admins may specify filter[tenant] to query policies for any tenant.
object | |
object |
required | Array of objects (Policy) | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}Creates a new policy. The initial version is set to 1. When attributes.tenant is omitted, the caller's tenant is resolved from their JWT token claim. Only super-admins may specify attributes.tenant; returns 403 otherwise.
required | object | ||||||||||||||||||
| |||||||||||||||||||
object (Policy) A routing policy defining how the gateway selects providers for jobs. Each update creates a new immutable version; the latest version is always active. | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
}Returns the current version of a policy.
| id required | string <uuid> Example: f4a3b2c1-d5e6-7890-abcd-ef1234567890 UUID of the policy. |
object (Policy) A routing policy defining how the gateway selects providers for jobs. Each update creates a new immutable version; the latest version is always active. | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
}Fully replaces a policy. All writable fields must be provided. The version is incremented automatically. Jobs that ran under previous versions retain their original routing metadata.
| id required | string <uuid> Example: f4a3b2c1-d5e6-7890-abcd-ef1234567890 UUID of the policy. |
required | object | ||||||||||||||||||
| |||||||||||||||||||
object (Policy) A routing policy defining how the gateway selects providers for jobs. Each update creates a new immutable version; the latest version is always active. | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
}Applies a partial update to a policy. Only the provided fields are changed; omitted fields are left unchanged. The version is incremented automatically. Jobs that ran under previous versions retain their original routing metadata.
| id required | string <uuid> Example: f4a3b2c1-d5e6-7890-abcd-ef1234567890 UUID of the policy. |
required | object | ||||||||||||||||||
| |||||||||||||||||||
object (Policy) A routing policy defining how the gateway selects providers for jobs. Each update creates a new immutable version; the latest version is always active. | |||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "name": "string",
- "description": "string",
- "routing_strategy": "latency",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
}Permanently removes a policy.
| id required | string <uuid> Example: f4a3b2c1-d5e6-7890-abcd-ef1234567890 UUID of the policy. |
{- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}
}Operations related to converting audio or video content into structured, time-aligned text
| event required | string Enum: "transcription.progress" "transcription.completed" "transcription.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "event": "transcription.completed",
- "data": {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}For video input, audio is extracted before transcription begins.
The input.url must be reachable by the gateway and workers (HTTP/HTTPS). In local Compose stacks,
use the MinIO sample URL from the request example or your own publicly accessible file.
Usage is returned in data.attributes.result.usage once the job completes,
but only when data.attributes.options.include_usage is true.
required | object JSON:API-style resource envelope. Must include | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "type": "transcription-job",
- "attributes": {
- "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard"
},
}
}
}{- "data": {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Use the id from the 202 response to POST /v1/transcriptions.
| id required | string <uuid> Example: 2f41bc1f-b608-4360-acd9-a26a296fea3c Job UUID returned when the transcription was created. |
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Available once status is completed. Response content type reflects the requested options.format (application/json, text/srt, or text/vtt).
| id required | string <uuid> Example: 2f41bc1f-b608-4360-acd9-a26a296fea3c Job UUID returned when the transcription was created. |
| format | string Enum: "srt" "vtt" "json" Format of the transcription result, matching the requested output format. | ||||||
| duration | number Total duration of the media file in seconds. | ||||||
| language | string BCP 47 language code of the transcribed audio, as detected or specified. | ||||||
| download_url | string <uri> Pre-signed URL to download the full transcription file. Valid for a limited time. | ||||||
Array of objects (Segment) Time-aligned transcript segments. Present when | |||||||
Array
| |||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||
| |||||||
{- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| event required | string Enum: "translation.progress" "translation.completed" "translation.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "event": "translation.completed",
- "data": {
- "id": "9a1bc2f3-d405-4678-bcde-f12345678901",
- "type": "translation-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Usage is returned in data.attributes.result.usage once the job completes, but only when data.attributes.options.include_usage is true.
required | object JSON:API-style data envelope. | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "type": "translation-job",
- "attributes": {
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "webhook": {
- "headers": {
- "property1": "string",
- "property2": "string"
}
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { }
}
}
}{- "data": {
- "id": "9a1bc2f3-d405-4678-bcde-f12345678901",
- "type": "translation-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Use the id from the 202 response to POST /v1/translations.
| id required | string <uuid> Example: 9a1bc2f3-d405-4678-bcde-f12345678901 Job UUID returned when the translation was created. |
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "9a1bc2f3-d405-4678-bcde-f12345678901",
- "type": "translation-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Available once status is completed.
| id required | string <uuid> Example: 9a1bc2f3-d405-4678-bcde-f12345678901 Job UUID returned when the translation was created. |
| source_language | string BCP 47 language code of the source content, as detected or specified. | ||||||
| target_language | string BCP 47 language code of the translated output. | ||||||
| content | string Translated text content. Present when input | ||||||
| download_url | string <uri> Pre-signed URL to download the translated file. Valid for a limited time. Present when input | ||||||
| character_count | integer Number of characters in the source content. | ||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||
| |||||||
{- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| event required | string Enum: "video-analysis.progress" "video-analysis.completed" "video-analysis.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "event": "video-analysis.completed",
- "data": {
- "id": "3e7dc4b2-91f0-4a1e-8c2d-b56789012345",
- "type": "video-analysis-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Usage is returned in data.attributes.result.usage once the job completes, but only when data.attributes.options.include_usage is true.
required | object JSON:API-style data envelope. | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "type": "video-analysis-job",
- "attributes": {
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "webhook": {
- "headers": {
- "property1": "string",
- "property2": "string"
}
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { }
}
}
}{- "data": {
- "id": "3e7dc4b2-91f0-4a1e-8c2d-b56789012345",
- "type": "video-analysis-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Use the id from the 202 response to POST /v1/video-analyses.
| id required | string <uuid> Example: 3e7dc4b2-91f0-4a1e-8c2d-b56789012345 Job UUID returned when the video analysis was created. |
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "3e7dc4b2-91f0-4a1e-8c2d-b56789012345",
- "type": "video-analysis-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Available once status is completed.
| id required | string <uuid> Example: 3e7dc4b2-91f0-4a1e-8c2d-b56789012345 Job UUID returned when the video analysis was created. |
object (VideoMetadata) Technical properties of the processed video file. | |||||||||||||||||
| |||||||||||||||||
Array of objects (LabelDetection) Detected objects, scenes, and actions. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (SceneDetection) Scene and shot boundaries. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (FaceDetection) Faces detected and tracked across the video. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (TranscriptSegment) Speech-to-text segments with speaker identification. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (OcrText) On-screen text extracted from video frames. Present when | |||||||||||||||||
Array
| |||||||||||||||||
object (ContentModeration) Content moderation signals. Present when | |||||||||||||||||
| |||||||||||||||||
object (Sentiment) Overall tone and sentiment of the video. Present when | |||||||||||||||||
| |||||||||||||||||
Array of objects (Topic) Key topics and keywords extracted from the video. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (BrandDetection) Detected brand logos and visual trademarks. Present when | |||||||||||||||||
Array
| |||||||||||||||||
| summary | string Natural-language description of the video content. Present when | ||||||||||||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||||||||||||
| |||||||||||||||||
{- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}Operations related to submitting generic language model tasks without coupling to a specific AI vendor or model
| event required | string Enum: "llm-task.completed" "llm-task.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "event": "llm-task.completed",
- "data": {
- "id": "c3d2e1f0-a4b5-6789-cdef-012345678901",
- "type": "llm-task-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Usage is returned in data.attributes.result.usage once the job completes, but only when data.attributes.options.include_usage is true. Fields vary by provider (tokens, cost, or both).
required | object JSON:API-style data envelope. | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
{- "data": {
- "type": "llm-task-job",
- "attributes": {
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "webhook": {
- "headers": {
- "property1": "string",
- "property2": "string"
}
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { }
}
}
}{- "data": {
- "id": "c3d2e1f0-a4b5-6789-cdef-012345678901",
- "type": "llm-task-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Use the id from the 202 response to POST /v1/llm-tasks.
| id required | string <uuid> Example: c3d2e1f0-a4b5-6789-cdef-012345678901 Job UUID returned when the LLM task was created. |
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "c3d2e1f0-a4b5-6789-cdef-012345678901",
- "type": "llm-task-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}Available once status is completed.
| id required | string <uuid> Example: c3d2e1f0-a4b5-6789-cdef-012345678901 Job UUID returned when the LLM task was created. |
| content | string The model-generated text produced in response to the prompt. | ||||||
| finish_reason | string Enum: "completed" "max_tokens" Reason the model stopped generating. | ||||||
object (Usage) Token consumption details for this completion. Present only when | |||||||
| |||||||
{- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| name | string Human-readable name of the service. |
| description | string Brief description of what the service does. |
| endpoint | string Base API endpoint path for this service. |
| job_type | string Resource type discriminator used in the |
| status | string Enum: "active" "deprecated" "disabled" Current operational status of the service. |
{- "name": "Transcription",
- "description": "Converts audio or video content into structured, time-aligned text.",
- "endpoint": "/v1/transcriptions",
- "job_type": "transcription-job",
- "status": "active"
}| id | string Unique identifier for the service. Matches the URL path segment used for job creation. | ||||||||||
| type | string Value: "service" Resource type identifier. Always | ||||||||||
object (ServiceAttributes) Details of an AI Gateway service. | |||||||||||
| |||||||||||
{- "id": "transcriptions",
- "type": "service",
- "attributes": {
- "name": "Transcription",
- "description": "Converts audio or video content into structured, time-aligned text.",
- "endpoint": "/v1/transcriptions",
- "job_type": "transcription-job",
- "status": "active"
}
}Array of objects (Service) | |||||||
Array
| |||||||
{- "data": [
- {
- "id": "transcriptions",
- "type": "service",
- "attributes": {
- "name": "Transcription",
- "description": "Converts audio or video content into structured, time-aligned text.",
- "endpoint": "/v1/transcriptions",
- "job_type": "transcription-job",
- "status": "active"
}
}
]
}Current operational status of a provider or one of its capabilities. active: fully operational. degraded: operational with reduced performance or reliability. disabled: not available for new jobs.
"active"A specific transcription capability that may or may not be supported by a given provider. language_detection: automatically detect the source language without explicit specification. diarization: identify and label distinct speakers in the transcript. timestamps: produce time-aligned transcript segments.
"language_detection"| requests_per_minute | integer Maximum number of requests allowed per minute. |
| requests_per_day | integer Maximum number of requests allowed per day. |
| max_file_size_mb | integer Maximum input file size in megabytes. Applies to file-based capabilities. |
| max_duration_seconds | integer Maximum media duration in seconds. Applies to audio/video capabilities. |
{- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}| unit | string Enum: "per_minute" "per_character" "per_page" "per_request" "per_token" Billing unit for this capability. |
| amount | number <double> Cost per unit. |
| currency | string ISO 4217 currency code. |
{- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}| features | Array of strings (Feature) Items Enum: "language_detection" "diarization" "timestamps" Subset of transcription features this provider can handle. | ||||||||
| languages | Array of strings BCP 47 language codes supported for transcription input. Absence of this field means the provider accepts all languages. | ||||||||
object (ProviderLimits) Usage limits for a provider capability. | |||||||||
| |||||||||
object (ProviderPricing) Pricing information for a provider capability. | |||||||||
| |||||||||
| status | string (ProviderStatus) Enum: "active" "degraded" "disabled" Current operational status of a provider or one of its capabilities. | ||||||||
{- "features": [
- "language_detection",
- "diarization",
- "timestamps"
], - "languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}A specific translation capability that may or may not be supported by a given provider. language_detection: automatically detect the source language without explicit specification. formality: control the formality level (formal, informal) of the translated output.
"language_detection"| features | Array of strings (translation_Feature) Items Enum: "language_detection" "formality" Subset of translation features this provider can handle. | ||||||||
| source_languages | Array of strings BCP 47 language codes accepted as translation input. | ||||||||
| target_languages | Array of strings BCP 47 language codes that can be produced as translation output. | ||||||||
object (ProviderLimits) Usage limits for a provider capability. | |||||||||
| |||||||||
object (ProviderPricing) Pricing information for a provider capability. | |||||||||
| |||||||||
| status | string (ProviderStatus) Enum: "active" "degraded" "disabled" Current operational status of a provider or one of its capabilities. | ||||||||
{- "features": [
- "language_detection",
- "formality"
], - "source_languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it"
], - "target_languages": [
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}A specific analysis capability to apply to the video. labels: detect objects, scenes, and actions throughout the video. scenes: detect scene and shot boundaries. faces: detect and track faces across frames. speech_to_text: convert speech to text, with speaker identification. ocr: extract on-screen text from video frames. content_moderation: flag explicit or inappropriate content. sentiment: analyse the overall tone and emotional valence. topics: extract key topics and keywords from audio and visual content. brands: detect brand logos and visual trademarks. summary: generate a natural-language description of the video content.
"labels"| features | Array of strings (video-analysis_Feature) Items Enum: "labels" "scenes" "faces" "speech_to_text" "ocr" "content_moderation" "sentiment" "topics" "brands" "summary" Subset of video analysis features this provider can handle. | ||||||||
object (ProviderLimits) Usage limits for a provider capability. | |||||||||
| |||||||||
object (ProviderPricing) Pricing information for a provider capability. | |||||||||
| |||||||||
| status | string (ProviderStatus) Enum: "active" "degraded" "disabled" Current operational status of a provider or one of its capabilities. | ||||||||
{- "features": [
- "labels",
- "scenes",
- "faces",
- "speech_to_text",
- "ocr",
- "content_moderation",
- "sentiment",
- "topics",
- "brands",
- "summary"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}| models | Array of strings LLM model identifiers available through this provider. | ||||||||
object (ProviderLimits) Usage limits for a provider capability. | |||||||||
| |||||||||
object (ProviderPricing) Pricing information for a provider capability. | |||||||||
| |||||||||
| status | string (ProviderStatus) Enum: "active" "degraded" "disabled" Current operational status of a provider or one of its capabilities. | ||||||||
{- "models": [
- "gpt-4o",
- "gpt-4o-mini"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}| name | string Human-readable name of the provider. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| status | string (ProviderStatus) Enum: "active" "degraded" "disabled" Current operational status of a provider or one of its capabilities. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
object Capabilities offered by this provider per service. Only services supported by this provider appear in this object. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
{- "name": "TwelveLabs",
- "status": "active",
- "services": {
- "transcriptions": {
- "features": [
- "language_detection",
- "diarization",
- "timestamps"
], - "languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "translations": {
- "features": [
- "language_detection",
- "formality"
], - "source_languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it"
], - "target_languages": [
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "video-analyses": {
- "features": [
- "labels",
- "scenes",
- "faces",
- "speech_to_text",
- "ocr",
- "content_moderation",
- "sentiment",
- "topics",
- "brands",
- "summary"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "llm-tasks": {
- "models": [
- "gpt-4o",
- "gpt-4o-mini"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}
}
}Array of objects | |||||||
Array
| |||||||
{- "data": [
- {
- "id": "twelvelabs",
- "type": "provider",
- "attributes": {
- "name": "TwelveLabs",
- "status": "active",
- "services": {
- "transcriptions": {
- "features": [
- "language_detection",
- "diarization",
- "timestamps"
], - "languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "translations": {
- "features": [
- "language_detection",
- "formality"
], - "source_languages": [
- "en",
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it"
], - "target_languages": [
- "fr",
- "de",
- "es",
- "pt",
- "nl",
- "it",
- "ja",
- "zh"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "video-analyses": {
- "features": [
- "labels",
- "scenes",
- "faces",
- "speech_to_text",
- "ocr",
- "content_moderation",
- "sentiment",
- "topics",
- "brands",
- "summary"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}, - "llm-tasks": {
- "models": [
- "gpt-4o",
- "gpt-4o-mini"
], - "limits": {
- "requests_per_minute": 60,
- "requests_per_day": 10000,
- "max_file_size_mb": 500,
- "max_duration_seconds": 7200
}, - "pricing": {
- "unit": "per_minute",
- "amount": 0.024,
- "currency": "USD"
}, - "status": "active"
}
}
}
}
]
}Current lifecycle state of the job. pending: accepted, waiting to be picked up. processing: actively being worked on. completed: finished successfully. failed: encountered an unrecoverable error.
"processing"Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use GET /v1/providers to list available providers and their supported features.
"twelvelabs"| code | string Machine-readable error identifier. |
| message | string Human-readable explanation of the error. |
{- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}| provider_id required | string Identifier of the provider selected to process this job. |
| reason required | string Enum: "explicit_choice" "policy_rule" "failover" "default" Why this provider was chosen. |
| policy_id | string <uuid> ID of the policy that determined provider selection. Present only when |
| policy_version | integer >= 1 Version of the policy that was active at routing time. Present only when |
| policy_source | string Enum: "explicit_id" "tenant_default" "tenant_latest" "global_latest" "none" How the routing policy was resolved when |
| attempt required | integer >= 1 Which attempt this is (1-based). Values greater than 1 indicate a failover retry. |
{- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}| tenant | string Slug of the tenant that submitted the job. Derived from the authentication token. | ||||||||||||
| user_id | string Identifier of the user or client that submitted the job. Derived from the authentication token subject claim. | ||||||||||||
| provider | string (Provider) Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||||||
| status | string (JobStatus) Enum: "pending" "processing" "completed" "failed" Current lifecycle state of the job. | ||||||||||||
| progress | integer [ 0 .. 100 ] Processing progress as a percentage. Only meaningful while status is | ||||||||||||
object (Error) Details of a job failure. Only present when | |||||||||||||
| |||||||||||||
object (RoutingInfo) Snapshot of the routing decision made for this job. Present once the job leaves the | |||||||||||||
| |||||||||||||
| created_at | string <date-time> When the job was created. | ||||||||||||
| processed_at | string <date-time> When the job transitioned from | ||||||||||||
| completed_at | string <date-time> When the job reached a terminal state ( | ||||||||||||
{- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z"
}| total required | integer Total number of items matching the current filters. |
| page_count | integer Total number of pages for the current page size. |
| page | integer Current page number (1-based). |
| per_page | integer Number of items per page used for this response. |
{- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}| self required | string <uri> The current page. |
| first required | string <uri> The first page. |
| prev required | string or null <uri> The previous page. Null when on the first page. |
| next required | string or null <uri> The next page. Null when on the last page. |
| last required | string <uri> The last page. |
{
}required | Array of objects | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z"
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}object (Error) Details of a job failure. Only present when | |||||
| |||||
{- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}
}| enabled required | boolean Whether this service is available to the tenant. |
{- "enabled": true
}| enabled required | boolean Whether this provider is available to the tenant. |
{- "enabled": true
}object Per-service access configuration for this tenant. Keys are service IDs (e.g. | |||||||
| |||||||
object Per-provider access configuration for this tenant. Keys are provider IDs (e.g. | |||||||
| |||||||
{- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}| id | string Unique slug identifier for the tenant. | ||||||||||||||||||||
| type | string Value: "tenant" Resource type identifier. Always | ||||||||||||||||||||
object (TenantAttributes) Service and provider access configuration for a tenant. | |||||||||||||||||||||
| |||||||||||||||||||||
{- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}
}required | Array of objects (Tenant) | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "transcriptions": {
- "enabled": true
}, - "translations": {
- "enabled": false
}
}, - "providers": {
- "eden-ai": {
- "enabled": true
}, - "twelvelabs": {
- "enabled": false
}
}
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}required | object | ||||||||||||
| |||||||||||||
{- "data": {
- "id": "acme-corp",
- "type": "tenant",
- "attributes": {
- "services": {
- "translations": {
- "enabled": true
}
}, - "providers": {
- "twelvelabs": {
- "enabled": true
}
}
}
}
}| provider_id required | string Identifier of the provider. | ||||
| priority required | integer >= 1 Priority rank used for ordered selection. Lower value means higher priority. Must be unique within the policy. | ||||
| weight | integer >= 1 Relative weight for load distribution. Used when | ||||
object Optional eligibility conditions for this provider entry. All specified conditions must be satisfied for this provider to be considered. When absent, the provider is always eligible. | |||||
| |||||
{- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}| tenant | string or null Slug of the tenant this policy is scoped to. | ||||||||
| name | string Human-readable name of the policy. | ||||||||
| description | string Describes the intent or scope of this policy. | ||||||||
| version | integer >= 1 Monotonically increasing version number. Automatically incremented each time the policy is updated. Jobs record the | ||||||||
| routing_strategy | string Enum: "latency" "quality" "price" "round_robin" Primary criterion used to rank and select providers when multiple are eligible. | ||||||||
| services | Array of strings Service IDs this policy applies to (e.g. | ||||||||
Array of objects (PolicyProvider) Ordered list of providers eligible under this policy. The gateway evaluates providers in ascending | |||||||||
Array
| |||||||||
| created_at | string <date-time> When the policy was first created. | ||||||||
| updated_at | string <date-time> When the policy was last updated (i.e. when the current version was created). | ||||||||
{- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}| id | string <uuid> Unique identifier for the policy. | ||||||||||||||||||||||||||||
| type | string Value: "policy" Resource type identifier. Always | ||||||||||||||||||||||||||||
object (PolicyAttributes) Configuration and metadata for a routing policy. | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
{- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}required | Array of objects (Policy) | ||||||||||
Array
| |||||||||||
required | object (ListMeta) Metadata included in all JSON:API collection responses. | ||||||||||
| |||||||||||
required | object (PaginationLinks) JSON:API pagination links included in all collection responses. | ||||||||||
| |||||||||||
{- "data": [
- {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "Routes jobs to the cheapest available provider first, with fallback to quality-ranked alternatives.",
- "version": 3,
- "routing_strategy": "price",
- "services": [
- "transcriptions",
- "translations"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
], - "created_at": "2024-03-15T10:00:00Z",
- "updated_at": "2024-03-16T09:45:00Z"
}
}
], - "meta": {
- "total": 142,
- "page_count": 8,
- "page": 2,
- "per_page": 20
}, - "links": {
}
}| tenant | string Slug of the tenant to scope this policy to. When omitted, the caller's tenant is resolved from their JWT token claim. Only super-admins may specify this field; returns 403 otherwise. | ||||||||
| name required | string Human-readable name of the policy. | ||||||||
| description | string Describes the intent or scope of this policy. | ||||||||
| routing_strategy required | string Enum: "latency" "quality" "price" "round_robin" | ||||||||
| services | Array of strings Service IDs this policy applies to. Omit to apply to all services. | ||||||||
required | Array of objects (PolicyProvider) non-empty Ordered provider list. Must contain at least one entry. | ||||||||
Array (non-empty)
| |||||||||
{- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}required | object | ||||||||||||||||||
| |||||||||||||||||||
{- "data": {
- "type": "policy",
- "attributes": {
- "tenant": "acme-corp",
- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}| name required | string Human-readable name of the policy. | ||||||||
| description | string Describes the intent or scope of this policy. | ||||||||
| routing_strategy required | string Enum: "latency" "quality" "price" "round_robin" | ||||||||
| services | Array of strings Service IDs this policy applies to. Omit or pass empty array to apply to all services. | ||||||||
required | Array of objects (PolicyProvider) non-empty Full ordered provider list. Must contain at least one entry. | ||||||||
Array (non-empty)
| |||||||||
{- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}required | object | ||||||||||||||||||
| |||||||||||||||||||
{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "name": "Cost-optimised production",
- "description": "string",
- "routing_strategy": "price",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}| name | string New name for the policy. | ||||||||
| description | string New description for the policy. | ||||||||
| routing_strategy | string Enum: "latency" "quality" "price" "round_robin" | ||||||||
| services | Array of strings Replaces the full list of applicable services. | ||||||||
Array of objects (PolicyProvider) non-empty Replaces the full ordered provider list. Must contain at least one entry if provided. | |||||||||
Array (non-empty)
| |||||||||
{- "name": "string",
- "description": "string",
- "routing_strategy": "latency",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}required | object | ||||||||||||||||||
| |||||||||||||||||||
{- "data": {
- "id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "type": "policy",
- "attributes": {
- "name": "string",
- "description": "string",
- "routing_strategy": "latency",
- "services": [
- "string"
], - "providers": [
- {
- "provider_id": "eden-ai",
- "priority": 1,
- "weight": 3,
- "conditions": {
- "max_file_size_mb": 200,
- "languages": [
- "en",
- "fr",
- "de"
]
}
}
]
}
}
}| type required | string Enum: "video" "audio" Media kind. |
| url required | string <uri> HTTP or HTTPS URL of the source file (e.g. MP4, WAV, MP3). Must be publicly accessible or reachable on the deployment network (e.g. MinIO in local Docker Compose). |
| audio_track | integer Zero-based index of the audio track to transcribe when |
{- "type": "video",
- "audio_track": 0
}| language | string BCP 47 language code of the speech in the source media (e.g. |
| timestamps | boolean Default: true When |
| format | string Enum: "srt" "vtt" "json" How the transcript is returned in |
| diarization | boolean Default: false When |
| priority | string Default: "standard" Enum: "low" "standard" "high" Relative queue priority for the job. |
| include_usage | boolean Default: false When |
{- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}| url required | string <uri> The endpoint the gateway will POST event payloads to. | ||
object Optional HTTP headers included in every webhook request. Typically used for authentication. | |||
| |||
{- "headers": {
- "property1": "string",
- "property2": "string"
}
}UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit provider; returns 422 if both are specified.
"f4a3b2c1-d5e6-7890-abcd-ef1234567890"required | object (Input) Source audio or video file to transcribe. | ||||||||||||
| |||||||||||||
object (Options) Optional transcription settings (language, output format, timestamps, diarization, priority). See the Options schema for field-level details. | |||||||||||||
| |||||||||||||
object (Webhook) Optional callback URL. When set, the gateway POSTs JSON payloads on each lifecycle transition ( | |||||||||||||
| |||||||||||||
| provider | string (Provider) Backend provider id for this job (e.g. | ||||||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||||||
{- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}object Arbitrary key-value data provided by the client. Returned unchanged in all responses. | |||
| |||
object Internal metadata added by the gateway. Never exposed in webhook payloads. | |||
| |||
{- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}required | object JSON:API-style resource envelope. Must include | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
{- "data": {
- "type": "transcription-job",
- "attributes": {
- "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard"
},
}
}
}| start | number Start time of the segment in seconds. |
| end | number End time of the segment in seconds. |
| text | string Transcribed text for this time range. |
{- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}| input_tokens | integer Number of input tokens consumed, when reported by the provider. |
| output_tokens | integer Number of output tokens produced, when reported by the provider. |
| cost | number Provider-reported cost in provider billing units, when available. |
{- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}| format | string Enum: "srt" "vtt" "json" Format of the transcription result, matching the requested output format. | ||||||
| duration | number Total duration of the media file in seconds. | ||||||
| language | string BCP 47 language code of the transcribed audio, as detected or specified. | ||||||
| download_url | string <uri> Pre-signed URL to download the full transcription file. Valid for a limited time. | ||||||
Array of objects (Segment) Time-aligned transcript segments. Present when | |||||||
Array
| |||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||
| |||||||
{- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| tenant | string Slug of the tenant that submitted the job. Derived from the authentication token. | ||||||||||||||||||||||||||||
| user_id | string Identifier of the user or client that submitted the job. Derived from the authentication token subject claim. | ||||||||||||||||||||||||||||
| provider | string Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||||||||||||||||||||||
| status | string (JobStatus) Enum: "pending" "processing" "completed" "failed" Current lifecycle state of the job. | ||||||||||||||||||||||||||||
| progress | integer [ 0 .. 100 ] Processing progress as a percentage. Only meaningful while status is | ||||||||||||||||||||||||||||
object (Error) Details of a job failure. Only present when | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (RoutingInfo) Snapshot of the routing decision made for this job. Present once the job leaves the | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| created_at | string <date-time> When the job was created. | ||||||||||||||||||||||||||||
| processed_at | string <date-time> When the job transitioned from | ||||||||||||||||||||||||||||
| completed_at | string <date-time> When the job reached a terminal state ( | ||||||||||||||||||||||||||||
required | object (Input) Source audio or video file to transcribe. | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (Options) Optional transcription settings (language, output format, timestamps, diarization, priority). See the Options schema for field-level details. | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
object (Webhook) Optional callback URL. When set, the gateway POSTs JSON payloads on each lifecycle transition ( | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||||||||||||||||||||||
object (Result) Transcription output. Populated once status is | |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
{- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| type required | string Enum: "text" "document" Type of the source content. |
| content | string The text content to translate. Required when |
| url | string <uri> Publicly accessible URL of the document to translate. Required when |
| target_language required | string BCP 47 language code of the target language. |
{- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}| source_language | string BCP 47 language code of the source content. Use |
| formality | string Enum: "default" "formal" "informal" Formality level of the translated output. |
| priority | string Enum: "low" "standard" "high" Processing priority. Higher priority jobs are picked up sooner. |
| include_usage | boolean Default: false When |
{- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}required | object (translation_Input) Source content to translate. | ||||||||
| |||||||||
object (translation_Options) Optional settings controlling translation behaviour. | |||||||||
| |||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||
| |||||||||
| provider | string (Provider) Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||
{- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}required | object JSON:API-style data envelope. | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
{- "data": {
- "type": "translation-job",
- "attributes": {
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| source_language | string BCP 47 language code of the source content, as detected or specified. | ||||||
| target_language | string BCP 47 language code of the translated output. | ||||||
| content | string Translated text content. Present when input | ||||||
| download_url | string <uri> Pre-signed URL to download the translated file. Valid for a limited time. Present when input | ||||||
| character_count | integer Number of characters in the source content. | ||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||
| |||||||
{- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| tenant | string Slug of the tenant that submitted the job. Derived from the authentication token. | ||||||||||||||||||||
| user_id | string Identifier of the user or client that submitted the job. Derived from the authentication token subject claim. | ||||||||||||||||||||
| provider | string Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||||||||||||||
| status | string (JobStatus) Enum: "pending" "processing" "completed" "failed" Current lifecycle state of the job. | ||||||||||||||||||||
| progress | integer [ 0 .. 100 ] Processing progress as a percentage. Only meaningful while status is | ||||||||||||||||||||
object (Error) Details of a job failure. Only present when | |||||||||||||||||||||
| |||||||||||||||||||||
object (RoutingInfo) Snapshot of the routing decision made for this job. Present once the job leaves the | |||||||||||||||||||||
| |||||||||||||||||||||
| created_at | string <date-time> When the job was created. | ||||||||||||||||||||
| processed_at | string <date-time> When the job transitioned from | ||||||||||||||||||||
| completed_at | string <date-time> When the job reached a terminal state ( | ||||||||||||||||||||
required | object (translation_Input) Source content to translate. | ||||||||||||||||||||
| |||||||||||||||||||||
object (translation_Options) Optional settings controlling translation behaviour. | |||||||||||||||||||||
| |||||||||||||||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||||||||||||||
| |||||||||||||||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||||||||||||||
object (translation_Result) Translation output. Populated once status is | |||||||||||||||||||||
| |||||||||||||||||||||
{- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "9a1bc2f3-d405-4678-bcde-f12345678901",
- "type": "translation-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| url required | string <uri> Publicly accessible URL of the video file. |
| features required | Array of strings (video-analysis_Feature) non-empty Items Enum: "labels" "scenes" "faces" "speech_to_text" "ocr" "content_moderation" "sentiment" "topics" "brands" "summary" One or more analysis capabilities to apply. At least one feature must be specified. |
| audio_track | integer Index of the audio track to use for speech-related features. Defaults to the first track when omitted. |
{- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}| language | string BCP 47 language code for speech and text features. Use |
| confidence_threshold | number [ 0 .. 1 ] Minimum confidence score (0–1) for a detection to be included in the result. Defaults to 0.5. |
| priority | string Enum: "low" "standard" "high" Processing priority. Higher priority jobs are picked up sooner. |
| include_usage | boolean Default: false When |
{- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}required | object (video-analysis_Input) Source video and the list of analysis features to run. | ||||||||
| |||||||||
object (video-analysis_Options) Optional settings controlling analysis behaviour. | |||||||||
| |||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||
| |||||||||
| provider | string (Provider) Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||
{- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}required | object JSON:API-style data envelope. | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
{- "data": {
- "type": "video-analysis-job",
- "attributes": {
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| duration | number Total duration of the video in seconds. |
| width | integer Video width in pixels. |
| height | integer Video height in pixels. |
| frame_rate | number Frames per second of the video. |
| format | string Container format of the video file. |
| codec | string Video codec used for encoding. |
{- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}| start | number Start time of the occurrence in seconds. |
| end | number End time of the occurrence in seconds. |
| confidence | number [ 0 .. 1 ] Confidence score for this specific occurrence. |
{- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}| name | string Human-readable name of the detected label. | ||||||
| confidence | number [ 0 .. 1 ] Overall confidence score for this label across the video. | ||||||
Array of objects (TimedInstance) Time ranges in which this label was detected. | |||||||
Array
| |||||||
{- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}| index | integer Zero-based position of this scene in the video. |
| start | number Start time of the scene in seconds. |
| end | number End time of the scene in seconds. |
{- "index": 3,
- "start": 42,
- "end": 78.5
}| track_id | integer Integer identifier grouping all appearances of the same face within this video. | ||||||
| fingerprint | string Base64-encoded face embedding vector produced by the underlying model. When present, fingerprints from different videos can be compared for similarity to determine whether the same person appears across videos. Fingerprints are only comparable when produced by the same backend model — cross-model comparison is not meaningful. Not all backends populate this field. | ||||||
Array of objects (TimedInstance) Time ranges in which this face is visible. | |||||||
Array
| |||||||
{- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}| start | number Start time of the segment in seconds. |
| end | number End time of the segment in seconds. |
| text | string Transcribed speech for this time range. |
| speaker_id | integer Integer identifier grouping segments from the same speaker. |
| language | string BCP 47 language code detected for this segment. |
| confidence | number [ 0 .. 1 ] Confidence score for this transcript segment. |
{- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}| text | string The detected text string. | ||||||
| confidence | number [ 0 .. 1 ] Confidence score for this text detection. | ||||||
| language | string BCP 47 language code of the detected text. | ||||||
Array of objects (TimedInstance) Time ranges in which this text is visible on screen. | |||||||
Array
| |||||||
{- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}| label | string Enum: "explicit_nudity" "suggestive" "violence" "visually_disturbing" "hate_symbols" "tobacco" "alcohol" "gambling" Machine-readable label identifying the type of flagged content. | ||||||
| confidence | number [ 0 .. 1 ] Overall confidence score for this signal across the video. | ||||||
Array of objects (TimedInstance) Time ranges in which this signal was detected. | |||||||
Array
| |||||||
{- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}| is_safe | boolean Whether the video passed moderation at the requested confidence threshold. | ||||||
Array of objects (ModerationSignal) Individual moderation signals detected above the confidence threshold. | |||||||
Array
| |||||||
{- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}| start | number Start time of the segment in seconds. |
| end | number End time of the segment in seconds. |
| label | string Enum: "positive" "neutral" "negative" Sentiment label for this time range. |
| score | number [ -1 .. 1 ] Sentiment score for this time range. |
{- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}| overall | string Enum: "positive" "neutral" "negative" Dominant sentiment across the entire video. | ||||||||
| score | number [ -1 .. 1 ] Aggregate sentiment score from -1 (most negative) to 1 (most positive). | ||||||||
Array of objects (SentimentInstance) Sentiment variations across the video timeline. | |||||||||
Array
| |||||||||
{- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}| name | string Topic or keyword name. | ||||||
| confidence | number [ 0 .. 1 ] Confidence score for this topic. | ||||||
Array of objects (TimedInstance) Time ranges in which this topic is relevant. | |||||||
Array
| |||||||
{- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}| name | string Name of the detected brand. | ||||||
| confidence | number [ 0 .. 1 ] Overall confidence score for this brand detection. | ||||||
Array of objects (TimedInstance) Time ranges in which this brand is visible on screen. | |||||||
Array
| |||||||
{- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}object (VideoMetadata) Technical properties of the processed video file. | |||||||||||||||||
| |||||||||||||||||
Array of objects (LabelDetection) Detected objects, scenes, and actions. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (SceneDetection) Scene and shot boundaries. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (FaceDetection) Faces detected and tracked across the video. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (TranscriptSegment) Speech-to-text segments with speaker identification. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (OcrText) On-screen text extracted from video frames. Present when | |||||||||||||||||
Array
| |||||||||||||||||
object (ContentModeration) Content moderation signals. Present when | |||||||||||||||||
| |||||||||||||||||
object (Sentiment) Overall tone and sentiment of the video. Present when | |||||||||||||||||
| |||||||||||||||||
Array of objects (Topic) Key topics and keywords extracted from the video. Present when | |||||||||||||||||
Array
| |||||||||||||||||
Array of objects (BrandDetection) Detected brand logos and visual trademarks. Present when | |||||||||||||||||
Array
| |||||||||||||||||
| summary | string Natural-language description of the video content. Present when | ||||||||||||||||
object (Usage) Provider-reported resource consumption. Present only when | |||||||||||||||||
| |||||||||||||||||
{- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| tenant | string Slug of the tenant that submitted the job. Derived from the authentication token. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| user_id | string Identifier of the user or client that submitted the job. Derived from the authentication token subject claim. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| provider | string Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| status | string (JobStatus) Enum: "pending" "processing" "completed" "failed" Current lifecycle state of the job. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| progress | integer [ 0 .. 100 ] Processing progress as a percentage. Only meaningful while status is | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (Error) Details of a job failure. Only present when | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (RoutingInfo) Snapshot of the routing decision made for this job. Present once the job leaves the | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| created_at | string <date-time> When the job was created. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| processed_at | string <date-time> When the job transitioned from | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| completed_at | string <date-time> When the job reached a terminal state ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
required | object (video-analysis_Input) Source video and the list of analysis features to run. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (video-analysis_Options) Optional settings controlling analysis behaviour. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (video-analysis_Result) Video analysis output. Populated once status is | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
{- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "3e7dc4b2-91f0-4a1e-8c2d-b56789012345",
- "type": "video-analysis-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| type required | string Enum: "text" "document" Type of the source content supplied for the task. Value: "text" |
| text required | string Inline text content for the model to process. |
| prompt required | string Instruction describing the task the model should perform on the provided content. |
| system_prompt | string Optional system-level instruction that shapes the model's behaviour and tone throughout the task. Provided in addition to — and processed before — the user prompt. |
{- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}| creativity | string Enum: "precise" "balanced" "creative" Controls how exploratory or deterministic the model's output should be. |
| include_usage | boolean Default: false When |
{- "creativity": "balanced",
- "include_usage": true
}required | Text input (object) or Document input (object) (llm-task_Input) | ||||||||
One of
| |||||||||
object (llm-task_Options) Generation settings for the LLM task. | |||||||||
| |||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||
| |||||||||
| provider | string (Provider) Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||
{- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}required | object JSON:API-style data envelope. | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
{- "data": {
- "type": "llm-task-job",
- "attributes": {
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "provider": "twelvelabs",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890"
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| content | string The model-generated text produced in response to the prompt. | ||||||
| finish_reason | string Enum: "completed" "max_tokens" Reason the model stopped generating. | ||||||
object (Usage) Token consumption details for this completion. Present only when | |||||||
| |||||||
{- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}| tenant | string Slug of the tenant that submitted the job. Derived from the authentication token. | ||||||||||||||
| user_id | string Identifier of the user or client that submitted the job. Derived from the authentication token subject claim. | ||||||||||||||
| provider | string Identifier of the backend provider to use for processing this job. When omitted, the gateway selects the most appropriate provider automatically based on the requested features and availability. Use | ||||||||||||||
| status | string (JobStatus) Enum: "pending" "processing" "completed" "failed" Current lifecycle state of the job. | ||||||||||||||
| progress | integer [ 0 .. 100 ] Processing progress as a percentage. Only meaningful while status is | ||||||||||||||
object (Error) Details of a job failure. Only present when | |||||||||||||||
| |||||||||||||||
object (RoutingInfo) Snapshot of the routing decision made for this job. Present once the job leaves the | |||||||||||||||
| |||||||||||||||
| created_at | string <date-time> When the job was created. | ||||||||||||||
| processed_at | string <date-time> When the job transitioned from | ||||||||||||||
| completed_at | string <date-time> When the job reached a terminal state ( | ||||||||||||||
required | Text input (object) or Document input (object) (llm-task_Input) | ||||||||||||||
One of
| |||||||||||||||
object (llm-task_Options) Generation settings for the LLM task. | |||||||||||||||
| |||||||||||||||
object (Webhook) Destination configuration for job lifecycle notifications. | |||||||||||||||
| |||||||||||||||
| policy_id | string <uuid> (PolicyId) UUID of the routing policy to apply to this job. When omitted, the gateway uses the policy assigned to the caller's tenant, or the gateway-wide default. Cannot be combined with an explicit | ||||||||||||||
object (llm-task_Result) LLM task output. Populated once status is | |||||||||||||||
| |||||||||||||||
{- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}object Arbitrary key-value data provided by the client. Returned unchanged in all responses. | |||
| |||
object Internal metadata added by the gateway. Never exposed in webhook payloads. | |||
| |||
{- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "data": {
- "id": "c3d2e1f0-a4b5-6789-cdef-012345678901",
- "type": "llm-task-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| event required | string Enum: "transcription.progress" "transcription.completed" "transcription.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "event": "transcription.completed",
- "data": {
- "id": "2f41bc1f-b608-4360-acd9-a26a296fea3c",
- "type": "transcription-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "video",
- "audio_track": 0
}, - "options": {
- "language": "en",
- "timestamps": true,
- "format": "json",
- "diarization": false,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "format": "srt",
- "duration": 183.4,
- "language": "en",
- "segments": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's interview."
}
], - "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| event required | string Enum: "translation.progress" "translation.completed" "translation.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "event": "translation.completed",
- "data": {
- "id": "9a1bc2f3-d405-4678-bcde-f12345678901",
- "type": "translation-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "content": "Hello, how are you today?",
- "target_language": "fr"
}, - "options": {
- "source_language": "auto",
- "formality": "formal",
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "source_language": "en",
- "target_language": "fr",
- "content": "Bonjour, comment allez-vous aujourd'hui ?",
- "character_count": 1250,
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| event required | string Enum: "video-analysis.progress" "video-analysis.completed" "video-analysis.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "event": "video-analysis.completed",
- "data": {
- "id": "3e7dc4b2-91f0-4a1e-8c2d-b56789012345",
- "type": "video-analysis-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "features": [
- "labels",
- "scenes",
- "speech_to_text",
- "summary"
], - "audio_track": 0
}, - "options": {
- "language": "auto",
- "confidence_threshold": 0.7,
- "priority": "standard",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "video_metadata": {
- "duration": 3742.5,
- "width": 1920,
- "height": 1080,
- "frame_rate": 29.97,
- "format": "mp4",
- "codec": "h264"
}, - "labels": [
- {
- "name": "Conference room",
- "confidence": 0.94,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "scenes": [
- {
- "index": 3,
- "start": 42,
- "end": 78.5
}
], - "faces": [
- {
- "track_id": 1,
- "fingerprint": "7hGkL2mXqP9nRsT4vWzA...",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "speech_to_text": [
- {
- "start": 12.5,
- "end": 15.8,
- "text": "Welcome to today's panel discussion on AI safety.",
- "speaker_id": 0,
- "language": "en",
- "confidence": 0.97
}
], - "ocr": [
- {
- "text": "Q3 Revenue: $4.2M",
- "confidence": 0.91,
- "language": "en",
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "content_moderation": {
- "is_safe": true,
- "signals": [
- {
- "label": "violence",
- "confidence": 0.82,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
]
}, - "sentiment": {
- "overall": "positive",
- "score": 0.62,
- "instances": [
- {
- "start": 0,
- "end": 45,
- "label": "positive",
- "score": 0.71
}
]
}, - "topics": [
- {
- "name": "artificial intelligence",
- "confidence": 0.95,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "brands": [
- {
- "name": "Acme Corp",
- "confidence": 0.88,
- "instances": [
- {
- "start": 12.5,
- "end": 15.8,
- "confidence": 0.91
}
]
}
], - "summary": "A panel discussion on AI safety featuring three researchers. The conversation covers alignment challenges, regulatory proposals, and near-term risk mitigation strategies.\n",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}| event required | string Enum: "llm-task.completed" "llm-task.failed" The lifecycle event that triggered this notification. | ||||||||||||||||||||||||||||||||||||||||||||||
object JSON:API-style data envelope. | |||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||
{- "event": "llm-task.completed",
- "data": {
- "id": "c3d2e1f0-a4b5-6789-cdef-012345678901",
- "type": "llm-task-job",
- "attributes": {
- "tenant": "acme-corp",
- "user_id": "auth0|64a1b2c3d4e5f6789012345",
- "provider": "twelvelabs",
- "status": "processing",
- "progress": 72,
- "error": {
- "code": "AUDIO_UNREADABLE",
- "message": "Could not extract audio from the provided file."
}, - "routing": {
- "provider_id": "eden-ai",
- "reason": "policy_rule",
- "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "policy_version": 3,
- "policy_source": "tenant_default",
- "attempt": 1
}, - "created_at": "2024-03-15T10:00:00Z",
- "processed_at": "2024-03-15T10:00:05Z",
- "completed_at": "2024-03-15T10:02:30Z",
- "input": {
- "type": "text",
- "text": "Artificial intelligence is transforming industries at an unprecedented pace...",
- "prompt": "Summarise the following article in three bullet points.",
- "system_prompt": "You are a helpful assistant. Always respond in plain language suitable for a general audience."
}, - "options": {
- "creativity": "balanced",
- "include_usage": true
}, - "policy_id": "f4a3b2c1-d5e6-7890-abcd-ef1234567890",
- "result": {
- "content": "• AI adoption accelerated sharply in 2024.\n• Regulatory frameworks remain fragmented across jurisdictions.\n• Open-source models narrowed the gap with proprietary systems.",
- "finish_reason": "completed",
- "usage": {
- "input_tokens": 312,
- "output_tokens": 87,
- "cost": 0.00088
}
}
}, - "meta": {
- "client": { },
- "system": {
- "region": "eu-west-1",
- "worker_id": "wk_789"
}
}
}
}