Endpoints
Video (asynkrona jobb)
Skapa videojobb med POST /videos, följ status med GET /videos/{id} och ladda ner resultatet, med parametrar, fakturering och felkoder.
Testa i playgroundGenerera video med Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo med flera. Videogenerering tar från tiotals sekunder till flera minuter, så den körs som ett asynkront jobb: du skapar ett jobb, kontrollerar dess status och laddar sedan ner resultatet.
| Steg | Anrop |
|---|---|
| 1. Skapa | POST /api/v1/videos |
| 2. Polla | GET /api/v1/videos/{id} |
| 3. Ladda ner | GET /api/v1/videos/{id}/content?index=0 |
Skapa ett jobb
POST https://api14.com/api/v1/videos
| Parameter | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
model | string | ja | Ett videomodell-id, t.ex. google/veo-3.1-fast. |
prompt | string | ja | Vad som händer i videon. |
duration | number | nej | Längd i sekunder. Standard är modellens första stödda längd. |
resolution | string | nej | t.ex. 720p, 1080p. Måste stödjas av modellen. |
aspect_ratio | string | nej | t.ex. 16:9, 9:16. |
generate_audio | boolean | nej | Generera ett ljudspår där det stöds (standard true). |
image | string | nej | Första bildrutan som URL eller data:-URI (bild-till-video). |
Stödda längder, upplösningar och bildproportioner per modell: GET /videos/models (publik) eller modellsidan.
Saldokontroll
Innan jobbet skickas uppskattar gatewayen priset som längd × priset per sekund för den begärda upplösningen (och ljudalternativet). Om ditt saldo är lägre än uppskattningen misslyckas anropet med 402 insufficient_balance och ingenting startas.
Svar
{
"id": "vid_01JABCDEF",
"status": "queued",
"polling_url": "/api/v1/videos/vid_01JABCDEF"
}
Polla jobbet
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 | Betydelse |
|---|---|
queued | Väntar på leverantören. |
in_progress | Renderas. |
completed | Klart. unsigned_urls listar resultaten. |
failed, cancelled, expired | Avslutades utan resultat, se error. Du debiteras inte. |
Polla var 5–10:e sekund. Bara kontot som skapade jobbet kan läsa det, andra id:n returnerar 404 not_found.
Ladda ner resultatet
GET https://api14.com/api/v1/videos/{id}/content?index=0
Returnerar videobytes (vanligtvis video/mp4) med din API-nyckel. Utdata-URL:er pekar alltid på gatewayen, aldrig på uppströmsleverantören. Om filen inte är klar eller har gått ut får du content_unavailable.
Exempel
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);
Fakturering
Du debiteras en gång, när jobbet når completed, med leverantörens faktiska kostnad. Misslyckade, avbrutna och utgångna jobb är kostnadsfria. Jobb slutförs också i bakgrunden, så ett jobb som du aldrig pollar regleras ändå och visas i Användning.
Fel
| Status | Kod | När |
|---|---|---|
| 402 | insufficient_balance | Saldot understiger jobbets uppskattade pris. |
| 403 | plan_required | Din plan omfattar inte videomodeller. |
| 404 | model_not_found / not_found | Okänd modell, eller jobb-id som inte är ditt. |
| 502 | upstream_unavailable | Statusen kunde inte läsas, försök igen. |
Se Fel.