AI视频生成器——通过Veevid API支持文本转视频、图片转视频及参考素材转视频。支持Kling 3.0、Sora 2、Veo 3.1、LTX 2.3、Seedance、Wan 2.6等多种模型。
One API key for everything on veevid.ai: video generation, image generation and editing, speech, music, transcription and video tools. Every model is called through the same endpoint, POST /api/generate-video, with a mode (the model) and a generation_type (the task).
bash
mkdir -p ~/.config/veevid
echo "vv_sk_your_key" > ~/.config/veevid/api_key
All requests send Authorization: Bearer $(cat ~/.config/veevid/api_key). Base URL: https://veevid.ai.
### `<mode>` ). It lists every param with allowed values and defaults, the input files, upload folders, rules and an example body. Don't guess params.POST /api/quote with the body you will generate with, including the prompt (some models check it). The quote endpoint does not read video URLs and does not always count the images array, so describe input files with the quote fields the model's rules ask for ( input_image_count, has_video_input, input_video_count, input_video_duration, …; see api-reference.md). File URLs are not needed to quote, except the audio URL for scribe-v2 and veed-clean-audio — for those, ask the user before uploading the file to price it. Declare real input lengths ( input_video_duration, input_audio_duration, …): if they are too low, some models charge the difference after the job. Tell the user the model and the exact required_credits, and wait for a yes. If sufficient is false, offer a cheaper option or veevid.ai/pricing.POST /api/storage/upload with file and the model's upload folder ( veed-clean-audio uses /api/storage/presign-upload). Public https URLs can be passed directly unless the model's rules say the file must be uploaded to Veevid.POST /api/generate-video → {"generation_id": "vg_…", "status": "processing"}.GET /api/video-generation/{generation_id}/status every 5–10 s until completed or failed. The result is in video_url for every media kind (video, image or audio); multiple images are in result_images. Videos take about 1–3 minutes, images and audio seconds to a minute.bash
KEY=$(cat ~/.config/veevid/api_key)
BODY='{"mode":"veo3","generation_type":"text-to-video","prompt":"A golden retriever running through sunflowers, cinematic","video_quality":"standard","aspect_ratio":"16:9"}'
curl -X POST https://veevid.ai/api/quote -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d "$BODY"
# → {"required_credits":<n>,"current_balance":<n>,"sufficient":true}
# STOP: tell the user the model and <n> credits, and only continue after they say yes.
curl -X POST https://veevid.ai/api/generate-video -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d "$BODY"
# → {"generation_id":"vg_abc123","status":"processing",...}
curl https://veevid.ai/api/video-generation/vg_abc123/status -H "Authorization: Bearer $KEY"
Prompts are sent to the model as-is — the website's automatic prompt translation is not applied to API calls. Write prompts in English (translate the user's request yourself).
TaskGood defaultOther optionsReferenceText/image to video, budgetgrok-imagine, veo3 with video_quality: "lite"``ltx-2-3models-video.mdText/image to video, qualitykling-3, veo3 with "pro", seedance-2.5``minimax-h3-max, wan-3.0, gemini-omni, ltx-2-5 (up to 4K)models-video.mdVideo from reference images/videosseedance-2.5, minimax-h3-max ( reference-to-video)wan-3.0, wan-2.7, veo3models-video.mdImage to video with a scripted camera moveminimax-h3-max-cameramodels-video.mdTalking photo / presenter or ad clipminimax-h3-max-lip-sync, creatify-boreal``ltx-2-5 with audiomodels-video.mdText to imagenano-banana-2, gpt-image-2``nano-banana-2-1, seedream-5.0-pro, ideogram-4-5 (text in images), flux-3-image, qwen-image-2-1models-image.mdEdit an imagenano-banana-2 / gpt-image-2 with image-to-image``nano-banana-2-1, nano-banana-edit, qwen-image-2-1 (masks), flux-kontextmodels-image.mdVirtual try-on / product in handvirtual-try-on, product-holdingmodels-image.mdText to speecheleven-v4-turbo``eleven-v4, grok-ttsmodels-audio.mdMusiclyria-musicmodels-audio.mdTranscribe audioscribe-v2models-audio.mdRemove background noiseveed-clean-audiomodels-audio.mdUpscale / resize a videoupscale, reframemodels-tools.mdEdit / extend a videoseedance-2.5, wan-3.0 ( edit-video, video-extend)wan-2.7-edit, minimax-h3-max-extend, ltx-2-3 extendmodels-tools.mdInsert a shot / swap a characterminimax-h3-max-insert, minimax-h3-max-recastmodels-tools.mdLip-sync an existing videovideo-lip-syncmodels-tools.mdCopy motion from a videomotion-control-standard / motion-control-pro``wan-animatemodels-tools.md, models-video.mdHug / kiss video from photosai-hug, ai-kissingmodels-tools.md
Prices depend on duration, resolution and tier — never quote from memory, always call /api/quote.
If the user refers to an image, video or audio file they sent in the conversation but no URL reached you, look through their recent messages for attachments from that same user, show which file you picked (quote or reply to that message) and ask them to confirm before uploading. When several files are needed (start/end frames, reference images), ask which ones and in what order.
GET /api/credits → {"success": true, "credits": <n>, "balance": <n>}GET /api/user/creations?page=1&pageSize=20&includeAudio=1 — the user's past generationsPOST /api/video-generation/{id}/upgrade-draft — upgrade a Seedance 2.5 480p draft to 1080p. It spends credits: quote it with {"draft_upgrade_id": "<id>"} and get the user's confirmation first, like any generationDetails, response fields and every error code: references/api-reference.md.
CodeMeaningWhat to do400 / 422Invalid params or combinationRead the error and the model's rules401Bad or missing API keyCheck ~/.config/veevid/api_key402Insufficient creditsTell the user required vs balance; suggest a cheaper option or a top-up403Account suspendedContact support409Input video longer than declared (character swap), or draft not ready / already upgradedNothing was charged. For character swap, show the user the new required_credits and only resend with input_video_duration = measured_duration after they agree500Server errorRetry after a few seconds
A failed status includes error_message; credits are normally refunded automatically.