Vídeo
Texto para vídeo
Criar clipes a partir de um prompt: enquadramento, movimento, duração e entrega.
Um bom plano de vídeo define assunto, lugar, ação, enquadramento e movimento de câmera. Comece com clipes curtos e itere a partir do resultado que funciona.
Princípios práticos
Escolha o modelo pela prioridade — velocidade, fidelidade, resolução ou controle — e guarde parâmetros e versão usados em cada resultado. sora2, veo3.1-*, wan2.7-video and kling-3.0-* — Text to video.
Mude uma coisa por tentativa. Boas saídas viram referências e o ponto de partida mais confiável para a próxima iteração.
Trate finished e failed como estados finais. Use polling ou webhooks, preserve erros brutos no servidor e mostre mensagens seguras ao usuário.
Prompts e exemplos de API
Close up shot (composition) of melting icicles (subject) on a frozen rock wall(context) with cool blue tones (ambiance), zoomed in (camera motion) maintainingclose-up detail of water drips (action).
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
A barista slides a paper cup across the counter and says "your usual, right?",warm indoor light, handheld, slight rack focus onto the cup, cafe ambience
A close-up cinematic shot follows a desperate man in a weathered green trenchcoat as he dials a rotary phone mounted on a gritty brick wall, bathed in theeerie glow of a green neon sign. The camera dollies in, revealing the tensionin his jaw and the desperation etched on his face as he struggles to make thecall. The shallow depth of field focuses on his furrowed brow and the blackrotary phone, blurring the background into a sea of neon colors and indistinctshadows, creating a sense of urgency and isolation.
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
A satellite floating through outer space with the moon and some stars in thebackground.
Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
A cyclist crests a hill at dusk, silhouette against an orange sky, cameratracking alongside, dust in the air
About these samples. Ready-made examples are copied to our own storage only when their source permits reuse. The exact prompt appears above each result, and the original source and license are linked below the media.
curl -X POST https://api.api-stock.com/api/v1/generation/create \-H "Authorization: Bearer sk-your-key" \-H "Content-Type: application/json" \-d '{"model": "veo3.1-quality","input": {"prompt": "A lighthouse on a basalt cliff at dawn, slow push-in, fog rolling over the water","aspectRatio": "16:9","resolution": "4k"}}'
{"code": 200,"data": {"taskId": "019ca881-9503-7270-a560-f00fc2b15785","status": "not_started","createdAt": "2026-02-28T11:22:33.000Z"}}
{"model": "doubao-seedance-2.0","input": {"prompt": "A lighthouse on a basalt cliff at dawn, fog rolling over the water","size": "16:9","resolution": "1080p","duration": 8,"generateAudio": true,"cameraFixed": false}}
curl https://api.api-stock.com/api/v1/task/status/019ca881-9503-7270-a560-f00fc2b15785 \-H "Authorization: Bearer sk-your-key"
{"code": 200,"data": {"taskId": "019ca881-9503-7270-a560-f00fc2b15785","status": "processing","createdTime": "2026-02-28T11:22:33.000Z"}}
{"code": 200,"data": {"taskId": "019ca881-9503-7270-a560-f00fc2b15785","status": "finished","files": [{"fileUrl": "https://storage.api-stock.com/generated/video-abc123.mp4","fileType": "video"}],"createdTime": "2026-02-28T11:22:33.000Z"}}
const BASE = "https://api.api-stock.com/api/v1";const KEY = process.env.API_STOCK_KEY!;type TaskFile = { fileUrl: string; fileType: "image" | "video" | "music" };type TaskData = {taskId: string;status: "not_started" | "processing" | "finished" | "failed";files?: TaskFile[];output?: Record<string, unknown>;createdTime: string;errorMessage?: string;};async function createVideo(prompt: string): Promise<string> {const res = await fetch(`${BASE}/generation/create`, {method: "POST",headers: {Authorization: `Bearer ${KEY}`,"Content-Type": "application/json",},body: JSON.stringify({model: "veo3.1-quality",input: { prompt, aspectRatio: "16:9", resolution: "4k" },}),});const body = await res.json();if (!res.ok) {// { code, error: { message, type, code } }throw new Error(`${body.error.code}: ${body.error.message}`);}return body.data.taskId; // → "019ca881-9503-7270-a560-f00fc2b15785"}async function waitForTask(taskId: string,{ intervalMs = 10_000, timeoutMs = 20 * 60_000 } = {},): Promise<TaskData> {const deadline = Date.now() + timeoutMs;while (Date.now() < deadline) {const res = await fetch(`${BASE}/task/status/${taskId}`, {headers: { Authorization: `Bearer ${KEY}` },});const body = await res.json().catch(() => null);if (!res.ok) {const message = body?.error?.message ?? `${res.status} ${res.statusText}`;throw new Error(message);}const data = body.data as TaskData;if (data.status === "finished") return data;if (data.status === "failed") {throw new Error(data.errorMessage ?? "generation failed");}await new Promise((r) => setTimeout(r, intervalMs));}// The task is still alive server-side — resume polling later with the id.throw new Error(`timed out waiting for ${taskId}`);}const taskId = await createVideo("A lighthouse on a basalt cliff at dawn, slow push-in, fog rolling over the water",);const task = await waitForTask(taskId);console.log(task.files?.[0].fileUrl); // → https://storage.api-stock.com/...mp4
{"model": "sora2","input": {"prompt": "Neon-lit rain on an empty parking garage, handheld","aspectRatio": "9:16","duration": 15},"webhook": "https://example.com/hooks/api-stock/8f2c1e9a-secret"}
{"code": 400,"error": {"message": "Input parameters do not match the requirements for model veo3.1-quality","type": "BadRequest","code": "invalid_input"}}
{"code": 200,"data": {"taskId": "019ca881-9503-7270-a560-f00fc2b15785","status": "failed","createdTime": "2026-02-28T11:22:33.000Z","errorMessage": "This generation may violate our content policy. Please try a different prompt."}}
Rode isto com a sua própria chave
Todos os modelos deste guia estão no catálogo do API Stock — uma chave de API, um saldo pré-pago e nenhum cadastro separado por provedor.