Generate Endpoint - VicSee API Video & Image Generation
Create AI videos and images with VicSee's unified generate endpoint. Supports all models including Seedance 2.0, Veo 3.1, FLUX 2, and Nano Banana with async processing.
Create AI-generated content using a unified endpoint. Also available as agent tools via the VicSee MCP Server.
POST /api/v1/generateAll generation parameters must be nested inside an input object — only model and prompt are read from the top level of the request body. Top-level duration, resolution, image_urls, etc. are ignored (the request still succeeds, but billing falls back to the model's default tier). If you are building an agent, the simplest way to never get this wrong is the MCP Server: it takes flat parameters and builds the correct request for you.
Request
Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer token with your API key |
| Content-Type | Yes | Must be application/json |
Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| model | string | Yes | The model to use. Call GET /api/v1/models for available IDs. |
| prompt | string | Yes* | Text description of what to generate. *Optional for upscale and some image-to-video models. |
| input | object | Yes | Wrapper holding all generation parameters (see below). |
options is accepted as a legacy alias for input. New integrations should use input. Do not send both.
input parameters
Valid values are model-specific. Always check the GET /api/v1/models response for the exact options, requires, and accepts of the model you are calling.
| Parameter | Type | Applies to | Description |
|---|---|---|---|
| duration | number | video | Video length in seconds. Range is model-specific (e.g. Seedance 2 Mini: 4–15). |
| resolution | string | video / image | e.g. 480p, 720p, 1080p for video; 1K, 2K, 4K for image. |
| aspect_ratio | string | most | Output aspect ratio, e.g. 16:9, 9:16, 1:1. |
| image_urls | string[] | image-to-video, image-to-image | Source image(s). Each must be a public http(s) URL or a base64 data: URI. |
| reference_image_urls | string[] | reference-to-video | Up to 7 reference images. Refer to them in the prompt as @Image1, @Image2, … |
| reference_video_urls | string[] | reference-to-video | Up to 3 reference videos (total ≤ 15s). Public http(s) URLs only. |
| reference_audio_urls | string[] | reference-to-video | Up to 3 reference audio clips (total ≤ 15s). Public http(s) URLs only. |
| audio | boolean | video | Generate synchronized native audio (default true where supported). |
Example Request — text-to-video
curl -X POST https://vicsee.com/api/v1/generate \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-mini-text-to-video",
"prompt": "A timelapse of a flower blooming",
"input": {
"duration": 15,
"resolution": "480p",
"aspect_ratio": "16:9"
}
}'Example Request — reference-to-video
Pass references in reference_image_urls (and optionally reference_video_urls / reference_audio_urls), then refer to them positionally in the prompt.
curl -X POST https://vicsee.com/api/v1/generate \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-mini-reference-to-video",
"prompt": "@Image1 walking through a neon-lit street at night",
"input": {
"duration": 8,
"resolution": "720p",
"reference_image_urls": ["https://example.com/character.png"]
}
}'Response
{
"success": true,
"data": {
"id": "task_abc123",
"model": "seedance-2-mini-text-to-video",
"status": "processing",
"creditsUsed": 143,
"creditsRemaining": 1450,
"createdAt": "2026-06-25T10:30:00.000Z"
}
}Response Fields
| Field | Type | Description |
|---|---|---|
| id | string | Unique task ID for polling status |
| model | string | The model used |
| status | string | Task status: pending, processing, completed, or failed. The polling endpoint GET /api/v1/tasks/{id} reports completed on success and failed on failure. |
| creditsUsed | number | Credits consumed |
| creditsRemaining | number | Your remaining balance |
Next Steps
- Save the id from the response
- Poll GET /api/v1/tasks/id for status updates
- When status is
completed, download your content
Request Errors
These codes are returned by POST /api/v1/generate when a request is rejected before a task is created. They arrive as an HTTP 4xx/5xx response with { "success": false, "error": { "code": ... } }. They are distinct from a task that is created and later fails during processing — that case returns HTTP 200 with status: "failed" (poll GET /api/v1/tasks/{id} for details).
| Code | Description |
|---|---|
| MISSING_MODEL | No model specified |
| MISSING_PROMPT | No prompt provided |
| MISSING_IMAGE | Model requires image_urls (image-to-video / image-to-image) |
| MISSING_REFERENCE | Reference-to-video model requires at least one of reference_image_urls, reference_video_urls, reference_audio_urls |
| INVALID_INPUT_URL | A media input was not a public http(s) URL or base64 data: URI |
| INVALID_MODEL | Model does not exist |
| INSUFFICIENT_CREDITS | Not enough credits |
| RATE_LIMITED | Too many requests |