Docs
Model credit pricing, API reference, generation examples, and authentication rules in one dense reference page.
Model pricing
A quick model catalog with credit costs. Prices can vary by duration, resolution, provider mode, sound, and usage tokens.
image
17 models| Model | Price |
|---|---|
Flux 2 Flex flux-2-flex | 14 credits |
Flux 2 Pro flux-2-pro | 5 credits |
GPT Image 1.5 gpt-image-1.5 | 4 credits |
GPT Image 2 gpt-image-2 | 12 credits |
GPT-4o Image gpt-4o-image | 6 credits |
Grok Image grok-imagine-text-to-image | 4 credits |
Input Image image-passthrough | 0 credits |
Nano Banana nano-banana | 4 credits |
Nano Banana 2 nano-banana-2 | 8-18 credits |
Nano Banana Pro nano-banana-pro | 18-24 credits |
Remove Background recraft-remove-background | 1 credits |
Seedream 4.0 bytedance-seedream-v4 | 7 credits |
Seedream 4.5 seedream-4.5-text-to-image | 6.5 credits |
Seedream 4.5 Edit seedream-4.5-edit | 6.5 credits |
Seedream 5 Lite seedream-5-lite | 5.5 credits |
Topaz Image Upscale topaz-image-upscale | 10-40 credits |
Z-Image z-image | 0.8 credits |
video
15 models| Model | Price |
|---|---|
Add Audio add-audio | 2 credits |
Add Subtitles add-subtitles | 2 credits |
Google Veo 3.1 veo3 | 30-370 credits |
Grok Video Image to Video grok-imagine-image-to-video | 10-30 credits |
Grok Video Text to Video grok-imagine-text-to-video | 10-30 credits |
Input Video video-passthrough | 0 credits |
Kling 2.6 kling-2.6 | 55-220 credits |
Kling 2.6 Motion kling-2.6/motion-control | 6-9 credits/s |
Kling 3.0 kling-3.0 | 14-27 credits/s |
Kling 3.0 Elements kling-3.0-elements | 14-27 credits/s |
Kling 3.0 Motion kling-3.0/motion-control | 20-27 credits/s |
Seedance 2.0 seedance-2.0-kie | 11.5-102 credits/s |
Seedance 2.0 Fast seedance-2.0-fast | 9-33 credits/s |
Stitch Videos stitch-videos | 2 credits |
Topaz Video Upscale topaz-video-upscale | 8 credits/s (1x/2x), 14 credits/s (4x) |
audio
7 models| Model | Price |
|---|---|
Audio Isolation elevenlabs-audio-isolation | 0.2 credits/s |
ElevenLabs TTS V2 elevenlabs-tts-v2 | 6-12 credits |
ElevenLabs TTS V3 elevenlabs-text-to-dialogue | 14 credits |
Input Audio audio-passthrough | 0 credits |
Sound Effects V2 elevenlabs-sound-effect-v2 | 0.24 credits/s |
Suno Cover Audio suno-cover-audio | 12 credits |
Suno Create Music suno-create-music | 12 credits |
text
8 models| Model | Price |
|---|---|
Claude Haiku 4.5 claude-haiku-4-5 | 2 credits |
Claude Opus 4.6 claude-opus-4-6 | 2-8 credits est. |
Claude Sonnet 4.6 claude-sonnet-4-6 | 1-6 credits est. |
DeepSeek deepseek-chat | 2 credits |
Gemini 3.1 Pro gemini-3.1-pro | 1-5 credits est. |
GPT-5.2 gpt-5.2 | 2-7 credits est. |
Input Text text-passthrough | 0 credits |
Prompt Enhancer prompt-enhancer | 4 credits |
utility
14 models| Model | Price |
|---|---|
Combine Text combine-text | 0 credits |
Composition composition-render | 3 credits |
Compositor V2 compositor-v2 | 3 credits |
Extract Frame extract-frame | 2 credits |
JSON Parser json-parser | 0 credits |
Last Frame last-frame | 2 credits |
Noise / Grid Overlay noise-grid-overlay | ~3 credits |
Reference Asset reference-asset | 0 credits |
Remove Silence remove-silence | 2 credits |
Resize / Crop resize-crop-image | 2 credits |
Speech to Text elevenlabs-stt | 3.5 credits/min |
Text Passthrough prompt-concatenator | 0 credits |
Timeline Stitch timeline-stitch | 2 credits |
Trim Video trim-video | 2 credits |
API Reference
Authentication, endpoints, request schema, examples, GPT Actions, MCP setup, and common errors for building integrations.
Quickstart
The public API is designed around asynchronous media jobs. Send a generation request, store the returned generation_id, then poll until completed or failed.
Generation lifecycle
Create an API key from your Kubflow account on a Growth plan or higher.
Call POST /api/v1/generations with category, model, prompt, and model params.
Poll the returned status_url until status is completed, failed, or canceled.
OpenAPI schema
Use the schema for generated SDKs, GPT Actions, or internal tooling.
https://app.kubflow.com/api/v1/openapi.jsonAuthentication
Every private endpoint accepts a bearer token. Header aliases are also supported for clients that cannot set Authorization.
Preferred
Authorization: Bearer kf_live_YOUR_KEYAccepted aliases
x-kubflow-api-key: kf_live_YOUR_KEY
x-api-key: kf_live_YOUR_KEYEndpoints
The API surface is intentionally small. Model capability and parameter detail should be read from GET /api/v1/models when building dynamic integrations.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/openapi.json | Public OpenAPI schema for tooling and GPT Actions. |
| GET | /api/v1/me | Returns the authenticated account, plan, and API access state. |
| GET | /api/v1/models | Lists available API models. Optional category=image or category=video. |
| POST | /api/v1/generations | Creates an image or video generation job. |
| GET | /api/v1/generations/{generation_id} | Polls job state, progress, result URLs, outputs, and errors. |
Request schema
Put common fields at the top level. Model-specific controls belong inside params so integrations can swap models without changing the transport shape.
| Field | Type | Description |
|---|---|---|
| model | string | Required. Model id, for example gpt-image-2 or kling-3.0. |
| category | image | video | Optional but recommended. Direct API generation currently accepts image and video. |
| prompt | string | Top-level prompt. You can also pass params.prompt. |
| params | object | Model-specific inputs such as aspect_ratio, resolution, duration, image_url, video_url, sound, or mode. |
Examples
These examples cover text-to-image, text-to-video, image-to-video, and status polling. Use real file URLs for image_url or video_url inputs.
curl -X POST https://app.kubflow.com/api/v1/generations \ -H "Authorization: Bearer kf_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{
"category": "image",
"model": "gpt-image-2",
"prompt": "A clean studio product photo of an orange running shoe",
"params": {
"aspect_ratio": "1:1",
"resolution": "1K"
}
}'curl -X POST https://app.kubflow.com/api/v1/generations \ -H "Authorization: Bearer kf_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{
"category": "video",
"model": "kling-3.0",
"prompt": "A slow push-in on a glass perfume bottle with orange reflections",
"params": {
"duration": 5,
"aspect_ratio": "9:16",
"mode": "pro",
"sound": false
}
}'curl -X POST https://app.kubflow.com/api/v1/generations \ -H "Authorization: Bearer kf_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{
"category": "video",
"model": "veo3",
"prompt": "Animate the provided product photo into a premium 6 second ad shot",
"params": {
"image_url": "https://example.com/product.png",
"model": "veo3_fast",
"resolution": "1080p",
"aspect_ratio": "16:9"
}
}'curl https://app.kubflow.com/api/v1/generations/gen_123 \ -H "Authorization: Bearer kf_live_YOUR_KEY"{
"generation_id": "gen_123",
"status": "completed",
"progress": 100,
"result_url": "https://...",
"outputs": ["https://..."],
"error": null
}GPT Actions
Use the OpenAPI schema as the source of truth, then keep action instructions short and explicit about polling.
Action setup
Suggested instruction
When a user asks to create media, call Kubflow to start the generation. Then poll the returned status_url and return the final result_url or explain the failure from the error field.
MCP setup
Use Kubflow MCP when Claude Code, Codex, Cursor, ChatGPT, Windsurf, Zed, or another MCP-capable agent should generate images and videos through a Kubflow API key.
What the agent can do
Available tools
Requirements
cd server
pip install -r requirements.txtEnvironment
Set these variables for the MCP server. Use http://localhost:8000 as the base URL for local backend testing.
KUBFLOW_API_KEY=kf_live_YOUR_KEY
KUBFLOW_API_BASE_URL=https://app.kubflow.comClaude Code
Local coding agents should use stdio transport.
claude mcp add --transport stdio kubflow \
--env KUBFLOW_API_KEY=kf_live_YOUR_KEY \
--env KUBFLOW_API_BASE_URL=https://app.kubflow.com \
-- python C:/path/to/Cubeflow/server/app/mcp_server.pyCodex config.toml
[mcp_servers.kubflow]
command = "python"
args = ["C:/path/to/Cubeflow/server/app/mcp_server.py"]
startup_timeout_sec = 20
tool_timeout_sec = 180
enabled = true
[mcp_servers.kubflow.env]
KUBFLOW_API_KEY = "kf_live_YOUR_KEY"
KUBFLOW_API_BASE_URL = "https://app.kubflow.com"Cursor .cursor/mcp.json
{
"mcpServers": {
"kubflow": {
"command": "python",
"args": ["C:/path/to/Cubeflow/server/app/mcp_server.py"],
"env": {
"KUBFLOW_API_KEY": "kf_live_YOUR_KEY",
"KUBFLOW_API_BASE_URL": "https://app.kubflow.com"
}
}
}
}Hosted MCP
Use Streamable HTTP behind HTTPS. Add OAuth or per-user auth before public multi-user use.
$env:KUBFLOW_API_KEY = "kf_live_YOUR_KEY"
$env:KUBFLOW_API_BASE_URL = "https://app.kubflow.com"
$env:KUBFLOW_MCP_HOST = "0.0.0.0"
$env:KUBFLOW_MCP_PORT = "8000"
python C:/path/to/Cubeflow/server/app/mcp_server.py --transport streamable-httphttps://your-domain.example/mcpSuggested instructions
Use Kubflow when the user asks to generate an image or video.
List models first if the user has not chosen one.
Create a generation, then poll status until it succeeds or fails.
Return result_url only after Kubflow returns it.
Do not start duplicate generations unless the user asks for another attempt.
Kubflow API calls spend the connected account's credits.Common errors
Most integration issues are authentication, plan access, missing prompt or model fields, unsupported category, or provider-specific parameter mismatches.
| Status | Meaning | Fix |
|---|---|---|
| 401 | Missing or invalid API key. | Send Authorization: Bearer kf_live_YOUR_KEY or a supported API key header. |
| 403 | Account plan does not have API access. | Use a Growth plan or an approved account. |
| 400 | Missing model, prompt, category, or required params. | Check the model table and GET /api/v1/models for required inputs. |
| 404 | Generation was not found for the authenticated user. | Confirm generation_id and API key ownership. |
| 5xx | Provider or Kubflow processing error. | Retry later or surface the returned error message. |


