Explore/Kling O3
Video

Kling O3

Generates and edits videos using image or video references, multi-shot scenes and native sound.

View docs
import { config, higgsfield } from "@higgsfield/client/v2";config({  credentials: process.env.HF_CREDENTIALS,});const result = await higgsfield.subscribe(  "kling-video/o3/first-last-frame",  {    input: {      "mode": "pro",      "sound": "off",      "duration": 5,      "multi_shots": false    },    withPolling: true,  },);console.log(result);

Kling O3 uses the model ID kling-video/o3/first-last-frame. Kling O3 First/Last Frame generates videos from a starting image and optional ending image, allowing single or multiple prompt inputs to control the video content. Users can specify duration, aspect ratio, and sound settings to customize the output video.

1. Calling the API

Send requests to https://api.higgsfield.ai/kling-video/o3/first-last-frame with a JSON body matching the parameters below.

Install

Install an official server-side SDK. cURL needs no package.

npm install @higgsfield/client

Setup

Keep credentials in server-side environment variables. The SDKs accept the same KEY_ID:KEY_SECRET value under their documented variable names.

export HF_CREDENTIALS="YOUR_KEY_ID:YOUR_KEY_SECRET" # TypeScript export HF_KEY="YOUR_KEY_ID:YOUR_KEY_SECRET" # Python and cURL

Request parameters

ParameterTypeRequiredDefaultDescription
modestringNo"pro"Options: std, pro, 4k.
soundstringNo"off"Options: on, off.
promptstringNo—Prompt.
durationintegerNo5Duration. Minimum: 3. Maximum: 15.
multi_shotsbooleanNofalse
aspect_ratiostringNo—Options: 16:9, 9:16, 1:1.
multi_promptarray[object]No—
last_frame_urlstringNo—Last frame URL.
first_frame_urlstringNo—First frame URL.

2. Authentication

The official SDKs read credentials from the server environment and send the required Authorization: Key KEY_ID:KEY_SECRET header.

API Key

Never expose the secret in browser-side code or commit it to source control. The TypeScript SDK is server-side only. For direct HTTP calls, use:

Authorization: Key $HF_KEY

3. Queue

subscribe submits the asynchronous request and waits for a terminal result. The TypeScript SDK polls automatically when withPolling: true; the Python SDK's synchronous subscribe call also waits. A completed request returns the generated file in the video field.

Submit and wait

import { config, higgsfield } from "@higgsfield/client/v2"; config({ credentials: process.env.HF_CREDENTIALS, }); const result = await higgsfield.subscribe( "kling-video/o3/first-last-frame", { input: { "mode": "pro", "sound": "off", "duration": 5, "multi_shots": false }, withPolling: true, }, ); console.log(result);

Explicit lifecycle control

Use the Python SDK when a worker needs explicit status, result, or cancellation control for an existing request. The TypeScript v2 client currently exposes automatic polling through subscribe.

import higgsfield_client request_id = "{request_id}" status = higgsfield_client.status(request_id=request_id) result = higgsfield_client.result(request_id=request_id) higgsfield_client.cancel(request_id=request_id)