Developer API Overview
Programmatically generate images, videos, music, speech, and sound effects with the Kolbo API.
The Kolbo Developer API lets you programmatically access 100+ AI models for generating images, videos, music, speech, and sound effects. Use it from any language, or integrate directly into Claude Code via our MCP server.
Quick Start
1. Get an API Key
Create a key from the Developer Console or via the API:
curl -X POST https://api.kolbo.ai/api/api-keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "My App"}'Save the fullKey from the response -- it is only shown once.
2. Generate an Image
When you omit the model field, Kolbo uses Smart Select to automatically pick the best model for your prompt. This is the recommended approach for most use cases.
curl -X POST https://api.kolbo.ai/api/v1/generate/image \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "A sunset over mountains", "aspect_ratio": "16:9"}'Response:
{
"success": true,
"generation_id": "abc123",
"type": "image",
"poll_url": "/api/v1/generate/abc123/status",
"poll_interval_hint": 3
}3. Poll for Results
Replace abc123 with the generation_id from step 2:
curl https://api.kolbo.ai/api/v1/generate/abc123/status \
-H "X-API-Key: YOUR_API_KEY"When complete:
{
"success": true,
"generation_id": "abc123",
"state": "completed",
"progress": 100,
"result": {
"urls": ["https://cdn.kolbo.ai/..."],
"model": "auto",
"prompt_used": "A breathtaking sunset..."
}
}Full Example (JavaScript)
const API_KEY = "YOUR_API_KEY";
const BASE = "https://api.kolbo.ai/api/v1";
async function generateImage(prompt) {
const res = await fetch(`${BASE}/generate/image`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ prompt, aspect_ratio: "16:9" })
});
const { generation_id } = await res.json();
while (true) {
await new Promise((r) => setTimeout(r, 3000));
const status = await fetch(`${BASE}/generate/${generation_id}/status`, {
headers: { "X-API-Key": API_KEY }
}).then((r) => r.json());
if (status.state === "completed") return status.result.urls;
if (status.state === "failed") throw new Error(status.error);
}
}
generateImage("A sunset over mountains").then(console.log);Full Example (Python)
import requests
import time
API_KEY = "YOUR_API_KEY"
BASE = "https://api.kolbo.ai/api/v1"
def generate_image(prompt):
res = requests.post(
f"{BASE}/generate/image",
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"prompt": prompt, "aspect_ratio": "16:9"}
)
generation_id = res.json()["generation_id"]
while True:
time.sleep(3)
status = requests.get(
f"{BASE}/generate/{generation_id}/status",
headers={"X-API-Key": API_KEY}
).json()
if status["state"] == "completed":
return status["result"]["urls"]
if status["state"] == "failed":
raise Exception(status["error"])
urls = generate_image("A sunset over mountains")
print(urls)Generation Types
| Type | Endpoint | Typical Time |
|---|---|---|
| Chat | POST /v1/chat | 2-30s |
| Image | POST /v1/generate/image | 10-30s |
| Image Edit | POST /v1/generate/image-edit | 10-30s |
| Video (text) | POST /v1/generate/video | 1-5 min |
| Video (from image) | POST /v1/generate/video/from-image | 1-5 min |
| Video (from video) | POST /v1/generate/video-from-video | 2-8 min |
| Shorts Creator (long video → shorts) | POST /v1/generate/shorts/analyze | analyze 1-3 min, render 5-20 min |
| Elements (ref → video) | POST /v1/generate/elements | 2-10 min |
| First-Last Frame | POST /v1/generate/first-last-frame | 1-5 min |
| Lipsync | POST /v1/generate/lipsync | 1-10 min |
| Music | POST /v1/generate/music | 30s-2 min |
| Speech | POST /v1/generate/speech | 5-30s |
| Sound Effects | POST /v1/generate/sound | 5-30s |
| Creative Director | POST /v1/generate/creative-director | 30s-3 min |
| 3D Model | POST /v1/generate/3d | 2-15 min |
| Transcription | POST /v1/transcribe | 30s-5 min |
Shorts Creator
Turn one long video (≤30 min, Kolbo media-library URL) into up to 5 restyled vertical shorts. Two-phase job flow: analyze (flat 15 credits, AI picks the best moments) → pick moments + style preset + mode (accents = restyle the strongest beats, cheaper; full = restyle everything) + optional burned-in subtitles → render (credits reserved up-front, failed shorts auto-refund).
| Endpoint | Description |
|---|---|
POST /v1/generate/shorts/analyze | Start analysis of a source video (flat 15 credits) |
GET /v1/generate/shorts/:jobId/status | Poll job state (moments when awaiting selection, shorts + final URLs when rendering/done) |
GET /v1/generate/shorts/presets | List restyle style presets (also GET /v1/presets?type=shorts) |
POST /v1/generate/shorts/:jobId/estimate | Price a selection — free, per-short credits + chunk counts |
POST /v1/generate/shorts/:jobId/render | Render up to 5 shorts (15-90s each) |
POST /v1/generate/shorts/:jobId/cancel | Cancel + refund unused credits |
See Shorts Creator for the full workflow and pricing.
Visual DNA
Create reusable visual identities for characters, products, or styles, then attach them to any generation for consistency.
| Endpoint | Description |
|---|---|
POST /v1/visual-dna | Create a Visual DNA from reference images |
GET /v1/visual-dna | List your Visual DNAs |
GET /v1/visual-dna/:id | Get Visual DNA details |
DELETE /v1/visual-dna/:id | Delete a Visual DNA |
See Visual DNA for details.
Moodboards
Discover and apply style templates (moodboards) to guide the visual direction of your generations.
| Endpoint | Description |
|---|---|
GET /v1/moodboards | List available moodboards (personal + presets) |
GET /v1/moodboards/:id | Get moodboard details |
Pass moodboard_id to image generation, image editing, or Creative Director requests. See Moodboards for details.
Music Library
Search Kolbo's catalog of licensed, ready-made background tracks (distinct from music generation). All endpoints are free (no credits).
| Endpoint | Description |
|---|---|
POST /v1/music-library/search | Keyword search + genre/mood/bpm/duration filters |
POST /v1/music-library/analyze-script | AI: turn a script into a music search |
GET /v1/music-library/catalog | Browse the catalog (paginated) |
GET /v1/music-library/facets | Available genres, moods, instruments + ranges |
GET /v1/music-library/track/:id/audio | Downloadable 128/320/WAV URLs |
GET /v1/music-library/track/:id/related | Stems + alternate versions |
GET /v1/music-library/track/:id/lyrics | Lyrics text + theme |
See Music Library for details.
Stock Library
Unified, multi-source stock media (Kolbo AI's own sound effects + music, Pexels, Unsplash, Pixabay, Coverr, Sketchfab 3D, Freesound, Music) — photos, videos, illustrations, vectors, 3D models, sound effects, music. Find b-roll/references/project assets. All endpoints are free (no credits).
| Endpoint | Description |
|---|---|
GET /v1/stock/sources | List enabled sources + supported media types/filters |
GET /v1/stock/categories | Dynamic category/topic chips per source |
GET /v1/stock/collections | Kolbo SFX category collections + themed packs |
GET /v1/stock/search | Unified search (source=all interleaves providers) |
GET /v1/stock/asset/:source/:id | One asset + download variants + author/license |
POST /v1/stock/analyze-script | AI: turn a script into b-roll search terms |
POST /v1/stock/import | Copy an asset into the media library (CDN copy) |
See Stock Library for details.
Chat
Send messages to 20+ AI models with multi-turn conversation support.
| Endpoint | Description |
|---|---|
POST /v1/chat | Send a chat message (requires polling) |
GET /v1/chat/conversations | List your conversations |
GET /v1/chat/conversations/:id/messages | Get conversation messages |
See Chat for details.
Media Library
Upload local files to the user's Kolbo library, get back a stable CDN URL, and browse everything the user has — uploaded files and AI-generated outputs — with the same filters as the desktop app and Adobe plugin (by project, folder, type, and section).
| Endpoint | Description |
|---|---|
POST /v1/media/upload | Upload a file (multipart) and receive a stable URL |
GET /v1/media | List media — filter by project_id, folder_id, type, category (section), source_type, search, sort, pagination |
GET /v1/media/:id | Fetch one media item (full metadata) |
DELETE /v1/media/:id | Soft-delete (30-day trash) |
POST /v1/media/:id/restore | Restore from trash |
DELETE /v1/media/:id/permanent | Permanent delete (NOT reversible) |
PATCH /v1/media/:id/project | Move item to a different project |
POST /v1/media/bulk/delete | Bulk soft-delete (≤1000) |
POST /v1/media/bulk/restore | Bulk restore (≤1000) |
POST /v1/media/bulk/permanent | Bulk permanent delete (NOT reversible, ≤1000) |
POST /v1/media/bulk/move | Bulk move to project (atomic, ≤1000) |
GET /v1/media/stats | Item counts + total storage bytes |
POST /v1/media/:id/favorite | Mark a media item as favorited (idempotent) |
DELETE /v1/media/:id/favorite | Remove a media item from favorites (idempotent) |
GET /v1/media/folders | List the user's media folders (owned + shared) |
POST /v1/media/folders | Create a folder |
PUT /v1/media/folders/:id | Rename / recolor / re-icon a folder (owner only) |
DELETE /v1/media/folders/:id | Soft-delete a folder (owner only) |
POST /v1/media/folders/:id/items | Add media items to a folder |
DELETE /v1/media/folders/:id/items | Remove media items from a folder |
POST /v1/media/folders/:id/share | Share a folder by user email (owner only) |
DELETE /v1/media/folders/:id/share/:user_id | Revoke folder access (owner only) |
POST /v1/media/folders/:id/move-contents | Move every item in a folder to a project |
See Media Library for the full filter reference and examples.
Presets Discovery
| Endpoint | Description |
|---|---|
GET /v1/presets | List generation presets across image/video/music/text-to-video catalogs (filter with type) |
Projects
Every generation endpoint accepts an optional project_id body field that routes the generation into a specific project. See Projects.
| Endpoint | Description |
|---|---|
GET /v1/projects | List projects you can write into (owned + shared with edit/full/owner) |
PATCH /v1/sessions/:sessionId/project | Move a session (any type) and all its media to another project |
POST/GET /v1/docs, GET/PUT/DELETE /v1/docs/:id, PATCH /v1/docs/:id/share | AI Docs (Magic Pad): author, edit, and share project-scoped documents |
POST /v1/visual-dna/character-sheet | Generate a multi-angle character sheet for stronger character consistency (credits) |
GET/POST /v1/visual-dna/folders, PUT/DELETE /v1/visual-dna/folders/:folderId, PUT /v1/visual-dna/:id/folder | Visual DNA folders: organize characters (contents move to root on delete) |
POST /v1/projects, `PUT /v1/projects/:id(/archive | /unarchive)` |
GET /v1/sessions | List sessions across all types (filter by project/type) |
POST/GET/DELETE /v1/projects/:id/context*, GET/POST /v1/projects/:id/profile* | Project knowledge base (RAG) + synthesized living profile |
POST /v1/moodboards, PUT/DELETE /v1/moodboards/:id | Moodboard create/update/delete (AI style analysis) |
POST /v1/voices/clone, POST /v1/voices/import-elevenlabs, DELETE /v1/voices/:id | Custom voices: clone, import, delete |
POST /v1/video/trim, GET /v1/video/trim/:jobId | Frame-accurate video trim (async job) |
Other Endpoints
| Endpoint | Description |
|---|---|
GET /v1/models | List available models |
GET /v1/voices | List TTS voices |
GET /v1/account/credits | Check credit balance |
GET /v1/generate/:id/status | Poll generation status |
GET /v1/generate/creative-director/:id/status | Poll Creative Director status (per-scene) |
Authentication
All requests require the X-API-Key header with your API key:
X-API-Key: YOUR_API_KEYSee Authentication for details on creating and managing keys.
Claude Code Integration
Use Kolbo as native tools in Claude Code via our MCP server. See Claude Code Setup.