
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ål | Felter i input | Vigtig begrænsning |
|---|---|---|
| Tekst til video | prompt eller multi_prompt | Angiv præcis ét |
| Første/sidste billedramme | image_urls med én eller to URL'er i rækkefølge | Udelad aspect_ratio |
| Generering med reference | reference_image_urls, reference_video_urls eller kling_elements | Højst én valgfri første billedramme |
| Redigér optagelser | video_url og prompt | Ingen 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.