Skip to main content
POST
/
v1
/
midjourney
/
generations
/
video
curl --request POST \
  --url https://api.apimart.ai/v1/midjourney/generations/video \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "prompt": "the cat slowly turns its head to the camera",
    "image_urls": [
      "https://example.com/cat.png"
    ],
    "motion": "high",
    "batch_size": 4
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KV52C0TEJSYZMCG0NCS4YWKK"
    }
  ]
}
curl --request POST \
  --url https://api.apimart.ai/v1/midjourney/generations/video \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "prompt": "the cat slowly turns its head to the camera",
    "image_urls": [
      "https://example.com/cat.png"
    ],
    "motion": "high",
    "batch_size": 4
  }'
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KV52C0TEJSYZMCG0NCS4YWKK"
    }
  ]
}
Image-to-video (i2v). Fixed FAST mode, no speed dimension; text-to-video (t2v) is not supported — a first frame is required. Duration is fixed at ~5 seconds.
ItemValue
actionVIDEO
Billingmidjourney@video / midjourney@video-720p, charged = unit price × batch_size
Requiredimage_urls (first frame) or task_id (reuse a SUCCESS imagine)

Parameters

FieldTypeRequiredDefaultNotes
promptstringNo(inherits parent)Video prompt; if empty, task_id is required
image_urlsstring[]First frame (1 image, ≤ 12 MiB); one of image_urls / task_id
task_idstringReuse a SUCCESS imagine; one of image_urls / task_id
indexintNoWhich of the imagine 4 tiles is the first frame (03, with task_id)
video_typestringNovid_1.1_i2v_480Resolution tier (see table); 720@video-720p billing
animate_modestringNomanualmanual / auto; auto requires task_id + index
motionstringNohighlow / high; motion amount, no billing impact
batch_sizeintNo1Must be 1 / 2 / 4, other values treated as 1; billed × N
end_urlstringNoEnd frame; when set, video_type auto-upgrades to start_end_*

Valid video_type values

ValueResolutionModeBilling
vid_1.1_i2v_480480pbasic i2v (default)midjourney@video
vid_1.1_i2v_720720pbasic i2vmidjourney@video-720p
vid_1.1_i2v_start_end_480480pstart/end frame (auto when end_url set)midjourney@video
vid_1.1_i2v_start_end_720720pstart/end frame (auto when end_url set)midjourney@video-720p
extend-style values are not accepted; only the video_type values listed above are supported.

Request examples

Simple i2v (own first frame, batch 4):
{
  "prompt": "the cat slowly turns its head to the camera",
  "image_urls": ["https://example.com/cat.png"],
  "motion": "high",
  "batch_size": 4
}
Start/end transition (end_url auto-upgrades to start_end):
{
  "prompt": "transition smoothly from sunrise to sunset",
  "image_urls": ["https://example.com/sunrise.jpg"],
  "end_url": "https://example.com/sunset.jpg",
  "video_type": "vid_1.1_i2v_720"
}

Response

Submission returns a task_id; poll GET /v1/tasks/{task_id}. On SUCCESS it includes video_url (the first) plus video_urls (length === batch_size; with batch=1 it still has 1 element):
{
  "id": "task_xxx",
  "status": "SUCCESS",
  "action": "VIDEO",
  "mode": "FAST",
  "video_url": "https://r2.example.com/video-0.mp4",
  "video_urls": [
    "https://r2.example.com/video-0.mp4",
    "https://r2.example.com/video-1.mp4"
  ]
}

Notes

  • Text-to-video (t2v) is not supported: you must pass image_urls or task_id, otherwise it returns 400; you cannot pass both.
  • Fixed FAST mode, no speed dimension (@video-fast / @video-turbo in the billing table are never hit).
  • batch_size is strictly validated as 1 / 2 / 4; batch=4 charges 4×, use batch=1 when budget-sensitive.
  • animate_mode=auto requires both task_id + index.
  • The first / end frame must each be ≤ 12 MiB.