Używamy plików cookie. Pliki cookie i pamięć przeglądarki pozwalają utrzymać logowanie i zapamiętać Twoje preferencje. Za Twoją zgodą mierzymy też, jak korzystasz ze strony. W każdej chwili możesz . Zobacz naszą politykę cookie.

Wideo (zadania asynchroniczne)

Endpointy

Wideo (zadania asynchroniczne)

POST /videos tworzy zadanie generowania wideo; odpytuj GET /videos/{id} o status i pobierz gotowy plik z endpointu content.

Wypróbuj w playground

Generuj wideo za pomocą Veo 3.1, Sora 2 Pro, Kling, Seedance, Runway, Wan, Hailuo i innych. Generowanie wideo trwa od kilkudziesięciu sekund do kilku minut, więc działa jako zadanie asynchroniczne: tworzysz zadanie, odpytujesz o jego status, a następnie pobierasz wynik.

KrokŻądanie
1. UtwórzPOST /api/v1/videos
2. OdpytujGET /api/v1/videos/{id}
3. PobierzGET /api/v1/videos/{id}/content?index=0

Utworzenie zadania

POST https://api14.com/api/v1/videos
ParametrTypWymaganyOpis
modelstringtakIdentyfikator modelu wideo, np. google/veo-3.1-fast.
promptstringtakCo dzieje się w wideo.
durationnumbernieDługość w sekundach. Domyślnie pierwszy czas obsługiwany przez model.
resolutionstringnienp. 720p, 1080p. Musi być obsługiwana przez model.
aspect_ratiostringnienp. 16:9, 9:16.
generate_audiobooleannieGeneruje ścieżkę dźwiękową, jeśli jest obsługiwana (domyślnie true).
imagestringniePierwsza klatka jako adres URL lub URI data: (image-to-video).

Obsługiwane czasy trwania, rozdzielczości i proporcje dla każdego modelu: GET /videos/models (publiczny) lub strona modelu.

Kontrola salda

Zanim zadanie zostanie wysłane, bramka szacuje jego cenę jako czas trwania × cena za sekundę dla żądanej rozdzielczości (i opcji dźwięku). Jeśli Twoje saldo jest niższe niż szacunek, żądanie kończy się błędem 402 insufficient_balance i nic nie jest uruchamiane.

Odpowiedź

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

Odpytywanie zadania

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 }
}
statusZnaczenie
queuedOczekuje na dostawcę.
in_progressTrwa renderowanie.
completedGotowe; unsigned_urls wymienia wyniki.
failed, cancelled, expiredZakończone bez wyniku; zobacz error. Nie jest pobierana opłata.

Odpytuj co 5–10 sekund. Zadanie może odczytać tylko konto, które je utworzyło; inne identyfikatory zwracają 404 not_found.

Pobranie wyniku

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

Zwraca bajty wideo (zwykle video/mp4) po uwierzytelnieniu Twoim kluczem API. Adresy URL wyników zawsze wskazują na bramkę, nigdy na dostawcę. Jeśli plik nie jest gotowy lub wygasł, otrzymasz content_unavailable.

Przykład

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

Rozliczenia

Opłata jest pobierana jednorazowo, gdy zadanie osiągnie completed, według rzeczywistego kosztu dostawcy. Zadania nieudane, anulowane i wygasłe są bezpłatne. Zadania kończą się też w tle, więc zadanie, którego nigdy nie odpytujesz, i tak zostanie rozliczone i pojawi się w Usage.

Błędy

StatusKodKiedy
402insufficient_balanceSaldo jest niższe niż szacowana cena zadania.
403plan_requiredTwój plan nie obejmuje modeli wideo.
404model_not_found / not_foundNieznany model lub identyfikator zadania nie należy do Ciebie.
502upstream_unavailableNie udało się odczytać statusu; ponów próbę.

Zobacz Błędy.