| 401 | missing_key | Send your API key in the header: Authorization: Bearer avs_... |
| 401 | invalid_key | API key not found or revoked. |
| 403 | not_verified | Confirm the account e-mail before using the API. |
| 403 | scope | This API key does not have the scope this endpoint needs. |
| 429 | rate_limited | Too many requests. Retry after the seconds in the Retry-After header. |
| 400 | invalid_json | The request body is not valid JSON. |
| 413 | too_large | The request body is too large. |
| 400 | config_required | Send the avatar as `config` (object) or `code` (recipe code). |
| 400 | invalid_code | The recipe code could not be decoded. |
| 400 | invalid_style | Unknown style. See `styles` in GET /api/v1/catalog. |
| 400 | invalid_family | Unknown family. See `families` in GET /api/v1/catalog (chibi, voxel). |
| 400 | invalid_count | `count` must be an integer in the allowed range. |
| 400 | invalid_seed | `seed` must be an integer from 0 to 4294967295. |
| 400 | invalid_size | `size` must be one of the allowed values. |
| 400 | format | `format` must be glb, obj, sprites or png. |
| 400 | fps | `fps` must be one of 12, 24, 30, 36 or 60. |
| 400 | clips | GLB and sprites need at least one valid clip id in `clips`. |
| 400 | sprites | `dirs` must be 1, 4 or 8 and `size` 64, 128 or 256. |
| 402 | pro_only | This option is available on the Pro plan. |
| 400 | too_big | Too many sprite frames. Use fewer clips, directions, a lower fps or a smaller size. |
| 400 | batch | `batch.count` must be 1 to 50 and batches are GLB only. |
| 429 | busy | An export is already running for this account. Wait for it to finish. |
| 402 | quota | Monthly download quota reached. The Pro plan has unlimited downloads. |
| 402 | random_limit | Daily random limit reached on the free plan. |
| 402 | quota_out | The free plan's monthly downloads are used up, so random avatars are paused until next month. The Pro plan has no limits. |
| 503 | queue_full | The export queue is full. Try again in a minute. |
| 404 | not_found | Not found (or it belongs to another account, or it already expired). |
| 403 | expired_link | This download link is invalid or expired. Ask GET /api/v1/exports/{id} for a new one. |
| 400 | idempotency_key | `Idempotency-Key` must have 1 to 255 visible ASCII characters. |
| 422 | idempotency_mismatch | This Idempotency-Key was already used with a different request body. |
| 409 | idempotency_in_progress | A request with this Idempotency-Key is still being processed. |
| 402 | credits | Not enough AI credits. Buy a credit pack in the studio. |
| 503 | ai_off | AI generation is not available right now. |
| 429 | ai_busy | An AI generation is already running for this account. |
| 429 | ai_daily | Daily AI generation limit reached for this account. |
| 503 | ai_paused | AI generation is paused for today. Try again tomorrow. |
| 400 | ai_prompt | `prompt` must have 3 to 1000 characters (or send an image). |
| 400 | ai_image | `image` must be a data URL of a JPEG, PNG or WebP image. |
| 413 | ai_image_size | The image is too large (max ~1.2 MB). Resize it and try again. |
| 200 | ai_refused | The AI declined this request. Describe the character differently. |
| 200 | ai_incomplete | The AI could not finish this character. Try a simpler description. |
| 200 | ai_bad_output | The AI answer was invalid. Your credits were returned; try again. |
| 200 | ai_failed | The AI service failed. Your credits were returned; try again. |
| 500 | generic | Something went wrong on our side. Try again. |