# 01Router — Gateway API reference > A single REST API for image, video, audio and chat models across fal.ai, Replicate, WaveSpeedAI, KIE AI, APIMart, EvoLink, AtlasCloud, Vercel AI Gateway and OpenRouter. Base URL: https://01router.com/api/v1 Documentation: https://01router.com/docs Index: https://01router.com/docs/llms.txt?locale=en Full reference: https://01router.com/docs/llms-full.txt?locale=en Generation, task history, cancellation and chat require a key. Catalogs, prompts and quotes are public. Keep the API key on your server. Responses are illustrative. IDs, usage, prices and results depend on the actual request. ## Model reference Source: https://01router.com/docs/models/veo-3.1 # Veo 3.1 API Google DeepMind Veo 3.1: cinematic 4–8 s video with native dialogue and sound effects. `POST /api/v1/generations` Bearer API key ## Input parameters | Field | Type | Required | Description | Constraints | | --- | --- | --- | --- | --- | | model | string | yes | Model slug from the catalog. Project keys may use a project-specific model slug. | options: [ "veo-3.1" ] | | input | object | yes | Model-specific input object. See the selected model reference for required fields, defaults and limits. | | | provider | string | no | Optional provider slug. Omit for automatic routing; project settings may pin the provider. | | | project | string | no | Optional project ID. Use its published model catalog and routing configuration. | | | callback_url | string | no | Public HTTPS URL, up to 1,000 characters. Receives the final generation object. Private network addresses are rejected. | | | input.prompt | string | yes | | | | input.negative_prompt | string | no | | | | input.image_url | string | no | Optional start image (image-to-video) | | | input.end_image_url | string | no | | | | input.duration | enum | no | | default: 8; options: [ 4, 6, 8 ] | | input.resolution | enum | no | | default: "720p"; options: [ "720p", "1080p", "4k" ] | | input.aspect_ratio | enum | no | | default: "16:9"; options: [ "16:9", "9:16" ] | | input.generate_audio | boolean | no | | default: true | | input.seed | integer | no | | min: 0; max: 2147483647 | ## Response fields | Field | Type | Required | Description | Constraints | | --- | --- | --- | --- | --- | | id | string | — | Generation ID returned by the create request. | | | object | "generation" | — | generation | | | model | string | — | Model slug from the catalog. Project keys may use a project-specific model slug. | | | type | video \| image \| audio \| chat | — | | | | provider | string | — | Optional provider slug. Omit for automatic routing; project settings may pin the provider. | | | status | string | — | queued / processing / succeeded / failed. Stop polling on succeeded or failed. | | | input | object | — | Model-specific input object. See the selected model reference for required fields, defaults and limits. | | | outputs | string[] | — | Result file URLs. Empty until available; download promptly because URLs may expire. | | | error | string \| null | — | Error message on failure; null otherwise. | | | credits | number | — | Credits charged for this generation; zero after a refund. | | | price_usd | number | — | Price of this generation in USD; zero after a refund. | | | created_at | string | — | Creation time in ISO 8601 format. | | | completed_at | string \| null | — | Completion time in ISO 8601 format, or null while running. | | ## cURL ```bash curl 'https://01router.com/api/v1/generations' \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "veo-3.1", "input": { "prompt": "A cinematic landscape at sunrise.", "duration": 8, "resolution": "720p", "aspect_ratio": "16:9", "generate_audio": true } }' ``` ## 200 · application/json ```json { "id": "gen_example", "object": "generation", "model": "veo-3.1", "type": "video", "provider": "01router", "status": "processing", "input": { "prompt": "A cinematic landscape at sunrise.", "duration": 8, "resolution": "720p", "aspect_ratio": "16:9", "generate_audio": true }, "outputs": [], "error": null, "credits": 100, "price_usd": 1, "created_at": "2026-10-25T08:00:00.000Z", "completed_at": null } ``` ## Usage notes - Poll at intervals of at least 3 seconds. A 504 from the synchronous image endpoint means the task may still be running: poll its error.id instead of submitting it again. ## Endpoints for this model - [POST /api/v1/generations](https://01router.com/docs/llms-full.txt?locale=en§ion=create): Create a generation - [GET /api/v1/generations/{id}](https://01router.com/docs/llms-full.txt?locale=en§ion=poll): Get the result - [POST /api/v1/generations/{id}/cancel](https://01router.com/docs/llms-full.txt?locale=en§ion=cancel): Cancel a task - [POST /api/v1/quote](https://01router.com/docs/llms-full.txt?locale=en§ion=quote): Quote - [GET /api/v1/models/{slug}](https://01router.com/docs/llms-full.txt?locale=en§ion=model-detail): Get one model For /generations and /quote, put these parameters inside input. For /images/generations, put them at the top level. Chat parameters go at the top level of /chat/completions. Select a provider to see its effective parameter limits. Automatic routing chooses a provider that supports your input. Examples include defaults and required inputs; replace example media URLs with accessible files. ### Provider parameter schemas ```json [ { "provider": "01router", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "end_image_url", "type": "image", "label": "Last frame" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p", "1080p", "4k" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": true }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] }, { "provider": "replicate", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "end_image_url", "type": "image", "label": "Last frame" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p", "1080p" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": true }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] }, { "provider": "wavespeed", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "end_image_url", "type": "image", "label": "Last frame" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p", "1080p", "4k" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": true }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] }, { "provider": "kie", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p", "1080p", "4k" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": true, "options": [ true ] }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] }, { "provider": "atlascloud", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "end_image_url", "type": "image", "label": "Last frame" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": false, "options": [ false ] }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] }, { "provider": "vercel", "params": [ { "name": "prompt", "type": "text", "label": "Prompt", "required": true }, { "name": "negative_prompt", "type": "string", "label": "Negative prompt" }, { "name": "image_url", "type": "image", "label": "First frame", "description": "Optional start image (image-to-video)" }, { "name": "duration", "type": "enum", "label": "Duration (s)", "options": [ 4, 6, 8 ], "default": 8 }, { "name": "resolution", "type": "enum", "label": "Resolution", "options": [ "720p", "1080p" ], "default": "720p" }, { "name": "aspect_ratio", "type": "enum", "label": "Aspect ratio", "options": [ "16:9", "9:16" ], "default": "16:9" }, { "name": "generate_audio", "type": "boolean", "label": "Generate audio", "default": true }, { "name": "seed", "type": "integer", "label": "Seed", "min": 0, "max": 2147483647 } ] } ] ``` ---