# Pershot > AI video studio on ByteDance Seedance 2.0 (Mini and Fast) and open Qwen-Image models, for product ads, social clips and short dramas, one shot or a batch. Every render is quoted before it runs. A batch can render a few samples first and then waits for a person to approve them on the web; an agent cannot approve. Brand and product kits hold the brief for every shot. Credits are held when a render starts and charged on delivery. They are refunded automatically when no video comes out (the render fails or the model rejects it) or a safety check blocks the result; a video that is made is charged even if the person does not like it, and a broken file is refunded after a check. Real renders are not open yet. This file is in English, also when reached from a language path such as /zh/llms.txt. The pages it links to exist in nine languages (see Other languages at the end). ## Prices (1 credit = $0.01) - Seedance 2.0 Mini (`seedance-2.0-mini`): 21 credits for 5 s at 720p. API: $0.042/s at 720p, $0.020/s at 480p. - Seedance 2.0 Fast (`seedance-2.0-fast`): 34 credits for 5 s at 720p. API: $0.067/s at 720p, $0.031/s at 480p. - Video input: input seconds plus output seconds are billed, at a lower per-token rate. - Image Mini: `qwen-image-2512-lightning` (generate, Qwen-Image-2512 · Lightning 4-step) and `qwen-image-edit-2511-lightning` (edit). Generate: 1 credits per 1K image, 3 per 2K. Edit: 2 per 1K, 4 per 2K. - Image Fast: `qwen-image-2512` (generate, Qwen-Image-2512) and `qwen-image-edit-2511` (edit). Generate: 2 credits per 1K image, 6 per 2K. Edit: 3 per 1K, 10 per 2K. ## API - Developer API access is by application: request it at https://pershot.app/app/api-keys. Until it is granted, developer keys answer 403 `developer_api_closed`. For a person's own work no key is needed: the member connections below are available. - Base URL: https://api.pershot.app/v1. Auth: `Authorization: Bearer sk_test_…` or `sk_live_…` (a developer API key, by application), or the member sign-in from device login below. - Two balances that never cover each other. A developer API key spends the developer API balance, with its own price list (the same prices as the creative one today); the studio, MCP sign-ins, connection codes and the device-login sign-in spend the creative balance. `insufficient_credits` names the short one in `details.account` (`creative` or `api`). - A key may carry an allowlist of models and tools, set in the studio. With one, the key can use only the model ids and tool ids on it (tools: outpaint, image-upscale, remove-background, image-edit, video-upscale, lip-sync; Enhance is video-upscale); anything else answers 403 forbidden_model. - POST /v1/videos/generations with model, prompt, duration (4–15 s), resolution (480p or 720p), aspect_ratio (16:9, 9:16, 1:1), generate_audio, optional image_url and reference_image_urls (up to 9), and exactly one of quote_id or max_credits. Header `Idempotency-Key` is required. Returns 202 with a Job. - POST /v1/images/generations with an image model id, prompt, size (1K or 2K), aspect_ratio; edit models also need image_url. - GET /v1/jobs/{id} for status, signed output URLs and the actual charge. Errors: {"error": {"code", "message", "param", "request_id"}}. - Example headline job: Seedance 2.0 Fast, 720p, 5 s → max_credits 34. - MCP server: https://mcp.pershot.app/mcp (real renders are not open yet) ## One page per model (plain text, also MCP `get_model`) - [Seedance 2.0 Fast (`seedance-2.0-fast`)](https://pershot.app/models/seedance-2.0-fast/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools - [Seedance 2.0 Mini (`seedance-2.0-mini`)](https://pershot.app/models/seedance-2.0-mini/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools - [Qwen-Image-2512 · Lightning 4-step (`qwen-image-2512-lightning`)](https://pershot.app/models/qwen-image-2512-lightning/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools - [Qwen-Image-2512 (`qwen-image-2512`)](https://pershot.app/models/qwen-image-2512/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools - [Qwen-Image-Edit-2511 · Lightning (`qwen-image-edit-2511-lightning`)](https://pershot.app/models/qwen-image-edit-2511-lightning/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools - [Qwen-Image-Edit-2511 (`qwen-image-edit-2511`)](https://pershot.app/models/qwen-image-edit-2511/llms.txt): inputs, legal values, every price, a request in cURL, Python and JavaScript, errors and MCP tools ## Three ways for an AI agent to work here (all three spend the person's creative balance, like the studio) - Command line: the endpoints above, signed in by device login: POST /v1/device/code returns a short code and a link, a person confirms the code at https://pershot.app/device, and POST /v1/device/token then returns a member sign-in (`credential`, `bvcl_…`), once. It needs a verified email only, works on /v1, and is listed, capped and revoked under Connections in the studio. - MCP: https://mcp.pershot.app/mcp (sign-in by OAuth in the client, or a connection code from Connections as a Bearer header for an agent that cannot sign in; the same quote-first tools). - Interface: the studio at https://pershot.app/app. Every control has an accessible name, the Generate button carries the price, and a link opens it filled in: ?prompt= with optional model=fast|mini, duration=4..15, resolution=480p|720p, ratio=16:9|9:16|1:1, audio=0|1 (images: kind=image, tier=fast|mini, size=1K|2K), or ?cut=, or ?template=. A link never starts a render: someone presses Generate. - Automating a person's own work from their own code instead: a developer API key, by application (request it on the API keys page in the studio), spends the developer API balance, on /v1 and on MCP alike. It is not for reselling model access or building it into a product for other people. ## Pages - [Pricing](https://pershot.app/pricing): credits, top-ups, the calculator and API rates - [How prices are computed](https://pershot.app/pricing/method): token formula, list rates, our price and rounding - [Models](https://pershot.app/models): every model, what it is for and its price, with links to its page and API - [Workbench](https://pershot.app/workbench): every workflow and tool in one place: by industry, by method and single tools - [AI product video generator](https://pershot.app/workbench/ecommerce): for e-commerce: product presets and templates, a product kit, batches by SKU with samples first - [AI short drama generator](https://pershot.app/workbench/short-drama): a short drama shot by shot from a script, with characters saved once - [AI video ad generator](https://pershot.app/workbench/ads): ad templates and presets, a brand kit, one sheet row per version - [Batch video](https://pershot.app/tools/batch-video): a sheet of shots, every row priced first, samples before the rest - [Image to prompt](https://pershot.app/tools/image-to-prompt): a ready-to-use video prompt from a picture; free, the file is not stored - [Video to prompt](https://pershot.app/tools/video-to-prompt): the prompt behind a shot, from four or eight frames the browser takes of a video up to 3 minutes, written shot by shot; free, nothing stored - [Templates](https://pershot.app/templates): one image in, a priced set of shots out - [Seedance 2.0 Fast](https://pershot.app/models/seedance-2-0-fast): the production tuning - [Seedance 2.0 Mini](https://pershot.app/models/seedance-2-0-mini): the economical tuning - [Qwen-Image](https://pershot.app/models/qwen-image): Image Mini and Image Fast - [API](https://pershot.app/seedance-2-0-api): overview and per-second prices - [Docs](https://pershot.app/docs): quickstart, endpoints, webhooks, errors - [MCP](https://pershot.app/integrations/mcp): use from Claude and Codex - [Terms](https://pershot.app/terms): draft terms of service ## Resources - OpenAPI 3.1 for /v1: https://pershot.app/api/v1/openapi.json - Agent skill for Claude and Codex (quote, confirm, generate): https://pershot.app/agent-skill.zip - [Seedance 2.0 Fast price comparison](https://pershot.app/compare/seedance-2-0-fast-pricing): every spec against the BytePlus list price, fal, Replicate and WaveSpeed, sources checked 2026-09-29 - [Seedance 2.0 Mini price comparison](https://pershot.app/compare/seedance-2-0-mini-pricing): the same for Mini - [Seedance 2.0 Fast API](https://pershot.app/models/seedance-2-0-fast/api): quick start, parameters, pricing formula, webhooks - [Seedance 2.0 Mini API](https://pershot.app/models/seedance-2-0-mini/api): quick start, parameters, pricing formula, webhooks - [Qwen-Image API](https://pershot.app/models/qwen-image/api): image generate and edit endpoints (beta) - [Migrating from fal, Replicate or WaveSpeed](https://pershot.app/docs/migrate): Seedance 2.0 and Qwen-Image: authentication, model ids, every field, async jobs and webhooks, idempotency, and what is not compatible - [Seedance prompting guide](https://pershot.app/guides/seedance-prompting): three layers, timelines, @image references, camera-move library - [Agent skills](https://pershot.app/integrations/skills): install the skill in Claude Code, Claude apps or Codex - [AI agent integrations](https://pershot.app/integrations/agents): the supported AI agents (one list, a setup page each) and the three ways in (interface link, command line with device login, MCP), which share the creative balance and the same guardrails - [Command-line tool](https://pershot.app/integrations/cli): the `pershot` command for scripts and agents: device login, video and image with the price first, `help --llms`, fixed exit codes. Not published yet: nothing to install - [fal alternative](https://pershot.app/alternatives/fal): what fal publishes, side by side - [Replicate alternative](https://pershot.app/alternatives/replicate): what Replicate publishes, side by side - [WaveSpeed alternative](https://pershot.app/alternatives/wavespeed): what WaveSpeed publishes, side by side - [Directory](https://pershot.app/directory): every public page, A to Z ## Supported AI agents (labels from each agent's own docs, checked 2026-10-22) - [Claude Code](https://pershot.app/integrations/agents/claude-code): MCP sign-in, Connection code, Command line (not published yet). Tested by us. - [Codex](https://pershot.app/integrations/agents/codex): MCP sign-in, Connection code, Command line (not published yet). Documented. - [Cursor](https://pershot.app/integrations/agents/cursor): MCP sign-in, Connection code. Documented. - [GitHub Copilot (VS Code)](https://pershot.app/integrations/agents/github-copilot): MCP sign-in, Connection code. Documented. - [Devin Desktop (Windsurf)](https://pershot.app/integrations/agents/devin-desktop): MCP sign-in, Connection code. Documented. - [OpenCode](https://pershot.app/integrations/agents/opencode): MCP sign-in, Connection code. Documented. - [Kiro](https://pershot.app/integrations/agents/kiro): MCP sign-in, Connection code. Documented. - [Claude](https://pershot.app/integrations/agents/claude): MCP sign-in. Has limits. - [ChatGPT](https://pershot.app/integrations/agents/chatgpt): MCP sign-in. Has limits. - [Gemini CLI](https://pershot.app/integrations/agents/gemini-cli): MCP sign-in, Connection code, Command line (not published yet). Has limits. - [Qwen Code](https://pershot.app/integrations/agents/qwen-code): MCP sign-in, Connection code, Command line (not published yet). Documented. - [Hermes Agent](https://pershot.app/integrations/agents/hermes-agent): MCP sign-in, Connection code. Documented. - [Cline](https://pershot.app/integrations/agents/cline): Connection code, MCP sign-in. Needs a connection code. - [TRAE](https://pershot.app/integrations/agents/trae): Connection code. Needs a connection code. - [Kimi Code](https://pershot.app/integrations/agents/kimi-code): Connection code, MCP sign-in. Needs a connection code. - [Qoder](https://pershot.app/integrations/agents/qoder): Connection code, Command line (not published yet). Needs a connection code. - [ZCode](https://pershot.app/integrations/agents/zcode): Connection code, MCP sign-in. Needs a connection code. - [QwenWork](https://pershot.app/integrations/agents/qwenwork): Connection code. Needs a connection code. - [WorkBuddy](https://pershot.app/integrations/agents/workbuddy): Connection code. Needs a connection code. - [Doubao Work](https://pershot.app/integrations/agents/doubao-work): Connection code. Needs a connection code. - [Coze](https://pershot.app/integrations/agents/coze): MCP sign-in, Connection code. Has limits. - [n8n](https://pershot.app/integrations/agents/n8n): MCP sign-in, Connection code. Documented. - [Dify](https://pershot.app/integrations/agents/dify): MCP sign-in, Connection code. Documented. - [OpenClaw](https://pershot.app/integrations/agents/openclaw): MCP sign-in, Connection code. Documented. - [Gemini app](https://pershot.app/integrations/agents/gemini): MCP sign-in. Has limits. - [DeepSeek](https://pershot.app/integrations/agents/deepseek): Through an agent on this list. Has limits. ## Limits - [Limits by model](https://pershot.app/docs#limits-by-model): every limit, who checks it and what happens past it; also `limits` in GET /v1/models - enforced: we check it and answer 400 invalid_request (or refuse the upload) before anything is quoted or held. upstream: the supplier refuses past it; the job fails with invalid_request and nothing is charged. recommended: not checked. Links to other hosts are never fetched by us, so the supplier checks those images. Limits (seedance-2.0-fast, seedance-2.0-mini): - prompt_length: 2 to 2,000 characters [enforced; past it: 400 invalid_request before any quote or hold (param prompt)] - prompt_words_en: up to 1,000 English words [recommended; past it: accepted; a longer prompt may be followed less closely] - prompt_chars_zh: up to 500 Chinese characters [recommended; past it: accepted; a longer prompt may be followed less closely] - duration: 4 to 15 seconds (default 5) [enforced; past it: 400 invalid_request before any quote or hold (param duration)] - resolution: 480p, 720p (default 720p) [enforced; past it: 400 invalid_request before any quote or hold (param resolution)] - aspect_ratio: 16:9, 9:16, 1:1 (default 16:9) [enforced; past it: 400 invalid_request before any quote or hold (param aspect_ratio)] - seed: ignored [upstream; past it: accepted and not used] - input_video_seconds: 2 to 15 seconds [enforced; past it: 400 invalid_request before any quote or hold (param input_video_seconds)] - reference_images: up to 9 images [enforced; past it: 400 invalid_request before any quote or hold (param reference_image_urls)] - first_frame_or_references: image_url or reference_image_urls, not both [enforced; past it: 400 invalid_request before any quote or hold (param reference_image_urls)] - image_side: 300 to 6,000 px per side [enforced, uploads only; past it: uploads: 400 invalid_request before any quote or hold; links to other hosts: the supplier refuses the job, nothing is charged] - image_aspect: 0.4 to 2.5 width ÷ height [enforced, uploads only; past it: uploads: 400 invalid_request before any quote or hold; links to other hosts: the supplier refuses the job, nothing is charged] - upload_image_bytes: up to 10 MB [enforced; past it: POST /v1/uploads answers 400 invalid_request] - upload_image_formats: JPEG, PNG, WebP [enforced; past it: POST /v1/uploads answers 400 invalid_request] - external_image_bytes: up to 30 MB [upstream; past it: the supplier refuses the job; it fails and nothing is charged] - external_image_formats: JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIF [upstream; past it: the supplier refuses the job; it fails and nothing is charged] - output_pixels: 480p: 16:9 864×496, 9:16 496×864, 1:1 640×640; 720p: 16:9 1280×720, 9:16 720×1280, 1:1 960×960 px [upstream; past it: fixed: every output has it] - frame_rate: 24 fps [upstream; past it: fixed: every output has it] - output_format: MP4 [upstream; past it: fixed: every output has it] - upload_link_ttl: 7 days [enforced; past it: the link answers 403 after that] - output_link_ttl: 24 hours [enforced; past it: the link answers 403 after that] Limits (qwen-image-2512, qwen-image-2512-lightning): - prompt_length: 2 to 2,000 characters [enforced; past it: 400 invalid_request before any quote or hold (param prompt)] - size: 1K, 2K (default 1K) [enforced; past it: 400 invalid_request before any quote or hold (param size)] - aspect_ratio: 16:9, 9:16, 1:1 (default 1:1) [enforced; past it: 400 invalid_request before any quote or hold (param aspect_ratio)] - source_image: none [enforced; past it: 400 invalid_request before any quote or hold (param image_url)] - output_pixels: 1K: 16:9 1344×768, 9:16 768×1344, 1:1 1024×1024; 2K: 16:9 2048×1152, 9:16 1152×2048, 1:1 2048×2048 px [enforced; past it: fixed: every output has it] - output_side: 256 to 2,048 px per side [upstream; past it: the supplier refuses the job; it fails and nothing is charged] - output_format: JPEG [enforced; past it: fixed: every output has it] - output_link_ttl: 24 hours [enforced; past it: the link answers 403 after that] Limits (qwen-image-edit-2511, qwen-image-edit-2511-lightning): - prompt_length: 2 to 2,000 characters [enforced; past it: 400 invalid_request before any quote or hold (param prompt)] - size: 1K, 2K (default 1K) [enforced; past it: 400 invalid_request before any quote or hold (param size)] - aspect_ratio: 16:9, 9:16, 1:1 (default 1:1) [enforced; past it: 400 invalid_request before any quote or hold (param aspect_ratio)] - source_image: exactly 1 image [enforced; past it: 400 invalid_request before any quote or hold (param image_url)] - upload_image_bytes: up to 10 MB [enforced; past it: POST /v1/uploads answers 400 invalid_request] - upload_image_formats: JPEG, PNG, WebP [enforced; past it: POST /v1/uploads answers 400 invalid_request] - output_pixels: 1K: 16:9 1344×768, 9:16 768×1344, 1:1 1024×1024; 2K: 16:9 2048×1152, 9:16 1152×2048, 1:1 2048×2048 px [enforced; past it: fixed: every output has it] - output_side: 512 to 2,048 px per side [upstream; past it: the supplier refuses the job; it fails and nothing is charged] - output_format: JPEG [enforced; past it: fixed: every output has it] - upload_link_ttl: 7 days [enforced; past it: the link answers 403 after that] - output_link_ttl: 24 hours [enforced; past it: the link answers 403 after that] ## Other languages Every page also has a version in each of these languages; text not translated yet is shown in English. - Simplified Chinese: https://pershot.app/zh - Japanese: https://pershot.app/ja - Korean: https://pershot.app/ko - Spanish: https://pershot.app/es - Portuguese (Brazil): https://pershot.app/pt - German: https://pershot.app/de - French: https://pershot.app/fr - Italian: https://pershot.app/it