UNPKG

voyageai-cli

Version:

CLI for Voyage AI embeddings, reranking, and MongoDB Atlas Vector Search

205 lines (139 loc) 4.48 kB
# HTTP Status Codes The API uses standard HTTP status codes to indicate the outcome of requests. Proper status code handling is essential for robust client implementations. ## 2xx Success **200 OK**: Request succeeded. Response includes data. ``` GET /users/user_123 200 OK {"data": {"id": "user_123", ...}} ``` **201 Created**: Resource was successfully created. ``` POST /users 201 Created {"data": {"id": "user_456", ...}} Location: /users/user_456 ``` Include the `Location` header for newly created resources. **204 No Content**: Request succeeded, but there's no response body. ``` DELETE /users/user_123 204 No Content (empty response body) ``` Don't expect JSON in 204 responses. ## 3xx Redirection **301 Moved Permanently**: Resource moved to new location (rare in APIs). **304 Not Modified**: Resource hasn't changed since your last request (conditional GET). ``` GET /users/user_123 If-None-Match: "etag_abc" 304 Not Modified (empty response body) ``` ## 4xx Client Error **400 Bad Request**: Invalid request (malformed syntax, missing fields, invalid parameters). ``` POST /users {"name": ""} // Missing required field 400 Bad Request {"error": {"code": "validation_error", ...}} ``` Check response body for specific validation errors. **401 Unauthorized**: Missing or invalid authentication. ``` GET /users (No Authorization header) 401 Unauthorized {"error": {"code": "authentication_required", ...}} ``` Include valid access token in Authorization header. **403 Forbidden**: Authenticated but not authorized for this resource. ``` GET /admin/reports (User doesn't have admin scope) 403 Forbidden {"error": {"code": "insufficient_scope", ...}} ``` Check required scopes in error response. **404 Not Found**: Resource doesn't exist. ``` GET /users/nonexistent_user 404 Not Found {"error": {"code": "resource_not_found", ...}} ``` Verify resource ID; create the resource if needed. **409 Conflict**: Request conflicts with current state. ``` POST /users {"email": "alice@example.com"} // Email already exists 409 Conflict {"error": {"code": "resource_conflict", ...}} ``` Resolve the conflict (e.g., use different email) before retrying. **422 Unprocessable Entity**: Request is valid but can't be processed. ``` POST /orders {"user_id": "user_123", "total": 0} // Invalid state 422 Unprocessable Entity {"error": {"code": "invalid_operation", ...}} ``` This differs from 400 (syntax is valid, but business logic rejects it). **429 Too Many Requests**: Rate limited. Respect Retry-After header. ``` GET /users?page=1 429 Too Many Requests Retry-After: 5 {"error": {"code": "rate_limit_exceeded", ...}} ``` Wait before retrying; use exponential backoff. ## 5xx Server Error **500 Internal Server Error**: Unexpected server error (not your fault). ``` POST /data/process 500 Internal Server Error {"error": {"code": "internal_error", ...}, "meta": {"request_id": "..."}} ``` Retry with exponential backoff. Include request_id in support tickets. **503 Service Unavailable**: Temporary server issues (maintenance, overload). ``` GET /users 503 Service Unavailable Retry-After: 30 ``` Wait the specified duration before retrying. Check status page for incidents. **504 Gateway Timeout**: Request took too long to process. ``` POST /analytics/report?scope=year 504 Gateway Timeout ``` Reduce query scope or split into smaller requests. ## Status Code Handling Strategies **Idempotent operations** (GET, DELETE, PUT): Safe to retry. **Non-idempotent operations** (POST, PATCH): Use idempotency keys to safely retry: ``` POST /users Idempotency-Key: unique-key-123 ``` Same key + body = same response; safe to retry without duplicating data. ## Status Code Combinations Some combinations are common: | Scenario | Status | Action | |----------|--------|--------| | Invalid credentials | 401 | Re-authenticate | | Expired token | 401 | Refresh token | | Insufficient permissions | 403 | Request broader scopes | | Resource not found | 404 | Verify ID; create if needed | | Duplicate email | 409 | Use different email | | Validation error | 400 | Fix input; check error details | | Rate limited | 429 | Implement backoff | | Server error | 5xx | Retry with exponential backoff | ## Monitoring Status Codes Track status code distribution in your applications: ``` 200 OK: 99.5% 400 Bad Request: 0.3% 401 Unauthorized: 0.1% 500 Internal Server Error: 0.1% ``` High error rates indicate issues to investigate.