# Errors

Codes are the same in the CLI, the dashboard and MCP tool results. Errors you can fix name the next step. Failures on C3's or a provider's side show a report code to quote to support.

## Account and billing[​](#account-and-billing "Direct link to Account and billing")

| Code                             | Meaning                                                         | What to do                                                |
| -------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------- |
| `EMAIL_VERIFICATION_REQUIRED`    | Email not verified                                              | `c3 verify-email`, click the link, retry                  |
| `INSUFFICIENT_CREDITS`           | Balance cannot cover the job's reserve                          | `c3 topup`, or lower `time`                               |
| `CONCURRENCY_LIMIT`              | Plan's chip limit reached                                       | Wait, `c3 cancel` a job, or `c3 upgrade`                  |
| `403 Invalid or revoked API key` | Key wrong or revoked                                            | `c3 apikey create`, update the host                       |
| `401 invalid_token`              | Login session expired                                           | `c3 login` again; MCP hosts: remove and re-add the server |
| `FORBIDDEN`                      | Account restricted, or resource belongs to another organisation | `c3 whoami`; contact support if unexpected                |

## Submission[​](#submission "Direct link to Submission")

| Code or message                                     | Meaning                                                                                            | What to do                                             |
| --------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| `'script' field is required`                        | `.c3` has no `script`                                                                              | Add it                                                 |
| `cpu is a hardware group, not a selectable profile` | `hardware: cpu`                                                                                    | Pick an exact profile from `c3 list --class cpu --all` |
| `VALIDATION_ERROR`                                  | A field is malformed: `gpu` and `hardware` disagree, empty `regions`, relative `mount`, bad `time` | The message names the field                            |
| Excluded submission script                          | Ignore rules exclude `script`                                                                      | Fix `.c3ignore`                                        |
| `WORKSPACE_TOO_LARGE`                               | MCP inline upload over 20 MiB or 500 files                                                         | Use `prepare_upload` or the CLI                        |
| `PROVIDER_NOT_CONFIGURED`                           | Pinned provider does not offer that hardware                                                       | `c3 list --provider <id> --all`                        |

## Capacity and scheduling[​](#capacity-and-scheduling "Direct link to Capacity and scheduling")

| Code                            | Meaning                                           | What to do                                           |
| ------------------------------- | ------------------------------------------------- | ---------------------------------------------------- |
| `GPU_OUT_OF_STOCK`              | No stock for the request at submit time           | Other class or provider, or pin both and let it wait |
| `PROVIDER_UNAVAILABLE`          | Provider disabled or unreachable                  | Remove the pin or choose another                     |
| `PROVISIONING_BLOCKED`          | Not an error. Job is `PENDING`, waiting for stock | Wait, or `c3 cancel` and resubmit elsewhere          |
| `PROVIDER_CAPACITY_UNAVAILABLE` | Waited `max_wait_minutes` without stock           | Resubmit with other hardware. Reserve refunded       |
| `CAPACITY_POOL_DISABLED`        | Selected pool turned off by C3                    | Resubmit with other hardware. Reserve refunded       |
| `QUEUE_DEADLINE_EXCEEDED`       | `PENDING` for six hours                           | Resubmit later or elsewhere. Reserve refunded        |

## Runtime and results[​](#runtime-and-results "Direct link to Runtime and results")

| Code                       | Meaning                                                                                                                                  | What to do                                                                                |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `FAILED`, exit code shown  | Your script exited non-zero                                                                                                              | `c3 logs <job-id>`                                                                        |
| `TIMED_OUT`                | Hit the `time` limit                                                                                                                     | Raise `time`; partial artifacts are still collected                                       |
| `PREPARATION_ERROR`        | Setup failed before the script: `uv sync`, missing `uv.lock`, image pull, dataset not found                                              | The message says which; fix and resubmit                                                  |
| `DOCKER_IMAGE_NOT_FOUND`   | The registry has no such image or tag. On `ghcr.io` a private package looks the same to an anonymous pull                                | Check `docker.image` and, on GHCR, the package visibility; the message names the registry |
| `DOCKER_IMAGE_NOT_PUBLIC`  | The registry refused an anonymous pull. On `ghcr.io` this also covers a misspelt owner or package, because GitHub reports both as denied | Make the image public, or fix the path. Private images are not supported                  |
| `DOCKER_IMAGE_PULL_FAILED` | Any other pull failure, including a `ghcr.io` rate limit                                                                                 | Retry; the message names the registry                                                     |
| `DOCKER_HUB_RATE_LIMITED`  | Docker Hub throttled the pull                                                                                                            | Retry later                                                                               |
| Accelerator mismatch       | `requires_accelerator` does not match the machine                                                                                        | Fix `hardware` or the flag                                                                |
| `UPLOAD_ERROR`             | Script succeeded, results could not be saved                                                                                             | Contact support with the report code                                                      |
| `MACHINE_LOST`             | Provider machine disappeared mid-job                                                                                                     | Resubmit; quote the report code if it recurs                                              |

## Rate limits[​](#rate-limits "Direct link to Rate limits")

| Code                              | Meaning                                  | What to do                           |
| --------------------------------- | ---------------------------------------- | ------------------------------------ |
| `429 RATE_LIMITED`                | More than 120 MCP tool calls in a minute | Slow down; retry after `Retry-After` |
| `VERIFICATION_EMAIL_RATE_LIMITED` | Too many resend requests                 | Wait a few minutes                   |
