Skip to main content
Banan0 API Docs

Error Handling

Best practices for handling API errors.

Error Handling

Error Response Format

json
{
  "error": "Human readable message",
  "code": "MACHINE_READABLE_CODE",
  "details": { }
}

Common Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Invalid or missing API key
FORBIDDEN403Key lacks required scope
INSUFFICIENT_BALANCE402Not enough tokens
NOT_FOUND404Resource doesn't exist
RATE_LIMITED429Too many requests
VALIDATION_ERROR400Invalid request parameters
MODEL_ERROR500Model execution failed

Handling Examples

typescript
async function runModel(modelId: string, input: object) {
  const response = await fetch(`/api/v1/models/${modelId}/run`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ input })
  });
  
  if (!response.ok) {
    const error = await response.json();
    
    switch (response.status) {
      case 401:
        throw new Error('Invalid API key');
      case 402:
        throw new Error('Insufficient tokens. Please top up.');
      case 429:
        const retryAfter = response.headers.get('Retry-After');
        throw new Error(`Rate limited. Retry in ${retryAfter}s`);
      default:
        throw new Error(error.message || 'Unknown error');
    }
  }
  
  return response.json();
}

Command Palette

Search for a command to run...