how-tos

Kling 4.0 API-gids: je eerste video met Python en cURL

PoYo Team
5 min read
Share:

Een filmoperateur die een filmprojector inregelt, een redactionele illustratie

De Kling 4.0 API op PoYo gebruikt één model-ID, kling-4.0, voor tekst naar video, generatie met eerste en laatste frame, visuele referenties en videobewerking. Dien een verzoek in, bewaar de taak-ID en poll tot de taak klaar is. Deze gids volgt het huidige schema van PoYo, gecontroleerd op 24 oktober 2026; veldnamen van een andere aanbieder zijn niet uitwisselbaar.

Open de Kling 4.0 playground om de input visueel uit te proberen, of raadpleeg de API-documentatie.

Genereer een eerste video met cURL

Stel POYO_API_KEY in je shell-omgeving in en dien dan dit verzoek van vijf seconden in. Bewaar de inloggegevens op je server en niet in browsercode.

curl --fail-with-body https://api.poyo.ai/api/generate/submit \
  -H "Authorization: Bearer $POYO_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "kling-4.0",
    "input": {
      "prompt": "A paper boat floats beneath a stone bridge. One continuous low tracking shot, soft morning light, gentle water sounds, no speech or on-screen text.",
      "duration": 5,
      "resolution": "720p",
      "aspect_ratio": "16:9"
    }
  }'

Lees data.task_id uit het JSON-antwoord; een geslaagde indiening is nog geen afgeronde video. Vervang hieronder YOUR_TASK_ID door die waarde:

curl --fail-with-body \
  https://api.poyo.ai/api/generate/status/YOUR_TASK_ID \
  -H "Authorization: Bearer $POYO_API_KEY"

De gedocumenteerde statussen zijn not_started, running, finished en failed. Zodra de taak klaar is, zoek je in data.files naar de file_url van een video. Bij een fout bekijk je error_message en bewaar je de taak-ID voor diagnose. Een bestaande taak pollen hoeft niet opnieuw te worden ingediend.

Een begrensde pollinglus in Python

Installeer requests en draai dit op je backend. Het controleert zowel HTTP-fouten als applicatiefouten, stopt bij een mislukte taak en beperkt het wachten tot 30 minuten. Een time-out betekent dat je dezelfde taak later opnieuw controleert; automatisch opnieuw indienen kan een tweede betaalde job opleveren.

import os
import time
import requests

base = "https://api.poyo.ai"
session = requests.Session()
session.headers["Authorization"] = "Bearer " + os.environ["POYO_API_KEY"]

def checked(response):
    response.raise_for_status()
    body = response.json()
    if body.get("code") not in (0, 200):
        raise RuntimeError(body.get("message") or "PoYo API error")
    return body["data"]

task = checked(session.post(base + "/api/generate/submit", json={
    "model": "kling-4.0",
    "input": {
        "prompt": "A paper boat floats beneath a stone bridge. Slow tracking shot.",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9",
    },
}, timeout=60))
task_id = task["task_id"]
print("Task:", task_id, flush=True)
deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    task = checked(session.get(
        base + "/api/generate/status/" + task_id, timeout=60))
    if task["status"] == "failed":
        raise RuntimeError(task.get("error_message") or "Generation failed")
    if task["status"] == "finished":
        videos = [f["file_url"] for f in task.get("files", [])
                  if f.get("file_type") == "video"]
        if not videos:
            raise RuntimeError("Finished task returned no video")
        print(videos[0])
        break
    time.sleep(10)
else:
    raise TimeoutError("Check the saved task ID again: " + task_id)

Kies de juiste invoermodus

DoelVelden binnen inputBelangrijke beperking
Tekst naar videoprompt of multi_promptGeef er precies één op
Eerste en laatste frameimage_urls met een of twee geordende URL'sLaat aspect_ratio weg
Generatie met referentiesreference_image_urls, reference_video_urls of kling_elementsHooguit één optioneel eerste frame
Beeldmateriaal bewerkenvideo_url en promptGeen image_urls, multi_prompt, reference_video_urls of aspect_ratio

Het veld voor de bronvideo kiest bewerken, ook als er referentieafbeeldingen zijn meegestuurd. Bij afbeelding naar video bepaalt de eerste afbeelding het beginframe; een tweede afbeelding bepaalt het eindframe. Referentieafbeeldingen sturen identiteit of stijl en hebben niet dezelfde betekenis als grensframes.

Limieten die het waard zijn om vóór het indienen te valideren

De generatie ondersteunt duren in hele seconden van 3 tot 30 seconden, in 720p of 1080p. Een gewone prompt is in dit schema van PoYo beperkt tot 26.000 tekens. Elke shot in multi_prompt accepteert maximaal 512 tekens; als de duur van een shot ontbreekt, is die standaard vijf seconden. De duren van de shots moeten samen 3–30 seconden zijn, en een expliciet opgegeven duur op het hoogste niveau moet gelijk zijn aan dat totaal.

Referenties staan maximaal 10 afbeeldingen, vijf video's en zeven subjecten toe, binnen een gezamenlijke limiet van 15 assets. Een eerste frame telt mee voor zowel de afbeeldingslimiet als de totale limiet. Elke referentie- of subjectvideo moet 3–30 seconden duren; hun gezamenlijke werkelijke duur mag niet boven 30 seconden komen. Rond duren niet naar beneden af om een te grote input door de validatie te krijgen.

Begrijp je eerste rekening

Een verzoek van vijf seconden in 720p zonder video-input kost 142,5 credits, oftewel $0.7125 tegen de huidige vermelde omrekening. Een video-input verandert zowel het tarief als de factureerbare duur. Bekijk de prijsvoorbeelden voordat je een workflow met een referentievideo of bewerking inschat.

Het officiële product voor creators maakt reclame voor extra besturing, waaronder meerdere keyframes. Het schema van PoYo biedt hier tot twee grensframes en prompts per shot; stuur geen verzonnen velden als keyframes, seed, negative_prompt of generate_audio naar dit endpoint. Voor werkende voorbeelden ga je verder met de promptgids en de Omni Reference-tutorial.

Veelgestelde vragen

Is de model-ID van de API kling-4-0? Nee. Dat is de slug van de pagina. De model-ID in het verzoek is kling-4.0.

Kan ik hier 4K aanvragen? Dit endpoint van PoYo accepteert momenteel alleen 720p en 1080p. Controleer het schema van de aanbieder in plaats van marketingspecificaties van de creator-app over te nemen.

Kan ik een callback gebruiken? Het indienverzoek ondersteunt een callback_url op het hoogste niveau. Raadpleeg de actuele documentatie voor de afhandeling van callbacks; het pollingvoorbeeld hierboven is er niet van afhankelijk.

Waar begin ik? Gebruik eerst een kort verzoek met alleen tekst, bewaar de taak-ID en het resultaat, en voeg daarna in de playground één invoermodaliteit tegelijk toe.

Share: