All requests to the CUDO Compute API must be authenticated with an API key in the
Authorization header unless explicitly documented otherwise.Overview
The CUDO Compute API uses a simple API key based bearer scheme: Header format:Create an API key
You can create API keys in two ways:- Via the CUDO Compute console (recommended for most users)
- Programmatically with the
POST /v1/api-keysendpoint
- cURL
- Python (requests)
- JavaScript (fetch)
The
key field is only returned once at creation time. Store it securely now; you cannot retrieve it later.Using your API key
Include the header on every request:Error handling
Common authentication-related HTTP status codes:| Code | Meaning | Typical Cause |
|---|---|---|
| 400 | Bad Request | Malformed header or body |
| 401 | Unauthorized | Missing / invalid / revoked API key |
| 403 | Forbidden | Authenticated but lacks permission for the resource |
| 429 | Too Many Requests | Rate limit exceeded (apply retry with backoff) |
Our errors follow the Google AIP 193 specification. Please see the error codes and formats in the Errors section of the documentation.
Best practices
Rotation workflow example
- Create a new key.
- Deploy the new key (update environment variables / secret stores).
- Verify all services function with the new key.
- Revoke the old key.
Environment variables
Store your key locally in a shell profile or an.env file:
Rate limiting & retries
If you receive HTTP 429, implement exponential backoff (e.g., wait 1s, 2s, 4s, 8s…) and respect anyRetry-After header (if present). Do not continuously retry invalid keys-fix the credential instead.
Troubleshooting
| Symptom | Possible Cause | Fix |
|---|---|---|
| 401 Unauthorized | Missing header | Add Authorization: Bearer ... |
| 401 Unauthorized | Typo in key / whitespace | Copy key again; trim spaces/newlines |
| 401 Unauthorized | Revoked key | Generate a new key |
| 403 Forbidden | Insufficient permissions | Use a key with required access or adjust roles |
| 429 Too Many Requests | Bursty traffic | Add client-side throttling & retry with backoff |
Currently the API uses a single global bearer scheme named
bearerAuth with header Authorization. There is no separate refresh or OAuth flow.