how-tos

Kling 4.0 API-guide: din første video med Python og cURL

PoYo Team
5 min read
Share:

En filmfremviser, der lægger film i en projektor, en redaktionel illustration

Kling 4.0 API på PoYo bruger ét model-ID, kling-4.0, til tekst til video, generering ud fra første og sidste billedramme, visuelle referencer og videoredigering. Send en anmodning, gem dens opgave-ID, og poll, indtil opgaven er færdig. Denne guide følger PoYo's aktuelle skema, kontrolleret den 24. oktober 2026; en anden udbyders feltnavne kan ikke bruges i flæng.

Åbn Kling 4.0 playground for at prøve inputtene visuelt, eller se API-dokumentationen.

Generer en første video med cURL

Sæt POYO_API_KEY i din shell-miljøvariabel, og send derefter denne anmodning på fem sekunder. Behold legitimationsoplysningerne på din server og ikke i browserkode.

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"
    }
  }'

Læs data.task_id fra JSON-svaret; en vellykket indsendelse er ikke det samme som en færdig video. Erstat YOUR_TASK_ID nedenfor med den værdi:

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

De dokumenterede statusser er not_started, running, finished og failed. Når opgaven er færdig, kan du finde en video-file_url i data.files. Ved fejl kan du se error_message og gemme opgave-ID'et til diagnose. Du behøver ikke sende en eksisterende opgave igen for at polle den.

En afgrænset pollingløkke i Python

Installér requests, og kør dette på din backend. Koden tjekker både HTTP-fejl og applikationsfejl, stopper ved en mislykket opgave og begrænser ventetiden til 30 minutter. En timeout betyder, at du skal tjekke den samme opgave senere; hvis du automatisk sender anmodningen igen, kan du oprette et ekstra job, som der skal betales for.

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)

Vælg den rette inputtilstand

MålFelter i inputVigtig begrænsning
Tekst til videoprompt eller multi_promptAngiv præcis ét
Første/sidste billedrammeimage_urls med én eller to URL'er i rækkefølgeUdelad aspect_ratio
Generering med referencereference_image_urls, reference_video_urls eller kling_elementsHøjst én valgfri første billedramme
Redigér optagelservideo_url og promptIngen image_urls, multi_prompt, reference_video_urls eller aspect_ratio

Feltet for kildevideo vælger redigering, selv om der også er referencebilleder. Ved billede til video fastlægger det første billede startbilledrammen; et andet billede definerer slutbilledrammen. Referencebilleder styrer identitet eller stil og betyder ikke det samme som billeder ved start og slut.

Grænser, du bør validere før indsendelse

Generering understøtter varigheder som heltal fra 3 til 30 sekunder i 720p eller 1080p. En almindelig prompt er begrænset til 26.000 tegn i dette PoYo-skema. Hver optagelse i multi_prompt accepterer op til 512 tegn; hvis varigheden for en optagelse udelades, er den som standard fem sekunder. Optagelsernes varigheder skal tilsammen give 3–30 sekunder, og en eksplicit varighed på øverste niveau skal være lig med den sum.

Referencer tillader op til 10 billeder, fem videoer og syv motiver inden for en samlet grænse på 15 assets. En første billedramme tæller med i både grænsen for billeder og den samlede grænse. Hver referencevideo eller motivvideo skal vare 3–30 sekunder; deres samlede reelle varighed må ikke overstige 30 sekunder. Rund ikke varigheder ned for at få et for stort input gennem valideringen.

Forstå den første regning

En anmodning på fem sekunder i 720p uden videoinput koster 142,5 kreditter, eller $0.7125 med den aktuelt oplistede omregning. Et videoinput ændrer både taksten og de fakturerbare sekunder. Se priseksemplerne, før du estimerer et workflow med referencevideo eller redigering.

Det officielle produkt til skabere reklamerer med yderligere kontroller, herunder flere nøglebilleder. PoYo's skema her udstiller op til to grænsebilleder og prompts pr. optagelse; send ikke opdigtede felter som keyframes, seed, negative_prompt eller generate_audio til dette endpoint. For fungerende eksempler kan du fortsætte med promptguiden og vejledningen til Omni Reference.

Ofte stillede spørgsmål

Er API-modellens ID kling-4-0? Nej. Det er sidens slug. Model-ID'et i anmodningen er kling-4.0.

Kan jeg anmode om 4K her? Dette PoYo-endpoint accepterer i øjeblikket kun 720p og 1080p. Tjek udbyderens skema i stedet for at kopiere markedsføringens specifikationer for appen til skabere.

Kan jeg bruge et callback? Anmodningen om indsendelse understøtter et callback_url på øverste niveau. Se den aktuelle dokumentation for håndtering af callbacks; pollingeksemplet ovenfor afhænger ikke af det.

Hvor skal jeg starte? Brug først en kort anmodning med kun tekst, gem dens opgave-ID og resultat, og tilføj derefter én inputmodalitet ad gangen i playgroundet.

Share: