рд╣рдо cookies рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ. Cookies рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдпрд╛рдж рд░рдЦрддреЗ рд╣реИрдВред рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рд╣рдо рдпрд╣ рднреА рдорд╛рдкрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╣реЛрддреА рд╣реИред рдЖрдк рдХрднреА рднреА ред рд╣рдорд╛рд░реА cookie рдиреАрддрд┐ рджреЗрдЦреЗрдВред

рд╡реАрдбрд┐рдпреЛ (рдПрд╕рд┐рдВрдХ рдЬреЙрдм)

Endpoints

рд╡реАрдбрд┐рдпреЛ (рдПрд╕рд┐рдВрдХ рдЬреЙрдм)

POST /videos рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдЬреЙрдм рдмрдирд╛рдПрдБ, GET /videos/{id} рд╕реЗ рд╕реНрдерд┐рддрд┐ рдкреЛрд▓ рдХрд░реЗрдВ рдФрд░ рдирддреАрдЬрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдкреИрд░рд╛рдореАрдЯрд░, рдмрд┐рд▓рд┐рдВрдЧ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдпрд╣рд╛рдБ рд╣реИрдВред

playground рдореЗрдВ рдЖрдЬрд╝рдорд╛рдПрдВ

Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo рдФрд░ рдЕрдиреНрдп рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдПрдБред рд╡реАрдбрд┐рдпреЛ рдЬрдирд░реЗрд╢рди рдореЗрдВ рджрд╕рд┐рдпреЛрдВ рд╕реЗрдХрдВрдб рд╕реЗ рдХрдИ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЬреЙрдм рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ: рдЖрдк рдЬреЙрдм рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдкреЛрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдирддреАрдЬрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред

рдЪрд░рдгрдЕрдиреБрд░реЛрдз
1. рдмрдирд╛рдПрдБPOST /api/v1/videos
2. рдкреЛрд▓ рдХрд░реЗрдВGET /api/v1/videos/{id}
3. рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВGET /api/v1/videos/{id}/content?index=0

рдЬреЙрдм рдмрдирд╛рдПрдБ

POST https://api14.com/api/v1/videos
рдкреИрд░рд╛рдореАрдЯрд░рдкреНрд░рдХрд╛рд░рдЖрд╡рд╢реНрдпрдХрд╡рд┐рд╡рд░рдг
modelstringрд╣рд╛рдБрд╡реАрдбрд┐рдпреЛ рдореЙрдбрд▓ id, рдЬреИрд╕реЗ google/veo-3.1-fastред
promptstringрд╣рд╛рдБрд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
durationnumberрдирд╣реАрдВрд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдВрдмрд╛рдИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЙрдбрд▓ рдХреА рдкрд╣рд▓реА рд╕рдорд░реНрдерд┐рдд рдЕрд╡рдзрд┐ред
resolutionstringрдирд╣реАрдВрдЬреИрд╕реЗ 720p, 1080pред рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
aspect_ratiostringрдирд╣реАрдВрдЬреИрд╕реЗ 16:9, 9:16ред
generate_audiobooleanрдирд╣реАрдВрдЬрд╣рд╛рдБ рд╕рдорд░реНрдерд┐рдд рд╣реЛ рд╕рд╛рдЙрдВрдбрдЯреНрд░реИрдХ рдмрдирд╛рдПрдБ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ true)ред
imagestringрдирд╣реАрдВрдкрд╣рд▓рд╛ рдлрд╝реНрд░реЗрдо, URL рдпрд╛ data: URI рдХреЗ рд░реВрдк рдореЗрдВ (image-to-video)ред

рд╣рд░ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдЕрд╡рдзрд┐, рд░реЗрдЬрд╝реЛрд▓реНрдпреВрд╢рди рдФрд░ рдЖрд╕реНрдкреЗрдХреНрдЯ рд░реЗрд╢рд┐рдпреЛ: GET /videos/models (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ) рдпрд╛ рдореЙрдбрд▓ рдкреЗрдЬред

рдмреИрд▓реЗрдВрд╕ рдЬрд╛рдБрдЪ

рдЬреЙрдм рд╕рдмрдорд┐рдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЧреЗрдЯрд╡реЗ рдЙрд╕рдХреА рдХреАрдордд рдХрд╛ рдЕрдиреБрдорд╛рди рдЕрд╡рдзрд┐ ├Ч рдЕрдиреБрд░реЛрдзрд┐рдд рд░реЗрдЬрд╝реЛрд▓реНрдпреВрд╢рди (рдФрд░ рдСрдбрд┐рдпреЛ рд╡рд┐рдХрд▓реНрдк) рдХреА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреАрдордд рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдмреИрд▓реЗрдВрд╕ рдЕрдиреБрдорд╛рди рд╕реЗ рдХрдо рд╣реИ рддреЛ рдЕрдиреБрд░реЛрдз 402 insufficient_balance рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

{
  "id": "vid_01JABCDEF",
  "status": "queued",
  "polling_url": "/api/v1/videos/vid_01JABCDEF"
}

рдЬреЙрдм рдкреЛрд▓ рдХрд░реЗрдВ

GET https://api14.com/api/v1/videos/{id}
{
  "id": "vid_01JABCDEF",
  "status": "completed",
  "generation_id": "gen-1791100000-abc",
  "unsigned_urls": ["/api/v1/videos/vid_01JABCDEF/content?index=0"],
  "usage": { "cost": 1.2 }
}
statusрдЕрд░реНрде
queuedрдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВред
in_progressрд░реЗрдВрдбрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИред
completedрдкреВрд░рд╛; unsigned_urls рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред
failed, cancelled, expiredрдмрд┐рдирд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рдорд╛рдкреНрдд; error рджреЗрдЦреЗрдВред рдЖрдкрд╕реЗ рд╢реБрд▓реНрдХ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ред

рд╣рд░ 5-10 рд╕реЗрдХрдВрдб рдореЗрдВ рдкреЛрд▓ рдХрд░реЗрдВред рдЬреЙрдм рдХреЗрд╡рд▓ рдЙрд╕реЗ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЦрд╛рддрд╛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ; рдЕрдиреНрдп id 404 not_found рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

рдирддреАрдЬрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

GET https://api14.com/api/v1/videos/{id}/content?index=0

рдЖрдкрдХреА API рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╡реАрдбрд┐рдпреЛ рдмрд╛рдЗрдЯ (рдЖрдорддреМрд░ рдкрд░ video/mp4) рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ URL рд╣рдореЗрд╢рд╛ рдЧреЗрдЯрд╡реЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдХрднреА рдЕрдкрд╕реНрдЯреНрд░реАрдо рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рдУрд░ рдирд╣реАрдВред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХреА рд╣реИ рддреЛ content_unavailable рдорд┐рд▓рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

// Video generation is asynchronous: submit, then poll until completed.
let job = await client.post("/videos", { body: {
  "model": "google/veo-3.1-fast",
  "prompt": "A drone shot over turquoise ocean waves at sunrise",
  "duration": 8,
  "resolution": "720p",
  "aspect_ratio": "16:9"
} });
while (!["completed", "failed"].includes(job.status)) {
  await new Promise((r) => setTimeout(r, 5000));
  job = await client.get(`/videos/${job.id}`);
}
console.log(job.status, job.unsigned_urls);

рдмрд┐рд▓рд┐рдВрдЧ

рдЖрдкрд╕реЗ рдПрдХ рдмрд╛рд░ рд╢реБрд▓реНрдХ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЬреЙрдм completed рдкрд░ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ, рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдЧрдд рдкрд░ред рд╡рд┐рдлрд▓, рд░рджреНрдж рдФрд░ рд╕рдорд╛рдкреНрдд рдЬреЙрдм рдореБрдлрд╝реНрдд рд╣реИрдВред рдЬреЙрдм рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рднреА рдкреВрд░реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрд┐рд╕ рдЬреЙрдм рдХреЛ рдЖрдкрдиреЗ рдХрднреА рдкреЛрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╡рд╣ рднреА рд╕реЗрдЯрд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рддреНрд░реБрдЯрд┐рдпрд╛рдБ

рд╕реНрдЯреЗрдЯрд╕рдХреЛрдбрдХрдм
402insufficient_balanceрдмреИрд▓реЗрдВрд╕ рдЬреЙрдм рдХреА рдЕрдиреБрдорд╛рдирд┐рдд рдХреАрдордд рд╕реЗ рдХрдо рд╣реИред
403plan_requiredрдЖрдкрдХреЗ рдкреНрд▓рд╛рди рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдореЙрдбрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред
404model_not_found / not_foundрдЕрдЬреНрдЮрд╛рдд рдореЙрдбрд▓, рдпрд╛ рдЬреЙрдм id рдЖрдкрдХрд╛ рдирд╣реАрдВред
502upstream_unavailableрд╕реНрдерд┐рддрд┐ рдкрдврд╝реА рдирд╣реАрдВ рдЬрд╛ рд╕рдХреА; рд░реАрдЯреНрд░рд╛рдИ рдХрд░реЗрдВред

рджреЗрдЦреЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБред