Kolbo.AIKolbo.AI Docs
Developer API

Errors & Rate Limits

Error handling and rate limiting for the Kolbo Developer API.

Error Format

All errors return a consistent JSON format:

{
  "success": false,
  "error": "Human-readable error message",
  "code": "ERROR_CODE"
}

HTTP Status Codes

StatusMeaning
200Success
201Created (new API key)
400Bad request (missing/invalid params)
401Unauthorized (invalid or missing API key)
403Forbidden (insufficient permissions)
404Not found
429Rate limited
500Server error

Common Error Codes

CodeDescription
INVALID_API_KEYAPI key is invalid, expired, or revoked
INSUFFICIENT_CREDITSNot enough credits for this generation
MISSING_FIELDSRequired fields are missing
GENERATION_ERRORThe generation failed to start
MODEL_NOT_FOUNDThe specified model doesn't exist
RATE_LIMITEDToo many requests

Rate Limits

EndpointLimit
Generation endpoints10 requests/minute per user
Status polling300 requests/minute per IP
Models / Credits300 requests/minute per IP

When rate limited, the response includes:

{
  "status": false,
  "message": "Too many requests, please try again later"
}

Generation States

When polling status, the state field can be:

StateDescription
pendingGeneration is queued (Creative Director only)
processingGeneration is in progress
completedGeneration finished, result field contains URLs
failedGeneration failed, error field explains why
cancelledGeneration was cancelled

Handling Failures

  1. Check state in status response
  2. If failed, read the error field
  3. Credits are automatically refunded for failed generations
  4. You can retry with a new request

Timeouts

  • Chat (POST /v1/chat): requires polling, typically 5-30 seconds
  • Image: typically completes within 30 seconds
  • Video: typically completes within 5 minutes
  • Music: typically completes within 2 minutes
  • Speech/Sound: typically completes within 30 seconds
  • Creative Director: typically completes within 3 minutes (depends on scene count)

If polling beyond these times, the generation may have failed silently. Check the status one final time, then consider retrying.