We gebruiken cookies. Cookies en browseropslag houden je ingelogd en onthouden je voorkeuren. Met je toestemming meten we ook hoe de site wordt gebruikt. Je kunt je wanneer je wilt. Zie ons cookiebeleid.

Video (asynchrone taken)

Endpoints

Video (asynchrone taken)

Maak met POST /videos een videotaak aan, poll de status met GET /videos/{id} en download het resultaat, met kosten, statussen en foutcodes.

Probeer het in de playground

Genereer video met Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo en meer. Videogeneratie duurt van tientallen seconden tot enkele minuten, dus het draait als een asynchrone taak: je maakt een taak aan, pollt de status en downloadt daarna het resultaat.

StapRequest
1. AanmakenPOST /api/v1/videos
2. PollenGET /api/v1/videos/{id}
3. DownloadenGET /api/v1/videos/{id}/content?index=0

Een taak aanmaken

POST https://api14.com/api/v1/videos
ParameterTypeVerplichtBeschrijving
modelstringjaEen videomodel-id, bijv. google/veo-3.1-fast.
promptstringjaWat er in de video gebeurt.
durationnumberneeLengte in seconden. Standaard de eerste ondersteunde duur van het model.
resolutionstringneeBijv. 720p, 1080p. Moet door het model worden ondersteund.
aspect_ratiostringneeBijv. 16:9, 9:16.
generate_audiobooleanneeGenereer een soundtrack waar ondersteund (standaard true).
imagestringneeEerste frame als URL of data:-URI (image-to-video).

Ondersteunde duren, resoluties en beeldverhoudingen per model: GET /videos/models (openbaar) of de modelpagina.

Saldocontrole

Voordat de taak wordt ingediend, schat de gateway de prijs als duur × de prijs per seconde voor de gevraagde resolutie (en audio-optie). Als je saldo lager is dan de schatting, mislukt het request met 402 insufficient_balance en wordt er niets gestart.

Response

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

De taak pollen

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 }
}
statusBetekenis
queuedWacht op de provider.
in_progressWordt gerenderd.
completedKlaar; unsigned_urls bevat de uitvoer.
failed, cancelled, expiredAfgerond zonder uitvoer; zie error. Je wordt niet gefactureerd.

Poll elke 5 tot 10 seconden. Alleen het account dat de taak heeft aangemaakt kan hem lezen; andere id's geven 404 not_found.

Het resultaat downloaden

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

Geeft de videobytes terug (meestal video/mp4) met je API-key. Uitvoer-URL's wijzen altijd naar de gateway, nooit naar de upstream-provider. Als het bestand niet klaar is of is verlopen, krijg je content_unavailable.

Voorbeeld

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);

Facturering

Je wordt eenmalig gefactureerd, wanneer de taak completed bereikt, op basis van de werkelijke kosten van de provider. Mislukte, geannuleerde en verlopen taken zijn gratis. Taken worden ook op de achtergrond afgerond, dus een taak die je nooit pollt wordt toch afgerekend en verschijnt in Gebruik.

Fouten

StatusCodeWanneer
402insufficient_balanceHet saldo is lager dan de geschatte prijs van de taak.
403plan_requiredJe abonnement bevat geen videomodellen.
404model_not_found / not_foundOnbekend model, of het taak-id is niet van jou.
502upstream_unavailableDe status kon niet worden gelezen; probeer opnieuw.

Zie Fouten.