# Problem types

Every MaterialGraph API error is an RFC 7807 problem document (`application/problem+json`). Its `type` and `doc_uri` point at one of these entries, and its `detail` and `suggestions` name the specific cause and the next step. Retry only a type marked retriable, and quote the `trace_id` when reporting one.

| Slug | Title | Status | Retriable | Type |
| --- | --- | --- | --- | --- |
| `ambiguous-brand` | Ambiguous brand | 400 | no | https://beta.materialgraph.com/errors/ambiguous-brand |
| `asset-not-found` | Asset not found | 404 | no | https://beta.materialgraph.com/errors/asset-not-found |
| `asset-unavailable` | Asset unavailable | 404 | no | https://beta.materialgraph.com/errors/asset-unavailable |
| `bad-request` | Bad request | 400 | no | https://beta.materialgraph.com/errors/bad-request |
| `brand-not-found` | Brand not found | 404 | no | https://beta.materialgraph.com/errors/brand-not-found |
| `budget-exceeded` | Spend budget exceeded | 402 | no | https://beta.materialgraph.com/errors/budget-exceeded |
| `conflict` | Conflict | 409 | no | https://beta.materialgraph.com/errors/conflict |
| `crawl-not-found` | Crawl not found | 404 | no | https://beta.materialgraph.com/errors/crawl-not-found |
| `credits-exhausted` | Credits exhausted | 402 | no | https://beta.materialgraph.com/errors/credits-exhausted |
| `deadline-exceeded` | Request deadline exceeded | 504 | yes | https://beta.materialgraph.com/errors/deadline-exceeded |
| `empty-brand` | Brand carries no materials | 400 | no | https://beta.materialgraph.com/errors/empty-brand |
| `endpoint-not-found` | No such endpoint | 404 | no | https://beta.materialgraph.com/errors/endpoint-not-found |
| `forbidden` | Forbidden | 403 | no | https://beta.materialgraph.com/errors/forbidden |
| `internal-error` | Internal server error | 500 | yes | https://beta.materialgraph.com/errors/internal-error |
| `match-response-not-found` | Match response not found | 404 | no | https://beta.materialgraph.com/errors/match-response-not-found |
| `match-result-not-in-response` | Result not in that match response | 422 | no | https://beta.materialgraph.com/errors/match-result-not-in-response |
| `material-not-found` | Material not found | 404 | no | https://beta.materialgraph.com/errors/material-not-found |
| `not-found` | Resource not found | 404 | no | https://beta.materialgraph.com/errors/not-found |
| `payload-too-large` | Payload too large | 413 | no | https://beta.materialgraph.com/errors/payload-too-large |
| `project-not-found` | Project not found | 404 | no | https://beta.materialgraph.com/errors/project-not-found |
| `rate-limited` | Rate limit exceeded | 429 | yes | https://beta.materialgraph.com/errors/rate-limited |
| `request-aborted` | Request aborted | 499 | no | https://beta.materialgraph.com/errors/request-aborted |
| `run-not-found` | Run not found | 404 | no | https://beta.materialgraph.com/errors/run-not-found |
| `schedule-not-found` | Schedule not found | 404 | no | https://beta.materialgraph.com/errors/schedule-not-found |
| `search/stale-cursor` | Stale search cursor | 409 | no | https://beta.materialgraph.com/errors/search/stale-cursor |
| `service-unavailable` | Service unavailable | 503 | yes | https://beta.materialgraph.com/errors/service-unavailable |
| `source-material-batch-not-found` | Source-material batch not found | 404 | no | https://beta.materialgraph.com/errors/source-material-batch-not-found |
| `source-material-source-not-found` | Source-material file not found | 404 | no | https://beta.materialgraph.com/errors/source-material-source-not-found |
| `unauthorized` | Authentication required | 401 | no | https://beta.materialgraph.com/errors/unauthorized |
| `unknown-brand` | Unknown brand | 400 | no | https://beta.materialgraph.com/errors/unknown-brand |
| `upstream-failure` | Upstream service failure | 502 | yes | https://beta.materialgraph.com/errors/upstream-failure |
| `visual-cluster-build-locked` | Visual-cluster build lock held | 409 | yes | https://beta.materialgraph.com/errors/visual-cluster-build-locked |
| `visual-cluster-fit-requires-workstation` | Fitting runs from the workstation CLI | 409 | yes | https://beta.materialgraph.com/errors/visual-cluster-fit-requires-workstation |
| `visual-cluster-not-activatable` | Visual-cluster snapshot not activatable | 422 | no | https://beta.materialgraph.com/errors/visual-cluster-not-activatable |
| `visual-cluster-not-found` | Visual cluster not found | 404 | no | https://beta.materialgraph.com/errors/visual-cluster-not-found |
| `visual-cluster-run-not-resumable` | Visual-cluster run not resumable | 409 | yes | https://beta.materialgraph.com/errors/visual-cluster-run-not-resumable |
