API Documentation

Complete reference for the AIBuddy Unified AI Gateway. One API key, all AI models.

Authentication

Include your AIBuddy API key in any request using one of these methods:

MethodExample
HeaderX-Api-Key: aibuddy_xxxxx
BearerAuthorization: Bearer aibuddy_xxxxx
Body{ "api_key": "aibuddy_xxxxx" }

Get your API key at aibuddy.life/my-account.

Base URL

https://api.aibuddy.life/v2

Note: The v1 endpoints (/v1/inference) continue to work unchanged for backward compatibility.

Quick Start

Chat (Smart Routing)

curl -X POST "https://api.aibuddy.life/v2/chat" \
  -H "X-Api-Key: aibuddy_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      {"role": "user", "content": "Hello, build me a React component"}
    ],
    "language": "typescript"
  }'

Image Generation

curl -X POST "https://api.aibuddy.life/v2/image/generate" \
  -H "X-Api-Key: aibuddy_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A futuristic city skyline at sunset, cyberpunk style",
    "size": "1024x1024",
    "quality": "hd"
  }'

Video Generation (Async)

curl -X POST "https://api.aibuddy.life/v2/video/generate" \
  -H "X-Api-Key: aibuddy_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A drone flyover of mountain peaks at dawn",
    "model": "veo-3.1-generate-preview"
  }'

# Poll for result
curl "https://api.aibuddy.life/v2/tasks/task_video_abc123" \
  -H "X-Api-Key: aibuddy_your_key"

POST /v2/chat

POST /v2/chat

Smart-routed chat and code inference. The backend auto-selects the optimal model based on task complexity.

Request Body

FieldTypeRequiredDescription
messagesarrayRequiredConversation messages [{role, content}]
languagestringOptionalLanguage hint for routing (javascript, python, etc.)
systemstringOptionalCustom system prompt
max_tokensnumberOptionalMax response tokens (default: 8192)
temperaturenumberOptional0.0–1.0 (auto-tuned per language)
thinkingbool/objectOptionalEnable extended thinking (Opus only)
force_modelstringOptionalForce a specific model (bypasses smart routing)
has_imagesboolOptionalHint that messages contain images
Response
{
  "success": true,
  "response": "Here's your implementation...",
  "thinking": "Extended thinking output (when enabled)",
  "usage": { "input_tokens": 500, "output_tokens": 2000 },
  "model": "gpt-5.3-codex",
  "provider": "openai",
  "api_cost": 0.018,
  "remaining_credits": 45.50,
  "routing": {
    "provider": "openai",
    "model": "gpt-5.3-codex",
    "reason": "smart_routing"
  },
  "duration_ms": 3200,
  "request_id": "uuid"
}

POST /v2/image/generate

POST /v2/image/generate

Synchronous image generation via DALL-E 3.

Request Body

FieldTypeRequiredDescription
promptstringRequiredImage description
sizestringOptional1024x1024, 1024x1792, 1792x1024
qualitystringOptionalstandard or hd
stylestringOptionalvivid or natural
Response
{
  "success": true,
  "images": [{ "url": "https://...", "revised_prompt": "..." }],
  "model": "dall-e-3",
  "api_cost": 0.08
}

POST /v2/video/generate

POST /v2/video/generate

Async video generation via Google Veo 3.1. Returns a task ID for polling.

Request Body

FieldTypeRequiredDescription
promptstringRequiredVideo description
modelstringOptionalveo-3.1-generate-preview (default) or veo-3.1-fast-generate-preview
imageBase64stringOptionalBase64 image for image-to-video
imageMimeTypestringOptionalMIME type of the image (e.g. image/jpeg)
Response (202 Accepted)
{
  "success": true,
  "task_id": "task_video_a1b2c3d4e5f6",
  "status": "processing",
  "model": "veo-3.1-generate-preview",
  "estimated_time_seconds": 120,
  "message": "Video generation started. Poll GET /v2/tasks/{task_id}"
}

POST /v2/music/generate

POST /v2/music/generate

Async music generation via Suno. Returns a task ID for polling.

Request Body

FieldTypeRequiredDescription
promptstringRequiredMusic description
stylestringOptionalGenre/style (e.g. electronic, jazz)
titlestringOptionalTrack title
instrumentalboolOptionalInstrumental only (no vocals)
negativeTagsstringOptionalComma-separated tags to avoid
Response (202 Accepted)
{
  "success": true,
  "task_id": "task_music_a1b2c3d4e5f6",
  "suno_task_id": "suno_abc123",
  "status": "processing",
  "model": "suno-v3.5",
  "estimated_time_seconds": 60
}

GET /v2/tasks/{taskId}

GET /v2/tasks/{taskId}

Poll async task status for video and music generation.

Processing
{
  "task_id": "task_video_a1b2c3d4e5f6",
  "type": "video",
  "status": "processing",
  "created_at": "2026-03-02T04:30:00Z"
}
Completed
{
  "task_id": "task_video_a1b2c3d4e5f6",
  "type": "video",
  "status": "completed",
  "result_url": "https://storage.googleapis.com/.../video.mp4"
}
Failed
{
  "task_id": "task_video_a1b2c3d4e5f6",
  "type": "video",
  "status": "failed",
  "error": "Content filtered by safety system",
  "filter_reasons": ["Violence detected"]
}

Task statuses: pending → processing → completed / failed

GET /v2/models

GET /v2/models

List all available models and their capabilities.

Smart Routing

The API automatically selects the optimal model based on task complexity, language, and content. Override with force_model when needed.

TierModelBest ForInput Cost
1 (Economy)DeepSeek V3Simple tasks, chat, quick edits$0.27/M tokens
2 (Standard)GPT-4oMedium tasks, images, multi-turn$2.50/M tokens
3 (Premium)GPT-5.3-CodexCode gen, vibe coding, features$2/M tokens
4 (Advanced)Claude Sonnet 4Complex reasoning, code review$3/M tokens
5 (Expert)Claude Opus 4.6Architecture, security, deep reasoning$15/M tokens

Error Codes

CodeStatusDescription
MISSING_API_KEY401No API key provided
INVALID_API_KEY401Key doesn't exist or expired
INVALID_MESSAGES400Messages array missing or empty
INVALID_REQUEST400Malformed JSON body
MISSING_PROMPT400Required prompt field missing
MISSING_TASK_ID400Task ID not provided in URL
TASK_NOT_FOUND404No task found with given ID
ALL_PROVIDERS_FAILED503All AI providers unavailable
VIDEO_NOT_CONFIGURED503Video service not configured
MUSIC_NOT_CONFIGURED503Music service not configured

Rate Limits

Rate limits are applied per API key. Current limits:

EndpointRate Limit
/v2/chat60 requests/minute
/v2/image/generate10 requests/minute
/v2/video/generate5 requests/minute
/v2/music/generate5 requests/minute
/v2/tasks/{id}120 requests/minute

When rate limited, you'll receive a 429 Too Many Requests response. Wait and retry.