Docs/Error Codes

Error Codes

Understanding and handling API errors.

Error Response Format

All errors follow a consistent JSON format:

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human-readable error message",
    "details": {} // Optional additional information
  }
}

HTTP Status Codes

StatusDescription
200Success
201Created successfully
400Bad request - Invalid parameters
401Unauthorized - Invalid or missing API key
403Forbidden - Insufficient permissions
404Not found - Resource doesn't exist
429Rate limited - Too many requests
500Internal server error
503Service unavailable - Temporary outage

Error Codes

UNAUTHORIZED

The API key is missing, invalid, or revoked.

Solution: Check your API key and ensure it's correctly included in the Authorization header.

FORBIDDEN

The API key doesn't have permission for this action.

Solution: Check the key's permissions in your dashboard.

RATE_LIMITED

Too many requests in a short period.

Solution: Implement exponential backoff and respect rate limits.

QUOTA_EXCEEDED

You've exceeded your credit quota.

Solution: Purchase more credits or upgrade your plan.

INVALID_INPUT

The request body contains invalid parameters.

Solution: Check the model's input schema and validate your parameters.

MODEL_NOT_FOUND

The specified model doesn't exist.

Solution: Check the model ID and browse available models.

JOB_NOT_FOUND

The specified job doesn't exist or has expired.

Solution: Job results are retained for 24 hours. Check the job ID.

MODEL_UNAVAILABLE

The model is temporarily unavailable.

Solution: Try again later or use an alternative model.

INFERENCE_FAILED

The model failed to process the request.

Solution: Check your input parameters. Some prompts may be rejected by content filters.

TIMEOUT

The request timed out.

Solution: Use async mode for long-running jobs.

Handling Errors

Always implement proper error handling in your code:

try {
  const result = await abstrakt.run('fal-ai/flux/schnell', {
    prompt: 'Hello world'
  });
} catch (error) {
  if (error.code === 'RATE_LIMITED') {
    // Wait and retry with exponential backoff
    await sleep(error.retryAfter * 1000);
    // Retry the request...
  } else if (error.code === 'QUOTA_EXCEEDED') {
    // Notify user to add credits
  } else if (error.code === 'INVALID_INPUT') {
    // Fix the input parameters
    console.error('Invalid input:', error.details);
  } else {
    // Handle other errors
    console.error('API error:', error.message);
  }
}