how-tos

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

PoYo Team
5 min read
Share:

En maskinist som legger film i en filmfremviser, redaksjonell illustrasjon

Kling 4.0 API på PoYo bruker én modell-ID, kling-4.0, til tekst-til-video, generering fra første/siste bilderute, visuelle referanser og videoredigering. Send inn en forespørsel, ta vare på oppgave-ID-en og poll til oppgaven er ferdig. Denne guiden følger PoYos gjeldende skjema, sjekket 24. oktober 2026; feltnavn fra andre leverandører kan ikke brukes om hverandre.

Åpne Kling 4.0-playgrounden for å prøve inputene visuelt, eller les API-dokumentasjonen.

Generer en første video med cURL

Sett POYO_API_KEY i skallmiljøet ditt, og send deretter inn denne forespørselen på fem sekunder. Hold nøkkelen på serveren din, ikke i nettleserkoden.

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

Les data.task_id fra JSON-svaret; en vellykket innsending er ikke det samme som en ferdig video. Erstatt YOUR_TASK_ID nedenfor med denne verdien:

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

De dokumenterte statusene er not_started, running, finished og failed. Når oppgaven er ferdig, finner du en video-file_url i data.files. Ved feil sjekker du error_message og tar vare på oppgave-ID-en for feilsøking. Du trenger ikke å sende inn en eksisterende oppgave på nytt for å polle den.

En avgrenset polling-løkke i Python

Installer requests og kjør dette på backend. Koden sjekker både HTTP- og applikasjonsfeil, stopper ved en mislykket oppgave og begrenser ventetiden til 30 minutter. Et tidsavbrudd betyr at du bør sjekke den samme oppgaven senere; å gjenta innsendingen automatisk kan opprette en ny jobb som også faktureres.

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)

Velg riktig inputmodus

MålFelt i inputViktig begrensning
Tekst-til-videoprompt eller multi_promptOppgi nøyaktig ett av dem
Første/siste bilderuteimage_urls med én eller to URL-er i rekkefølgeUtelat aspect_ratio
Generering med referanserreference_image_urls, reference_video_urls eller kling_elementsMaks én valgfri første bilderute
Rediger opptakvideo_url og promptIngen image_urls, multi_prompt, reference_video_urls eller aspect_ratio

Feltet for kildevideo velger redigering selv om det også finnes referansebilder. Ved bilde-til-video bestemmer det første bildet startrammen; et eventuelt andre bilde definerer sluttrammen. Referansebilder styrer identitet eller stil og betyr ikke det samme som start- og sluttrammer.

Grenser som er verdt å validere før innsending

Genereringen støtter heltallsvarigheter fra 3 til 30 sekunder i 720p eller 1080p. En vanlig prompt er begrenset til 26 000 tegn i dette PoYo-skjemaet. Hvert multi_prompt-klipp tar opptil 512 tegn; utelatt klippvarighet blir fem sekunder som standard. Klippvarighetene må til sammen utgjøre 3–30 sekunder, og en eksplisitt varighet på toppnivå må være lik denne summen.

Referanser tillater opptil 10 bilder, fem videoer og sju motiver, innenfor en samlet grense på 15 ressurser. En første bilderute teller både mot bildegrensen og totalgrensen. Hver referanse- eller motivvideo må være 3–30 sekunder, og den faktiske samlede varigheten kan ikke overstige 30 sekunder. Ikke rund ned varigheter for å få en for stor input gjennom valideringen.

Forstå den første regningen

En 720p-forespørsel på fem sekunder uten videoinput koster 142,5 kreditter, eller $0.7125 med gjeldende oppgitte omregning. En videoinput endrer både satsen og den fakturerbare varigheten. Se priseksemplene før du anslår kostnaden for en arbeidsflyt med referansevideo eller redigering.

Det offisielle produktet for skapere reklamerer med flere kontroller, blant annet flere nøkkelbilder. PoYos skjema her gir tilgang til opptil to start-/sluttrammer og prompter per klipp; ikke send oppdiktede felt som keyframes, seed, negative_prompt eller generate_audio til dette endepunktet. For fungerende eksempler kan du gå videre til promptguiden og Omni Reference-veiledningen.

Ofte stilte spørsmål

Er modell-ID-en i API-et kling-4-0? Nei. Det er sidens slug. Modell-ID-en i forespørselen er kling-4.0.

Kan jeg be om 4K her? Dette PoYo-endepunktet godtar foreløpig bare 720p og 1080p. Sjekk leverandørens skjema i stedet for å kopiere markedsføringsspesifikasjonene fra appen for skapere.

Kan jeg bruke callback? Innsendingsforespørselen støtter callback_url på toppnivå. Se den gjeldende dokumentasjonen for hvordan callbacks håndteres; polling-eksemplet ovenfor er ikke avhengig av det.

Hvor bør jeg begynne? Bruk først en kort forespørsel med bare tekst, lagre oppgave-ID-en og resultatet, og legg deretter til én inputtype om gangen i playgrounden.

Share: