Skip to main content

Error Handling

Handle API errors gracefully in your application.

Error Response Format

All errors follow this format:

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

HTTP Status Codes

400Bad Request

Invalid request format or validation error

401Unauthorized

Missing or invalid API key

403Forbidden

API key lacks required permission

429Too Many Requests

Rate limit or quota exceeded

500Internal Server Error

Server-side error

Error Codes

CodeDescriptionSolution
MISSING_API_KEYNo API key providedInclude X-API-Key header
INVALID_API_KEYKey is invalid or revokedCheck your API key
PERMISSION_DENIEDKey lacks permissionUpdate key permissions
RATE_LIMIT_EXCEEDEDToo many requests/minuteWait and retry with backoff
QUOTA_EXCEEDEDMonthly quota reachedUpgrade your plan
VALIDATION_ERRORInvalid request dataCheck request body
ENHANCEMENT_ERROREnhancement failedRetry the request

Example Error Handling

async function enhance(prompt) {
  const response = await fetch(url, options);
  const data = await response.json();

  if (!response.ok) {
    switch (data.code) {
      case 'RATE_LIMIT_EXCEEDED':
        // Wait and retry
        await sleep(data.retryAfter * 1000);
        return enhance(prompt);

      case 'QUOTA_EXCEEDED':
        // Show upgrade prompt
        showUpgradeDialog();
        break;

      case 'VALIDATION_ERROR':
        // Show validation errors
        showErrors(data.details);
        break;

      default:
        throw new Error(data.message);
    }
  }

  return data;
}