Kolbo.AIKolbo.AI Docs
Developer API

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

TypeEndpointTypical Time
ChatPOST /v1/chat2-30s
ImagePOST /v1/generate/image10-30s
Image EditPOST /v1/generate/image-edit10-30s
Video (text)POST /v1/generate/video1-5 min
Video (from image)POST /v1/generate/video/from-image1-5 min
Video (from video)POST /v1/generate/video-from-video2-8 min
Shorts Creator (long video → shorts)POST /v1/generate/shorts/analyzeanalyze 1-3 min, render 5-20 min
Elements (ref → video)POST /v1/generate/elements2-10 min
First-Last FramePOST /v1/generate/first-last-frame1-5 min
LipsyncPOST /v1/generate/lipsync1-10 min
MusicPOST /v1/generate/music30s-2 min
SpeechPOST /v1/generate/speech5-30s
Sound EffectsPOST /v1/generate/sound5-30s
Creative DirectorPOST /v1/generate/creative-director30s-3 min
3D ModelPOST /v1/generate/3d2-15 min
TranscriptionPOST /v1/transcribe30s-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).

EndpointDescription
POST /v1/generate/shorts/analyzeStart analysis of a source video (flat 15 credits)
GET /v1/generate/shorts/:jobId/statusPoll job state (moments when awaiting selection, shorts + final URLs when rendering/done)
GET /v1/generate/shorts/presetsList restyle style presets (also GET /v1/presets?type=shorts)
POST /v1/generate/shorts/:jobId/estimatePrice a selection — free, per-short credits + chunk counts
POST /v1/generate/shorts/:jobId/renderRender up to 5 shorts (15-90s each)
POST /v1/generate/shorts/:jobId/cancelCancel + 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.

EndpointDescription
POST /v1/visual-dnaCreate a Visual DNA from reference images
GET /v1/visual-dnaList your Visual DNAs
GET /v1/visual-dna/:idGet Visual DNA details
DELETE /v1/visual-dna/:idDelete a Visual DNA

See Visual DNA for details.

Moodboards

Discover and apply style templates (moodboards) to guide the visual direction of your generations.

EndpointDescription
GET /v1/moodboardsList available moodboards (personal + presets)
GET /v1/moodboards/:idGet 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).

EndpointDescription
POST /v1/music-library/searchKeyword search + genre/mood/bpm/duration filters
POST /v1/music-library/analyze-scriptAI: turn a script into a music search
GET /v1/music-library/catalogBrowse the catalog (paginated)
GET /v1/music-library/facetsAvailable genres, moods, instruments + ranges
GET /v1/music-library/track/:id/audioDownloadable 128/320/WAV URLs
GET /v1/music-library/track/:id/relatedStems + alternate versions
GET /v1/music-library/track/:id/lyricsLyrics 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).

EndpointDescription
GET /v1/stock/sourcesList enabled sources + supported media types/filters
GET /v1/stock/categoriesDynamic category/topic chips per source
GET /v1/stock/collectionsKolbo SFX category collections + themed packs
GET /v1/stock/searchUnified search (source=all interleaves providers)
GET /v1/stock/asset/:source/:idOne asset + download variants + author/license
POST /v1/stock/analyze-scriptAI: turn a script into b-roll search terms
POST /v1/stock/importCopy 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.

EndpointDescription
POST /v1/chatSend a chat message (requires polling)
GET /v1/chat/conversationsList your conversations
GET /v1/chat/conversations/:id/messagesGet 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).

EndpointDescription
POST /v1/media/uploadUpload a file (multipart) and receive a stable URL
GET /v1/mediaList media — filter by project_id, folder_id, type, category (section), source_type, search, sort, pagination
GET /v1/media/:idFetch one media item (full metadata)
DELETE /v1/media/:idSoft-delete (30-day trash)
POST /v1/media/:id/restoreRestore from trash
DELETE /v1/media/:id/permanentPermanent delete (NOT reversible)
PATCH /v1/media/:id/projectMove item to a different project
POST /v1/media/bulk/deleteBulk soft-delete (≤1000)
POST /v1/media/bulk/restoreBulk restore (≤1000)
POST /v1/media/bulk/permanentBulk permanent delete (NOT reversible, ≤1000)
POST /v1/media/bulk/moveBulk move to project (atomic, ≤1000)
GET /v1/media/statsItem counts + total storage bytes
POST /v1/media/:id/favoriteMark a media item as favorited (idempotent)
DELETE /v1/media/:id/favoriteRemove a media item from favorites (idempotent)
GET /v1/media/foldersList the user's media folders (owned + shared)
POST /v1/media/foldersCreate a folder
PUT /v1/media/folders/:idRename / recolor / re-icon a folder (owner only)
DELETE /v1/media/folders/:idSoft-delete a folder (owner only)
POST /v1/media/folders/:id/itemsAdd media items to a folder
DELETE /v1/media/folders/:id/itemsRemove media items from a folder
POST /v1/media/folders/:id/shareShare a folder by user email (owner only)
DELETE /v1/media/folders/:id/share/:user_idRevoke folder access (owner only)
POST /v1/media/folders/:id/move-contentsMove every item in a folder to a project

See Media Library for the full filter reference and examples.

Presets Discovery

EndpointDescription
GET /v1/presetsList 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.

EndpointDescription
GET /v1/projectsList projects you can write into (owned + shared with edit/full/owner)
PATCH /v1/sessions/:sessionId/projectMove 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/shareAI Docs (Magic Pad): author, edit, and share project-scoped documents
POST /v1/visual-dna/character-sheetGenerate 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/folderVisual DNA folders: organize characters (contents move to root on delete)
POST /v1/projects, `PUT /v1/projects/:id(/archive/unarchive)`
GET /v1/sessionsList 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/:idMoodboard create/update/delete (AI style analysis)
POST /v1/voices/clone, POST /v1/voices/import-elevenlabs, DELETE /v1/voices/:idCustom voices: clone, import, delete
POST /v1/video/trim, GET /v1/video/trim/:jobIdFrame-accurate video trim (async job)

Other Endpoints

EndpointDescription
GET /v1/modelsList available models
GET /v1/voicesList TTS voices
GET /v1/account/creditsCheck credit balance
GET /v1/generate/:id/statusPoll generation status
GET /v1/generate/creative-director/:id/statusPoll Creative Director status (per-scene)

Authentication

All requests require the X-API-Key header with your API key:

X-API-Key: YOUR_API_KEY

See 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.