TL;DR Je kunt ondersteunde Kling-videomodellen benaderen via CometAPI met een CometAPI-account en API-sleutel, in plaats van een apart Kling-ontwikkelaars-onboardingsproces te doorlopen. De huidige tekst-naar-video route is POST /kling/v1/videos/text2video. Deze retourneert een taak-ID die je backend blijft pollen totdat de taak de status succeed of failed bereikt. Modelbeschikbaarheid, parameters, prijzen en accountgeschiktheid kunnen wijzigen; verifieer daarom de actuele modelcatalogus en API-documentatie vóór productie-uitrol.
Direct antwoord
De praktische route is de Kling-modelcatalogus van CometAPI. Als het benodigde Kling-model beschikbaar is voor je CometAPI-account, kan je server zich authenticeren met een CometAPI-API-sleutel en het corresponderende Kling-compatibele endpoint aanroepen. Voor deze route is geen apart Kling-API-aanvraagproces onderdeel van de integratiestappen.
Dit onderscheid is belangrijk voor teams die CometAPI al voor andere modellen gebruiken. De applicatie behoudt één plaats voor het beheren van inloggegevens en één providerrelatie, terwijl er een Kling-videoworkflow wordt toegevoegd. Je code moet nog steeds het videospecifieke verzoekschema en de asynchrone taaklevenscyclus van Kling gebruiken; “één API-sleutel” betekent niet dat elke provider exact hetzelfde request body deelt.
Dit artikel richt zich op tekst-naar-video omdat dit de kleinste zinvolle integratie is. CometAPI documenteert ook beeld-naar-video en andere Kling-workflows, maar elk heeft zijn eigen endpoint en parameterbeperkingen. Begin met één geverifieerd pad en voeg pas mogelijkheden toe nadat je de actuele documentatie hebt gecontroleerd.
Waarom deze route nuttig kan zijn voor een ontwikkelteam
Het directe voordeel is operationeel en niet magisch. Een team dat CometAPI al gebruikt, kan een beschikbare Kling-workflow toevoegen zonder een extra directe providerintegratie te bouwen, nog een credential te distribueren of een apart accountbeheerpad te onderhouden. Dat kan het aantal secrets, factureringsrelaties en provider-specifieke clientconfiguraties dat je platform moet beheren, verminderen.
Het tweede voordeel is architectonisch. Je applicatie kan een kleine interne videogeneratiecontractlaag aanbieden—prompt, workflow, model, opties en jobstatus—terwijl een provider-adapter dat contract vertaalt naar het gedocumenteerde Kling-verzoek. Als het team later een ander videomodel evalueert, kan het productgerichte jobmodel stabiel blijven, ook al verschillen endpointpaden, parameters en outputmetadata.
De beperking is even belangrijk: een geconsolideerde toegangslaag maakt de onderliggende modellen niet uitwisselbaar. Promptgedrag, geaccepteerde media, latentie, prijzen, veiligheidsbeleid en resultaatschema’s kunnen variëren. Houd die verschillen zichtbaar in configuratie en tests, in plaats van ze te verbergen achter niet-ondersteunde aannames.
Wat deze toegangsroute verandert—en wat niet
Wat verandert. Je maakt en beheert een CometAPI-sleutel, verstuurt verzoeken naar CometAPI’s Kling-compatibele API en volgt het verbruik vanuit de CometAPI-kant. Dit verwijdert een apart direct Kling-onboardingsstap uit dit specifieke toegangspad.
Wat niet verandert. Kling blijft de onderliggende modelfamilie. Provider-specifieke parameters, generatiegedrag, regels voor acceptabel gebruik, modelbeschikbaarheid en outputkenmerken blijven van belang. De documentatie van CometAPI vermeldt ook dat provider request- en responsevelden kunnen verschillen, dus behandel de live endpointreferentie als het contract voor je implementatie.
Wat je moet verifiëren voordat je je commit. Bevestig dat je account toegang heeft tot de vereiste model-ID, bekijk de actuele prijs en ratelimieten, en voer een kleine geauthenticeerde test uit. Ontwerp geen productieworkflow rond een modelnaam uit een oude blogpost of gecachte voorbeeldcode.
Voordat je begint
Je hebt een CometAPI-account, een API-sleutel die op je server is opgeslagen, en een backend nodig die een asynchrone job kan uitvoeren. Bewaar de sleutel in een omgevingsvariabele zoals COMETAPI_KEY; stel deze niet bloot in browser- of mobiele clientcode.
- Open de Kling-modelcatalogus en bevestig dat het model dat je wilt gebruiken momenteel voor jouw account is vermeld.
- Bekijk de actuele Kling tekst-naar-video API-referentie. Op het moment van verificatie gebruikt het gedocumenteerde voorbeeld
kling-v3. - Maak een serverside API-sleutel in de CometAPI-console en stel deze in je runtime-omgeving in.
- Bepaal waar je service de taak-ID en de uiteindelijke video opslaat. Het generatieverzoek retourneert een taak, niet het voltooide videobestand.
Kies de Kling-workflow voordat je het verzoek ontwerpt
Begin bij het materiaal dat je product al heeft. Als de gebruiker alleen een geschreven concept heeft, is tekst-naar-video het directe pad. Als de gebruiker een stilstaand beeld heeft dat als visueel anker moet blijven dienen, gebruik dan de apart gedocumenteerde beeld-naar-video route. Voeg geen afbeeldingsveld toe aan een tekst-naar-video verzoek en ga er niet van uit dat de API de workflow afleidt.
| Workflow | Huidig aanmaakpad | Gebruik dit wanneer |
|---|---|---|
| Text to video | POST /kling/v1/videos/text2video | De input is een geschreven scène- of bewegingsconcept en er hoeft geen bronafbeelding behouden te blijven. |
| Image to video | POST /kling/v1/videos/image2video | De input bevat één bronafbeelding die de gegenereerde beweging en visuele identiteit moet sturen. |
De actuele beeld-naar-video referentie accepteert een publieke afbeeldings-URL of een base64-afbeeldingstring en retourneert een asynchrone taak. Meer gespecialiseerde Kling-workflows hebben eigen pagina’s en verzoekbeperkingen. Voeg ze één voor één toe wanneer het productvereiste en de actuele documentatie de extra adapter rechtvaardigen.
Gebruik voor een eerste productieproef één workflow, één geverifieerde model-ID, een korte duur en een kleine set representatieve prompts. Zo isoleer je accounttoegang en taakorkestratie van subjectieve outputevaluatie. Zodra de pijplijn betrouwbaar is, vergelijk je modi of modellen met een vaste evaluatieset in plaats van meerdere variabelen in dezelfde test te wijzigen.
Dien je eerste Kling tekst-naar-video verzoek in
Het huidige tekst-naar-video endpoint accepteert JSON en Bearer-authenticatie. Begin met een korte prompt en de kleinste ondersteunde duur. De volgende aanvraag gebruikt alleen velden die in de actuele CometAPI-referentie worden getoond:
curl https://api.cometapi.com/kling/v1/videos/text2video \
-H "Authorization: Bearer $COMETAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A small ceramic cup on a wooden table, steam rising in soft morning light",
"model_name": "kling-v3",
"mode": "std",
"duration": "5",
"sound": "off"
}'
Een succesvolle inzending retourneert een object met data.task_id en een taakstatus. Sla die taak-ID op bij het jobrecord van je applicatie. Houd de HTTP-verbinding niet open terwijl de video wordt gerenderd.
| Field | Gedocumenteerde waarden | Implementatie-opmerking |
|---|---|---|
| model_name | Huidige enum bevat kling-v3 en eerdere tracks | Bevestig de live enum en accountbeschikbaarheid vóór uitrol. |
| duration | 5 of 10 | Begin met 5 seconden om de workflow te valideren. |
| aspect_ratio | 16:9, 9:16, 1:1 | Laat dit alleen weg als de gedocumenteerde default past bij je deliverysurface. |
| mode | std of pro | De referentie beschrijft pro als hogere kwaliteit en hogere kosten. |
| sound | on of off | Dit geldt alleen voor modeltracks die gegenereerde audio ondersteunen. |
Behandel de asynchrone taak veilig
Kling-generatie is asynchroon. Voor tekst-naar-video, poll GET /kling/v1/videos/text2video/{task_id}. De taakspecificatie van CometAPI zegt dat een response de taak direct of binnen een data-omhulsel kan teruggeven, dus het voorbeeld normaliseert beide vormen. Het behandelt ook elke niet-terminale staat als “blijf wachten” in plaats van uit te gaan van een vaste lijst tussentoestanden.
import os
import time
import requests
API_KEY = os.environ["COMETAPI_KEY"]
BASE_URL = "https://api.cometapi.com/kling/v1/videos/text2video"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
def submit_video(prompt: str) -> str:
response = requests.post(
BASE_URL,
headers=HEADERS,
json={
"prompt": prompt,
"model_name": "kling-v3",
"mode": "std",
"duration": "5",
"sound": "off",
},
timeout=30,
)
response.raise_for_status()
payload = response.json()
return payload["data"]["task_id"]
def wait_for_video(task_id: str, timeout_seconds: int = 600) -> str:
deadline = time.monotonic() + timeout_seconds
poll_url = f"{BASE_URL}/{task_id}"
while time.monotonic() < deadline:
response = requests.get(poll_url, headers=HEADERS, timeout=30)
response.raise_for_status()
payload = response.json()
task = payload.get("data") or payload
status = task.get("task_status")
if status == "succeed":
videos = task.get("task_result", {}).get("videos", [])
if not videos or not videos[0].get("url"):
raise RuntimeError("Task succeeded without a video URL")
return videos[0]["url"]
if status == "failed":
detail = task.get("task_status_msg") or task.get("task_result")
raise RuntimeError(f"Kling task failed: {detail}")
time.sleep(10)
raise TimeoutError(f"Kling task {task_id} exceeded {timeout_seconds}s")
task_id = submit_video(
"A small ceramic cup on a wooden table, steam rising in soft morning light"
)
video_url = wait_for_video(task_id)
print(video_url)
De terminale succestekst is succeed, niet succeeded. Wanneer een taak voltooid is, kopieer het gegenereerde asset naar opslag die je zelf beheert als je product retentie vereist. Leverings-URL’s van de provider moeten niet worden gezien als permanente applicatieopslag.
Voor grotere workloads gebruik je een queue of worker in plaats van te pollen binnen een webrequest. CometAPI documenteert ook callback-URL’s voor Kling-taken. Als je webhooks gebruikt, authenticeer en dedupliceer callback-evenementen, en behoud een polling-fallback voor gemiste leveringen.
Ontwerp de levenscyclus van de applicatiejob voordat je schaalt
Behandel de providertaak als één onderdeel van je eigen jobrecord. Sla een applicatie-job-ID, workflow, aangevraagd model, providertaak-ID, query-URL, huidige status, indientijdstip, laatste polltijd en outputlocatie op. Dit geeft je support- en operationsteams voldoende context om een mislukte of trage generatie te onderzoeken zonder ruwe requestlogs te hoeven doorzoeken.
Probeer het aanmaakverzoek niet opnieuw alleen omdat de client geen response ontving. De provider kan de taak al hebben aangemaakt. Persist je lokale job vóór verzending, sla de geretourneerde taak-ID direct op, en scheid herhaalde aanmaakpogingen van status-query-retries. De huidige tekst-naar-video referentie documenteert ook external_task_id voor applicatietracking; bevestig het actuele gedrag voordat je hierop vertrouwt als deduplicatiemechanisme.
const TERMINAL = new Set(["succeed", "failed"]);
function normalizeKlingTask(payload) {
const task = payload?.data ?? payload;
if (!task?.task_id || !task?.task_status) {
throw new Error("Kling response is missing task identity or status");
}
return task;
}
async function refreshVideoJob(job, apiKey) {
const response = await fetch(job.queryUrl, {
headers: { Authorization: `Bearer ${apiKey}` },
});
if (!response.ok) {
throw new Error(`Task query failed with HTTP ${response.status}`);
}
const task = normalizeKlingTask(await response.json());
const outputUrl = task.task_result?.videos?.[0]?.url ?? null;
return {
...job,
providerTaskId: task.task_id,
providerStatus: task.task_status,
terminal: TERMINAL.has(task.task_status),
outputUrl,
failureDetail: task.task_status_msg ?? null,
checkedAt: new Date().toISOString(),
};
}
Dit voorbeeld vertaalt opzettelijk niet elke mogelijke tussentijdse providerstatus naar een productbelofte. Je worker houdt niet-terminale taken actief, behandelt succeed en failed expliciet, en registreert de ruwe providerstatus voor debugging. Voeg een aparte applicatietime-out toe zodat een vastgelopen taak niet voor onbepaalde tijd open blijft.
Gebruik polling als basis omdat de taak-ID opvraagbaar blijft. Wanneer het geselecteerde endpoint callback_url ondersteunt, kan een webhook herhaalde statusverzoeken verminderen, maar het mag niet je enige herstelmechanisme worden. De officiële gids voor polling en webhooks merkt op dat callback-payloads provider-specifiek kunnen zijn. Sla het ruwe event op, maak de verwerking idempotent op taak-ID, retourneer snel een succesvolle HTTP-respons, en verzoen de terminale status via polling.
Productiechecklist voor ontwikkelteams
- Valideer het model tijdens runtime. Controleer de actuele catalogus en faal duidelijk wanneer een aangevraagd model niet beschikbaar is. Vervang niet stilzwijgend door een ander model als het outputgedrag ertoe doet.
- Scheid indienen van ophalen. Sla de CometAPI-taak-ID, je eigen job-ID, het geselecteerde model en tijdstempels op, zodat retries geen dubbel werk creëren.
- Begrens polling. Gebruik een time-out, exponentiële backoff of een redelijk vast interval, en een maximum aantal retries. Bekijk CometAPI’s richtlijnen voor ratelimieten en concurrency voordat je de paralleliteit verhoogt.
- Classificeer fouten. Retry geen ongeldige parameters of authenticatiefouten. Pas backoff toe op retrybare ratelimit- en platformfouten, volgens de actuele retry-gids.
- Bescherm credentials en inputs. Houd API-sleutels aan de serverzijde, log geen secrets, en bevestig dat gebruikers rechten hebben op alle prompts, afbeeldingen of andere bronassets die ze aanleveren.
- Meet de volledige job. Volg indieningssucces, wachttijd, generatietijd, terminale faalratio, time-outratio, succes van outputophalen en kosten per model en modus.
- Persisteer outputs bewust. Download voltooide assets naar eigen, gecontroleerde opslag wanneer je product duurzame toegang nodig heeft, en pas dan je retentie- en verwijderingsbeleid toe.
Praktische FAQ’s
Heb ik voor deze route een aparte Kling-ontwikkelaarsaccount nodig?
Er lijkt geen aparte Kling-ontwikkelaars-onboardingsstap in de integratiestroom van CometAPI te zitten. Je gebruikt een CometAPI-account en API-sleutel. Toegang hangt nog steeds af van of het model beschikbaar is voor jouw CometAPI-account en regio, dus bevestig dat voordat je je commit naar productie.
Is de Kling API volledig OpenAI-compatibel?
Niet voor de hier getoonde videoworkflow. Deze gebruikt Kling-specifieke routes zoals /kling/v1/videos/text2video en Kling-specifieke velden. Je kunt de credential via CometAPI beheren, maar je adapter moet het provider-specifieke schema behouden.
Welke Kling-model-ID moet ik gebruiken?
De huidige CometAPI-tekst-naar-video referentie gebruikt kling-v3 in het eerste werkende voorbeeld en vermeldt verschillende eerdere modeltracks. Gebruik een model-ID uit de live endpoint-enum en verifieer dat deze is ingeschakeld voor jouw account. Ga er niet van uit dat het nieuwste model overal beschikbaar is.
Waarom bevat de eerste response geen video?
Videogeneratie draait als een asynchrone taak. De initiële response retourneert een taak-ID. Poll de bijbehorende queryroute totdat task_status succeed of failed wordt en lees dan de resultmetadata.
Moet ik pollen of een callback-URL gebruiken?
Pollen is eenvoudiger voor een eerste integratie. Callbacks verminderen herhaalde verzoeken op schaal, maar vereisen een geauthenticeerde, idempotente ontvanger en herstellogica. Veel productiesystemen gebruiken callbacks als primaire pad en polling als fallback.
Kan ik image-to-video via hetzelfde endpoint gebruiken?
Nee. CometAPI documenteert image-to-video onder een aparte route, /kling/v1/videos/image2video. Volg het huidige verzoekschema van dat endpoint in plaats van een afbeeldingsveld toe te voegen aan het tekst-naar-video voorbeeld.
Moet ik beginnen met standaard- of professionele modus?
Gebruik std om authenticatie, requestvorm, taakhouder, polling en outputophalen te valideren. De huidige referentie beschrijft pro als een modus met hogere kwaliteit en hogere kosten. Evalueer deze met representatieve prompts zodra de basisworkflow werkt, en vergelijk outputkwaliteit samen met generatietijd en werkelijke kosten.
Hoe voorkom ik dubbele generaties tijdens retries?
Maak een applicatiejobrecord aan voordat je de API aanroept en sla de geretourneerde providertaak-ID direct op. Herhaal statusqueries onafhankelijk van aanmaakverzoeken. Ga er niet van uit dat het herhalen van dezelfde POST idempotent is. Het endpoint documenteert momenteel external_task_id voor tracking, maar verifieer het actuele semantiek voordat je dit als deduplicatiegarantie behandelt.
Conclusie
Voor een ontwikkelteam in de VS dat Kling-videogeneratie wil testen zonder een apart direct Kling-ontwikkelaarsaanvraagproces te doorlopen, biedt CometAPI een gedocumenteerde route: verifieer dat het vereiste Kling-model beschikbaar is voor het account, authenticeer met een CometAPI-sleutel, roep het workflow-specifieke endpoint aan, en volg de asynchrone taak tot een terminale status.
De praktische engineeringwaarde is gecentraliseerde toegang en een herbruikbaar applicatiejobmodel—niet de aanname dat elke videoprovider hetzelfde gedrag vertoont. Houd voor elke workflow een dunne adapter, persisteer taakidentiteit en output bewust, en behoud polling als herstelpad, zelfs wanneer callbacks zijn ingeschakeld.
Een veilige uitrol is klein en meetbaar: valideer één model en één workflow, dien korte, goedkope jobs in, registreer terminale succes- en faalratio’s, verifieer het ophalen van outputs, en vergelijk werkelijke kosten en latentie met je productvereisten. Breid pas uit naar beeld-naar-video of aanvullende Kling-workflows nadat de actuele documentatie en je doelaccount zijn gecontroleerd.
