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/generate

All 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

HeaderRequiredDescription
AuthorizationYesBearer token with your API key
Content-TypeYesMust be application/json

Body Parameters

ParameterTypeRequiredDescription
modelstringYesThe model to use. Call GET /api/v1/models for available IDs.
promptstringYes*Text description of what to generate. *Optional for upscale and some image-to-video models.
inputobjectYesWrapper 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.

ParameterTypeApplies toDescription
durationnumbervideoVideo length in seconds. Range is model-specific (e.g. Seedance 2 Mini: 4–15).
resolutionstringvideo / imagee.g. 480p, 720p, 1080p for video; 1K, 2K, 4K for image.
aspect_ratiostringmostOutput aspect ratio, e.g. 16:9, 9:16, 1:1.
image_urlsstring[]image-to-video, image-to-imageSource image(s). Each must be a public http(s) URL or a base64 data: URI.
reference_image_urlsstring[]reference-to-videoUp to 7 reference images. Refer to them in the prompt as @Image1, @Image2, …
reference_video_urlsstring[]reference-to-videoUp to 3 reference videos (total ≤ 15s). Public http(s) URLs only.
reference_audio_urlsstring[]reference-to-videoUp to 3 reference audio clips (total ≤ 15s). Public http(s) URLs only.
audiobooleanvideoGenerate 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

FieldTypeDescription
idstringUnique task ID for polling status
modelstringThe model used
statusstringTask status: pending, processing, completed, or failed. The polling endpoint GET /api/v1/tasks/{id} reports completed on success and failed on failure.
creditsUsednumberCredits consumed
creditsRemainingnumberYour remaining balance

Next Steps

  1. Save the id from the response
  2. Poll GET /api/v1/tasks/id for status updates
  3. 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).

CodeDescription
MISSING_MODELNo model specified
MISSING_PROMPTNo prompt provided
MISSING_IMAGEModel requires image_urls (image-to-video / image-to-image)
MISSING_REFERENCEReference-to-video model requires at least one of reference_image_urls, reference_video_urls, reference_audio_urls
INVALID_INPUT_URLA media input was not a public http(s) URL or base64 data: URI
INVALID_MODELModel does not exist
INSUFFICIENT_CREDITSNot enough credits
RATE_LIMITEDToo many requests