Legacy fixed-duration recipes
veo-3.1 is the legacy 8-second text recipe (new lower-priced recipes are below): duration: 8 in its currently available 720p formats: portrait ratio: "9:16", size: "720x1280" or landscape ratio: "16:9", size: "1280x720", text only and no references, 0.5 credit or $1.25 of legacy balance. One attempt; no automatic service retry. This is not Seedance or a 30-second option. Generated details and audio can vary; check exact availability below.
Separate 5-second portrait choices: seedance-2.0-native-5s costs 1 credit or $2.50 of legacy balance; seedance-2.5-native-5s costs 1.5 credits or $3.75. Send duration: 5, ratio: "9:16", size: "720x1280", text only and no references. Each uses one attempt. Native identifies the model family, not a quality guarantee; these are separate from the 30-second Seedance 2.5 option. Check the exact model below before submitting.
Separate short Fast choices: seedance-2.0-fast-5s requests duration: 5; seedance-2.0-fast-10s requests duration: 10. Each uses 0.5 credit or $1.25 of legacy balance in the formats returned by that model’s availability response: portrait ratio: "9:16", size: "720x1280" or landscape ratio: "16:9", size: "1280x720", text only, no references and one attempt. Check the exact model below. The existing 15-second Seedance 2.0 request keeps its original settings.
New Seedvis-powered tools: Veo 3.1 offers 4, 6 or 8 seconds, native 720p or supplier-upscaled 1080p, and text, start-frame, start/end-frame or ingredient-image modes. Omni Flash supports text, images and a private reference video. These recipes cost 0.25 credit (or $0.63 of legacy balance), use one attempt and have no automatic generation retry. Check GET /api/availability/catalog and use the exact recipe ID and format returned by the current catalog.
Omni returns a short clip with provider-selected output duration; a reference video of up to 3 minutes does not promise a 3-minute result. Use an owned H.264/H.265 MP4 up to 100 MiB. Upload it with POST /api/video-references, Content-Type: video/mp4 and its lowercase SHA-256 in X-Content-Sha256. Pass the returned video_reference_id when creating an omni-flash-edit request. The source is privately validated before any supplier submission. Up to three images may accompany it.
For image modes, upload PNGs through POST /api/references and pass owned reference_ids: one for a start frame, two in start/end order, or one to three ingredients. No customer-supplied reference URL is accepted. Uploads expire after 24 hours; provider retention may differ. End-frame-only generation is not advertised by the current API contract.
Check a model before you build
No account or API key is needed for this live admission check. Check before starting a new request or buying credits.
Enable JavaScript to check current availability here.
Availability can change and does not guarantee completion, delivery time, output quality or exact dimensions. Keep an existing job and its request ID unchanged.
Open Studio for this model → Create an account or sign in there to manage your API key, credits and private jobs.
Getting started
Base URL: https://seedancecheap.com. Send your key in Authorization: Bearer sdc_.... Keep it on your server. A key is shown once when created.
Requests and responses use JSON except reference-image uploads, image views, and video downloads. There is no cross-origin browser access for API keys.
Reference images
Upload a private PNG with POST /api/references, an API key, and Content-Type: image/png. The studio also accepts JPEG and WebP and converts them to PNG in your browser. You can prepare images before buying credits; uploading uses no video credit or trial entitlement. You can store twelve active images and select up to four for a video. Delete an unused image to make room immediately. There is no daily upload limit or upload cooldown. List active images with GET /api/references; privately view or delete one with GET or DELETE /api/references/{id}. Add up to four ordered IDs to a generation as reference_ids, then mention @Image1, @Image2 in the prompt. Images expire after 24 hours. Each must be at most 2 MB and 300–2048 pixels per side. References stay private in your account and are sent to the video engine for rendering. Supported video references are clothing shown on its own, objects, products, scenery and locations. Face/person reference images are not supported; clothing pictures must not include people or faces. Reference acceptance and generated actions can vary. Video references are not currently available through this provider; generation requests with video input fields are rejected before charge.
Check GET /api/model-availability?model=MODEL_ID before creating a video. Submit an exact size and ratio pair from available_formats. The ratio names the supplier framing preset; the displayed size is the checked native output and can have slightly different proportions. Each model has its own available formats.
Create a video
The separate "model":"seedance-2.0-alt-15s","duration":15 option uses an alternative route for 1 credit or $2.50 of legacy balance. It is text only, portrait 720x1280, with one attempt. Check GET /api/availability?model=seedance-2.0-alt-15s. The existing half-credit Seedance 2.0 option keeps its original price; this alternative makes no higher-quality or delivery-time promise.
The separate "model":"seedance-2.5-pro-4s","duration":4 option costs 1 credit or $2.50 of legacy balance. It is text only, portrait 720x1280, with one attempt and no automatic service retries. Check GET /api/availability?model=seedance-2.5-pro-4s before submitting. It does not change an existing 15-second or 30-second request.
POST /v1/videos/generations creates a background job. Choose "model":"seedance-2.0","duration":15 for 0.5 credit or $1.25 of legacy balance, or "model":"seedance-2.5","duration":30 for 1 credit or $2.50 of legacy balance. The 15-second option is text only; use portrait "ratio":"9:16","size":"720x1280" or widescreen "ratio":"16:9","size":"1280x720" only when that model’s current availability includes the exact size. Use "ratio":"16:9","size":"1280x720" or "ratio":"9:16","size":"720x1280" only when the current GET /api/availability?model=seedance-2.5 response includes that size. Small bars may be present. Square requests remain temporarily unavailable. Check GET /api/availability?model=seedance-2.0 before a new 15-second request; no charge is reserved when admission is unavailable. Existing video credits, including support credits, remain usable. Omit free_trial or set it to false. New "free_trial":true requests return HTTP 403 while free trials are paused; no job or funding reservation is created. Trial eligibility is retained without a new daily limit or retry cooldown. Already submitted originals keep their exact model, duration, format, renderer, input and funding; the pause never resends or switches them. Funding restoration returns the original reserved amount once. Existing Seedance 2.0 originals retain their 15-second, half-credit terms.
curl https://seedancecheap.com/v1/videos/generations \
-H "Authorization: Bearer sdc_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0",
"duration": 15,
"prompt": "A glass city at dawn, slow camera push...",
"ratio": "9:16",
"size": "720x1280",
"request_id": "scene_001_v1",
"free_trial": false
}'request_id is required and unique per account. Save the request ID before submitting. If your connection drops, retry with the same ID and unchanged input; this returns the original job without a second charge. A changed model, duration, prompt, ratio, size, or ordered reference list needs a new ID. Prompts and selected images are sent unchanged to the video engine. Its content decisions apply; this platform does not run a separate content classifier. Format, reference, account and funding checks happen before reservation. If generation admission is unavailable, the API returns HTTP 503 without a charge; retry the same request ID later.
| Ratio | Requested size |
|---|---|
| 16:9 | 1280×720 |
| 9:16 | 720×1280 |
| 1:1 · temporarily paused | 1024×1024 |
Use the exact size value with an x, such as 1280x720. Omit it for the first size listed for that ratio. Widescreen 1920×1080 and vertical 1080×1920 requests are temporarily paused: independently checked original outputs were 1280×720 and 720×1280 despite the submitted 1080p settings. 4:3 at 1440×1080 is also paused after a checked original returned 1112×834; 3:4 at 1080×1440 is paused after a checked original returned 834×1112. New requests for any paused size return HTTP 422 before reserving a credit or free attempt; existing receipts keep their original inputs. Other sizes are requested settings and may differ from encoded output. Report a material mismatch. New requests use the exact selected model and duration: standard Seedance 2.0 at 15 seconds / 0.5 credit, Seedance 2.0 Alternative at 15 seconds / 1 credit, Seedance 2.5 Pro at 4 seconds / 1 credit, or Seedance 2.5 at 30 seconds / 1 credit, when that model is available. Check live admission before submitting: available formats may be temporarily limited. The response lists available_sizes and a format notice when needed. Existing requests retain their exact model, duration and format.
Automatic service retries
The new 15-second Seedance 2.0 option uses one attempt; a confirmed failure restores its original half-credit or balance charge. Extra automatic service attempts apply only to eligible Seedance 2.5 routes. New requests default to "auto_retry":true. Confirmed service failures can receive up to five extra attempts, after at least 5, 15, 30, 30 and 30 minutes, within a twelve-hour total window. Your exact prompt, selected images and settings stay unchanged. The original funding remains reserved; there is no second charge or free-trial attempt. Final failure restores it. Prompt/reference refusals, uncertain submissions, failed status checks and local connection timeouts are not automatically regenerated. A confirmed final service failure on the current text-only route, including its recorded terminal timeout, can receive the bounded unchanged retries above. An accepted request is always followed until its original final result is known; it is never duplicated while still running or uncertain.
Pass "auto_retry":false to opt out. For an active owned job, use PATCH /v1/videos/{id}/auto-retry with {"auto_retry":false}. A waiting retry is cancelled and funding restored; an already started attempt may finish. Responses include retry_pending, service_retry_count, next_retry_at and a safe service_notice. Replaying a saved request does not change its retry preference. Historical jobs retain their original preference.
Check status
GET /v1/videos/{id} returns the job status. If the create response was lost, use GET /v1/videos/by-request/{request_id} to recover its ID. GET /v1/videos lists your most recent 50 jobs. Jobs keep running when your device disconnects. The response includes created_at, submitted_at, and updated_at timestamps so API clients can show elapsed time and the last status update. Some generations take around 50 minutes; delivery may take up to 90 minutes after provider submission.
{
"id": "vid_...",
"status": "ready",
"price_cents": 250,
"duration": 30,
"expires_at": 1790676000,
"download_url": "/v1/videos/vid_.../content"
}Statuses include queued, processing, copying, ready, failed, uncertain, and expired. If a provider receipt is unavailable, the request stays uncertain and is refunded after the delivery deadline. We never silently submit a second provider task. Failed requests restore the reserved charge automatically. Known supplier tasks may continue to be checked after a timeout refund, without charging again.
Download the file
GET /v1/videos/{id}/content checks ownership and streams your MP4 from private storage. The link is usable only while signed in or with your API key, and only until 48 hours after delivery. Range requests are supported. Save the file before expires_at; the private copy is removed after 48 hours.
curl -L "https://seedancecheap.com/v1/videos/vid_YOUR_ID/content" \
-H "Authorization: Bearer sdc_YOUR_KEY" \
-o video.mp4For a visibly unusable result, POST /v1/videos/{id}/report with JSON such as {"reason":"Major visual artifact makes this unusable"}. The job returns report_status as open, credited, or resolved. A credited paid report restores the original generation charge once. An approved free trial report restores the trial entitlement.
Errors & limits
402 means no video credits and insufficient balance. 403 on a new free-trial request means trials are temporarily paused, or the account is ineligible. Read the response before submitting a new request. Existing video credits and balance remain usable. 429 means your active generation slots are full. 409 means a request ID was reused with different input. Confirmed failed generations restore the original video credit or balance charge automatically.
Up to five parallel jobs are available immediately. Pack prices range from $2.50 per credit for one or two credits to $0.99 per credit in the 100-credit pack ($99 total). The 20-credit pack costs $30 and can fund 40 standard 15-second requests or 20 one-credit requests, or a mix, when the selected option is available. The retained introductory entitlement is one successful free video total across eligible models, not one per model; new free trials are currently paused. Card and crypto buy the same credits. Rendering capacity also depends on engine availability.