Errors

OpenAI-Format Errors

{
  "error": {
    "message": "model field is required",
    "type": "invalid_request_error",
    "code": "validation_invalid_request"
  }
}

Anthropic-Format Errors

{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens is required"
  }
}

Error Code Reference

| HTTP | Code | Meaning | Retry? | |------|------|---------|--------| | 400 | validation_invalid_request | Bad request body | No | | 401 | auth_missing_key | No API key | No | | 401 | auth_invalid_key | Invalid API key | No | | 429 | rate_limit_exceeded | Too many requests | Yes, after Retry-After | | 502 | provider_upstream_error | Provider unavailable | Yes | | 503 | no_binding_available | No provider routed | Yes |

SDK Error Handling

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gateway.vibecc.dev/v1",
  apiKey: process.env.OPENAI_API_KEY,
});

try {
  const response = await client.chat.completions.create({ /* ... */ });
} catch (err) {
  if (err instanceof OpenAI.APIError) {
    console.error(err.status, err.message);
    if (err.status === 429) {
      const retryAfter = err.headers["retry-after"];
      // wait retryAfter seconds then retry
    }
  }
}