APIAdvanced usersUpdated

Video Generation API

The Video Generation API creates asynchronous video jobs. A create request returns HTTP 202 with a job ID; use that ID to poll until the job reaches succeeded or failed, then download the completed MP4.

The examples use https://api.icodeeasy.cc as the base URL. Every endpoint call documented below requires your API key; a signed result-file URL returned after success is the only exception:

Authorization: Bearer <your API key>

Endpoints

PurposeMethod and route
Create a video jobPOST /v1/videos/generations
Get a jobGET /v1/videos/tasks/{id}
Download completed contentGET /v1/videos/tasks/{id}/content
Delete a completed or failed jobDELETE /v1/videos/tasks/{id}

The status_url and content_url in create and status responses are canonical paths relative to the base URL; use them directly. The read-only compatibility routes GET /v1/videos/generations/{id} and GET /v1/videos/generations/{id}/content also read the same job. These compatibility paths do not accept creation or deletion.

Five-minute quickstart

1. Create a job

curl -X POST https://api.icodeeasy.cc/v1/videos/generations \
  -H 'Authorization: Bearer <your API key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "doubao-seedance-2.5",
    "prompt": "a futuristic city street in the rain, slow forward camera movement, neon reflections on wet pavement",
    "resolution": "480p",
    "ratio": "9:16",
    "duration": 4,
    "generate_audio": true
  }'

Creation returns HTTP 202:

{
  "id": "vid_1785398400000000000",
  "task_id": "vid_1785398400000000000",
  "object": "video.generation.job",
  "status_url": "/v1/videos/tasks/vid_1785398400000000000",
  "content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
  "status": "queued",
  "model": "doubao-seedance-2.5",
  "created_at": "2026-07-30T08:00:00Z",
  "updated_at": "2026-07-30T08:00:00Z"
}

Use task_id as the recommended job identifier for polling, downloading, and deletion; id remains available with the same value for compatibility. A 202 response means the job was accepted, not that the video is already complete.

2. Poll the job

Copy the task_id from the create response into TASK_ID:

TASK_ID='vid_1785398400000000000'
curl "https://api.icodeeasy.cc/v1/videos/tasks/${TASK_ID}" \
  -H 'Authorization: Bearer <your API key>'

Poll about once every 5 seconds. Do not create another job while the current one is queued or running.

{
  "id": "vid_1785398400000000000",
  "object": "video.generation.job",
  "status_url": "/v1/videos/tasks/vid_1785398400000000000",
  "content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
  "status": "running",
  "model": "doubao-seedance-2.0",
  "created_at": "2026-07-30T08:00:00Z",
  "updated_at": "2026-07-30T08:00:20Z",
  "progress": 42
}

progress is best-effort and may be absent. Treat status, not progress, as authoritative.

3. Download the video

After status becomes succeeded, the response includes url and the final cost_rmb:

{
  "id": "vid_1785398400000000000",
  "object": "video.generation.job",
  "status_url": "/v1/videos/tasks/vid_1785398400000000000",
  "content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
  "status": "succeeded",
  "model": "doubao-seedance-2.0",
  "created_at": "2026-07-30T08:00:00Z",
  "updated_at": "2026-07-30T08:01:18Z",
  "progress": 100,
  "url": "/v1/videos/tasks/vid_1785398400000000000/content",
  "cost_rmb": 0.528
}

Download through the canonical authenticated content route and follow redirects:

TASK_ID='vid_1785398400000000000'
curl -L "https://api.icodeeasy.cc/v1/videos/tasks/${TASK_ID}/content" \
  -H 'Authorization: Bearer <your API key>' \
  -o result.mp4

The content route supports HTTP Range and common conditional download headers. Requesting content before success returns 409 video_not_ready.


Job lifecycle and safe retries

StatusMeaningClient action
queuedAccepted and waiting to startKeep polling the same job
runningThe video is being generatedKeep polling the same job
succeededTerminal success; content is readyDownload and store the result
failedTerminal failureRead error.code; create a new job only if you intentionally try again

Retry rules:

  • After receiving HTTP 202, keep polling the returned task_id. Repeating the create request may create another job.
  • Polling and download GET requests are safe to retry.
  • A polling HTTP 404 does not mean generation failed and must not trigger resubmission. Keep the original job ID, check the returned status_url or use GET /v1/videos/tasks/{id}, and authenticate with a valid API key belonging to the job owner. The video may already have succeeded and settled; check Usage Details. If the job still cannot be read, give support its ID and submission time.
  • If creation returns submission_unknown, do not submit another request. The job may already have been accepted; contact support with the request time, model, and prompt summary.
  • After a confirmed terminal failed job, create a new job only when you intentionally want to generate another video.

Webhooks and callback_url are not supported. Poll the job endpoint instead.


Create request reference

FieldTypeRequiredDescription
modelstringYesCanonical model ID. There is no default; missing or blank values return 400 invalid_request.
promptstringText required for standard modelsPut all text instructions here. For Motion Control it is optional when both reference assets are supplied.
contentarrayWhen using referencesReference-media list containing public HTTPS image/video URL items only.
resolutionstringNoOutput tier. The default and allowed values depend on the model. Not accepted by Motion Control.
ratiostringNoOutput aspect ratio. aspect_ratio is accepted as an alias. Not accepted by Motion Control.
durationintegerNoRequested seconds. The default and allowed values depend on the model. Not accepted by Motion Control.
generate_audiobooleanNoGenerate audio when supported. Defaults are listed in the model table. Not accepted by Motion Control.
motion_modestringMotion Control onlystd or pro; defaults to std.
character_orientationstringMotion Control onlyimage or video; defaults to image. Controls the reference-video duration limit.
keep_original_soundbooleanMotion Control onlyKeep reference-video sound; defaults to true.

Put all text instructions in prompt. Use content only for reference images and videos.

Reference-media list (content)

content is a list because one job may need a first and last frame, several unordered reference images, Seedance 2.5 reference videos, or one image plus one video for Motion Control. Put one HTTPS URL string directly in each item's image_url or video_url field.

[
  { "type": "image_url", "image_url": "https://cdn.example.com/first.png", "role": "first_frame" },
  { "type": "image_url", "image_url": "https://cdn.example.com/last.png", "role": "last_frame" }
]
  • Image types: image_url or input_image.
  • Video types: video_url or input_video.
  • Frame roles: first_frame and last_frame. For frame-guided generation, a last frame requires a first frame.
  • Seedance 2.5 reference-video role: reference_video; accompanying ordinary reference images use reference_image.
  • Motion roles: one reference_image and one reference_video.
  • Grok reference images have no role; reference_image is also accepted.
  • Reference audio is not currently supported.
  • Media must use a publicly reachable HTTPS URL that remains valid while the job reads it.
  • Put images in image_url and videos in video_url.

Complete first-frame and last-frame request

Host both images at publicly readable HTTPS URLs, then put the URLs directly in content:

curl -X POST https://api.icodeeasy.cc/v1/videos/generations \
  -H 'Authorization: Bearer <your API key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "doubao-seedance-2.0",
    "prompt": "the camera moves smoothly from the opening frame to the ending frame",
    "content": [
      {"type":"image_url","image_url":"https://cdn.example.com/first.png","role":"first_frame"},
      {"type":"image_url","image_url":"https://cdn.example.com/last.png","role":"last_frame"}
    ],
    "resolution": "480p",
    "ratio": "9:16",
    "duration": 4,
    "generate_audio": true
  }'

In frame-guided generation, you may send only the first frame. A last frame requires a first frame in the same request.


Model cookbook

Seedance: text, first frame, and last frame

Seedance 2.5, Seedance 2.0 Standard, Fast, Mini, and Seedance 1.5 Pro support text-to-video and first/last-frame generation. When using only images for guidance, reference images require explicit frame roles. Seedance 2.5 also supports the reference-video mode below.

{
  "model": "doubao-seedance-2.5",
  "prompt": "the camera circles a glass sculpture as morning light changes",
  "content": [
    { "type": "image_url", "image_url": "https://cdn.example.com/seedance-first.png", "role": "first_frame" },
    { "type": "image_url", "image_url": "https://cdn.example.com/seedance-last.png", "role": "last_frame" }
  ],
  "resolution": "720p",
  "ratio": "adaptive",
  "duration": 6,
  "generate_audio": true
}

Seedance 2.5 text-to-video defaults to 480p, 9:16, 4 seconds, and generated audio enabled. First-frame or first/last-frame mode without reference videos follows the first image's aspect ratio: set ratio to adaptive or omit it; the aspect_ratio alias follows the same rule. An explicit fixed ratio such as 16:9 returns 400 invalid_request instead of being silently rewritten. A portrait first frame produces portrait video. For 16:9 output, crop or expand the first image to 16:9, then use adaptive. Text-to-video and reference-video mode still accept fixed ratios such as 16:9.

Seedance 2.5: reference videos

Send the following JSON to POST https://api.icodeeasy.cc/v1/videos/generations with Authorization: Bearer <your API key> and Content-Type: application/json:

{
  "model": "doubao-seedance-2.5",
  "prompt": "Follow the motion in @Video1 to generate a smooth video",
  "content": [
    { "type": "video_url", "video_url": "https://cdn.example.com/reference.mp4", "role": "reference_video" }
  ],
  "resolution": "480p",
  "ratio": "9:16",
  "duration": 4,
  "generate_audio": true
}

Replace the example URL with a publicly readable HTTPS video URL. Pass a URL string directly in video_url; duration is the output duration. The service reads the reference-video duration, so no input-duration field is needed. Add multiple videos to content, each with reference_video; @Video1, @Video2, and so on in the prompt refer to videos in list order.

  • Input: up to 10 MP4/MOV videos, 2–30 seconds each, at most 30 seconds total, and at most 100 MiB per file.
  • Output: 4–30 seconds at 480p or 720p. You may set ratio and generate_audio; do not use Motion Control-specific options.
  • You may also supply up to 2 images with type: "image_url", an image_url string, and role: "reference_image". Images in this mode are ordinary references with no guaranteed first or last frame; frame roles are also treated as ordinary references.
  • Videos must use H.264/H.265 at 24–60 fps, with width and height each 300–6000 pixels, 409,600–8,295,044 total pixels (width × height), and a width/height ratio of 0.4–2.5. 720×720 meets these dimension limits.

After creation succeeds, poll the same job using the returned status_url or GET /v1/videos/tasks/{id}. Downloading works the same as for other models. Reference-video fees include reference input and output; see Billing below.

MiniMax H3: text, first frame, and last frame

MiniMax-H3 supports text-to-video and first/last-frame generation through the same public request. It accepts 768P or 2K, durations from 4 to 15 seconds, and the 21:9, 16:9, 4:3, 1:1, 3:4, and 9:16 ratios. Its defaults are 768P, 9:16, and 5 seconds. Do not send generate_audio: this public contract has no generated-audio request toggle for H3.

Kling: frame-guided generation

{
  "model": "kling-v3",
  "prompt": "a train enters the station through light fog",
  "content": [
    { "type": "image_url", "image_url": "https://cdn.example.com/kling-first.png", "role": "first_frame" },
    { "type": "image_url", "image_url": "https://cdn.example.com/kling-last.png", "role": "last_frame" }
  ],
  "resolution": "1080p",
  "ratio": "16:9",
  "duration": 5,
  "generate_audio": true
}

Important Kling differences:

  • kling-v2-6: a last frame requires 1080p; generated audio is available only at 1080p and cannot be combined with a last frame.
  • kling-3.0-turbo: first frame only; no generated audio.
  • kling-v3 and kling-v3-omni: first/last frames and generated audio are supported.
  • kling-v3-omni also accepts up to two roleless reference images, but do not mix roleless and frame-role images in one request.
  • kling-video-o1: first/last frames; no generated audio.

Grok: unordered reference images

Grok accepts up to seven reference-image URLs. Do not assign first_frame or last_frame roles.

{
  "model": "grok-imagine-1.5-video",
  "prompt": "clouds roll over a canyon while the camera rises",
  "content": [
    { "type": "image_url", "image_url": "https://cdn.example.com/grok-reference.png" }
  ],
  "resolution": "480p",
  "ratio": "16:9",
  "duration": 6
}

Grok defaults to 480p, 9:16, and 6 seconds. Generated audio is not supported.

Kling Motion Control

Provide one public HTTPS image and one public HTTPS MP4 video:

{
  "model": "kling-v3-motion-control",
  "prompt": "preserve the character identity and follow the reference motion",
  "content": [
    { "type": "image_url", "image_url": "https://cdn.example.com/character.png", "role": "reference_image" },
    { "type": "video_url", "video_url": "https://cdn.example.com/motion.mp4", "role": "reference_video" }
  ],
  "motion_mode": "std",
  "character_orientation": "image",
  "keep_original_sound": true
}
  • character_orientation: "image": reference video must be 3–10 seconds.
  • character_orientation: "video": reference video must be 3–30 seconds.
  • Do not send resolution, ratio, duration, or generate_audio with a Motion Control model.

Model capability table

Canonical model IDResolution / modeDurationRatioReferencesAudio default
doubao-seedance-2.5480p, 720p4–30 s16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveFirst + last frame; without reference videos, frame-guided output follows the first frame (ratio: adaptive or omitted); or up to 10 reference videos + 2 ordinary reference imagesOn
doubao-seedance-2.0480p, 720p, 1080p, 4K4–15 s16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptiveFirst + last frameOn
doubao-seedance-2.0-fast480p, 720p4–15 sSame as Seedance 2.0First + last frameOn
doubao-seedance-2.0-mini480p, 720p4–15 sSame as Seedance 2.0First + last frameOn
doubao-seedance-1-5-pro480p, 720p, 1080p4–12 s16:9, 9:16, 1:1, 4:3, 3:4, 21:9First + last frameOn
MiniMax-H3768P, 2K4–15 s21:9, 16:9, 4:3, 1:1, 3:4, 9:16First + last frameNo public generated-audio toggle
kling-v2-6720p, 1080p5 or 10 s16:9, 9:16, 1:1First + conditional last frameOff
kling-3.0-turbo720p, 1080p3–15 s16:9, 9:16, 1:1First frame onlyUnsupported
kling-v3720p, 1080p, 4K3–15 s16:9, 9:16, 1:1First + last frameOn
kling-v4720p, 1080p3–30 s16:9, 9:16, 1:1, 21:98 images / 5 videos, edit / extendOn
kling-v3-omni720p, 1080p, 4K3–15 s16:9, 9:16, 1:1First + last or up to 2 roleless imagesOn
kling-video-o1720p, 1080p5 or 10 s16:9, 9:16, 1:1First + last frameUnsupported
kling-v2-6-motion-controlstd, proReference video—1 image + 1 videoOriginal sound on
kling-v3-motion-controlstd, proReference video—1 image + 1 videoOriginal sound on
grok-imagine-1.5-video480p, 720p6–30 s16:9, 9:16, 1:1, 3:2, 2:3Up to 7 roleless imagesUnsupported

For standard models, omitted option values use each model's defaults shown above. model itself is always required. The service validates combinations before starting the job.


Response and download behavior

All job responses use this shape:

FieldMeaning
idOwner-scoped job ID used for polling, content, deletion, and support
objectAlways video.generation.job
statusqueued, running, succeeded, or failed
modelCanonical model ID after alias normalization
created_at, updated_atUTC RFC 3339 timestamps
progressBest-effort generation progress, omitted when unavailable
status_url, content_urlCanonical status and download paths relative to the base URL; content returns 409 video_not_ready before success
urlPresent only after success; may be a relay content path or a signed relay file path
cost_rmbFinal task charge, present after successful settlement
error.codeStable failure category on a failed job

Prefer GET /v1/videos/tasks/{id}/content instead of storing assumptions about the returned URL shape. Use -L or enable redirects in your HTTP client. The authenticated content endpoint can return 200, 206 Partial Content, or a redirect to relay-managed storage.

A signed relay file URL can be opened without an API key; possession of the complete URL grants access to that video. Do not expose it in public logs, pages, or client-side analytics.

Deleting a safe terminal job returns HTTP 204 and may also remove its relay-managed video file. Download and store any result you need before deleting the job. Deletion is rejected with 409 video_delete_unsafe while a job is running or billing is unsettled. Deleting a local job record does not cancel generation that has already started.


Error handling

HTTP errors use:

{
  "error": {
    "type": "invalid_request",
    "message": "model is not supported"
  }
}
HTTPError typeMeaning / action
400invalid_requestInvalid model, field, media URL, role, duration, ratio, or model combination; fix the request
401unauthorizedAPI key is missing, invalid, or disabled
402insufficient_balanceBalance cannot cover the requested job; generation is not started
404not_foundThe job does not exist or belongs to another account
409video_not_readyContent was requested before terminal success
409video_delete_unsafeThe job is not safe to delete yet
413request_too_largeJSON create body exceeds its limit
502upstream_errorVideo generation or result download failed
503video_service_unavailable, upstream_quota_exceeded, video_price_unavailableVideo service capacity or current public pricing is temporarily unavailable
503submission_unknownJob acceptance is uncertain; do not submit a duplicate

A failed job response may look like:

{
  "id": "vid_1785398400000000000",
  "object": "video.generation.job",
  "status_url": "/v1/videos/tasks/vid_1785398400000000000",
  "content_url": "/v1/videos/tasks/vid_1785398400000000000/content",
  "status": "failed",
  "model": "doubao-seedance-2.0",
  "error": { "code": "generation_failed" }
}

Billing

Video generation uses account balance, not monthly quota.

ordinary video task price = displayed RMB price per second for the selected model/specification × billable seconds

Check the current per-second prices on the Pricing page. Resolution, generated audio, or Motion Control mode may select a different displayed per-second row. For standard models without reference videos, billable seconds are the requested duration; for Motion Control, they are the detected reference-video duration rounded up to a whole second. Seedance 2.5 reference videos use the reservation and actual-charge rules below, rather than output seconds alone.

Creation reserves the quoted amount and deducts it from the available balance, so the balance decreases while generation is still running. Insufficient balance returns 402 before generation starts. Success settles the final charge, settles any difference from the reservation, and writes the Usage Details entry; cost_rmb is the final charge. A definitely failed job refunds its entire reservation. The balance difference between adjacent request entries can include video reservations or refunds and is not necessarily the charge for that request.

Seedance 2.5 reference-video billing

Reference-video mode reserves an estimate using “total reference-video duration rounded up to a whole second + output seconds” and the reference-video estimate rate on the Pricing page. For example, a 2-second reference video generating 4 seconds of output reserves an estimate for 6 seconds; this is not a guaranteed final price.

The final charge follows actual usage: any amount below the reservation is refunded, and any amount above it is additionally deducted. cost_rmb and Usage Details show the final charge. A confirmed failure refunds the entire reservation. If progress stays at 99%, the job may be waiting for billing settlement; keep polling the original job and do not submit again.

Kling 4

kling-v4: 720p / 1080p, integer durations 3–30 seconds (default 5), audio always on; generate_audio: false is rejected locally. Only this model accepts omni_reference_task_type: auto / reference / edit / extend. Ratios: 16:9 / 9:16 / 1:1 / 21:9, plus auto in reference mode; omit ratio for extend. Supports first/last frames, up to 8 reference images and 5 videos; each video is 3–30 seconds, 30 seconds total. Edit/extend accept one video. If edit omits duration, it follows the input video duration rounded up; other modes default to 5 seconds. All media, including first/last frames, use owned asset_id references: first upload multipart kind=image or kind=video and file to POST /v1/videos/assets, then use the returned id in the generation request. Raw image/video URLs, audio references, and advanced intermediate frames are unavailable. Extend may supply a target last frame without a first frame.

Reference prices: ordinary 720p ¥1.0486/s, 1080p ¥1.5729/s; video input 720p ¥0.62916/billable second, 1080p ¥0.94374/billable second. Reference/edit with video bills output seconds + max(output seconds, rounded-up total input seconds); extend bills only added seconds.

{
  "model": "kling-v4",
  "prompt": "Preserve the subject and change the setting",
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "generate_audio": true,
  "omni_reference_task_type": "edit",
  "content": [
    {
      "type": "video_url",
      "role": "reference_video",
      "asset_id": "vasset_uploaded_video"
    }
  ]
}

Expanded video models

Upload every new-model input as your own asset_id. Site limits: images up to 10 MB each, videos at least 3 seconds and up to 100 MiB. Vidu Q4 audio references and Omni Ext video inputs are unavailable in this release. Output audio controls are separate from audio references.

FLUX3 Video

FLUX3 supports text, image and single-video editing, 5–20 seconds (default 5); hd / fhd, ratios auto,21:9,2:1,16:9,4:3,1:1,3:4,9:16. Up to 10 ordered images: first → intermediate reference_image → last; preserve duplicates and order. One video, 3–30 seconds. draft: true is HD only. Modes: auto/t2v/i2v/v2v/draft_enhance. Output audio defaults on and may be disabled at the same reference price.

Use “Generate full / Enhance” on a completed site FLUX3 draft in history. Send only model, generation_mode: draft_enhance, site-owned source_task_id, and resolution; no new prompt, media, duration or audio. The source must be your own same-model successful settled draft. Draft fees are not credited.

Vidu

Vidu Q4: one first frame (optional prompt) or 1–15 references (required prompt, up to 20000 characters), no text-only or last frame. One reference_image explicitly selects reference mode; do not mix it with a first frame. 3–16 seconds; 540p/720p/1080p/2K/4K. Q3 requires 1–7 references and a prompt up to 5000 characters, 3–16 seconds; Mix allows 1–16 seconds and only 720p/1080p. Pro/Turbo support text-only, one first frame or first+last frames, 1–16 seconds, 540p/720p/1080p. Text-only requires a prompt up to 2000 characters; image prompts are optional. All five default to 720p and 5 seconds. Reference and text modes accept 1:1/9:16/16:9/3:4/4:3; first-frame generation follows its image and omits ratio. Q3/Mix have no audio switch; Q4/Pro/Turbo default audio on and allow off at the same reference price.

Gemini Omni

Gemini Omni main gemini-omni-1.1-flash: 360p/720p/1080p/4k, 16:9/9:16, up to 10 images with first/last or ordinary references, and one 3–10 second video. Preview: 720p only, up to 16 ordinary references, one 3–24 second video; no first/last-frame mode, omit ratio for video input. Output length follows the prompt (3–10 seconds): never send duration, generate_audio, seed, negative prompt or count. Output reference prices exclude possible media/context usage and are not a cost cap; settlement follows actual usage.

Use “Continue generation” on your own successful settled same-model main/Preview job in site history. A new prompt is required; source_task_id and video input are mutually exclusive. Never enter supplier task IDs. Modes: auto/t2v/i2v/reference/edit/extend.

Omni Ext: 360p/720p/1080p/4k, 16:9/9:16, 4/6/8/10 seconds (default 6), priced per clip. Text-only, one first frame, or exactly 1/3 reference images; no two-frame first/last, video input or source continuation. Prompt required; modes auto/t2v/frame/reference; omit audio parameters.

FLUX3 and Omni main/Preview show reference output prices; actual task charges take priority and media/context may add usage. Funds are reserved, then differences are refunded or additionally charged. Progress at 99% may await settlement: keep polling the original task, do not resubmit.

Final RMB reference price (per second)

ModelResolutionRMB
flux-3-videodraft¥0.35952
flux-3-videohd¥1.01864
flux-3-videofhd¥1.73768
flux-3-videov2v-draft¥0.71904
flux-3-videov2v-hd¥2.45672
flux-3-videov2v-fhd¥3.17576
viduq4-preview540p¥0.335552
viduq4-preview720p¥0.683088
viduq4-preview1080p¥0.766976
viduq4-preview2K¥1.216376
viduq4-preview4K¥2.492672
viduq3540p¥0.2996
viduq3720p¥0.5992
viduq31080p¥0.749
viduq3-mix720p¥0.749
viduq3-mix1080p¥0.8988
viduq3-pro540p¥0.41944
viduq3-pro720p¥0.8988
viduq3-pro1080p¥0.95872
viduq3-turbo540p¥0.23968
viduq3-turbo720p¥0.35952
viduq3-turbo1080p¥0.41944
gemini-omni-1.1-flash360p¥0.221704
gemini-omni-1.1-flash720p¥0.65912
gemini-omni-1.1-flash1080p¥0.98868
gemini-omni-1.1-flash4k¥1.97736
gemini-omni-flash-preview720p¥0.65912

Omni Ext final RMB reference prices (per clip)

Resolution4 seconds6 seconds8 seconds10 seconds
360p¥1.1235¥1.31075¥1.498¥1.68525
720p¥1.8725¥2.247¥2.6215¥2.996
1080p¥1.8725¥2.247¥2.6215¥2.996
4k¥5.6175¥5.992¥6.3665¥6.741