> ## Documentation Index
> Fetch the complete documentation index at: https://slatehq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors

> HTTP status codes and error response formats returned by the Slate API.

The Slate API uses standard HTTP status codes. This page explains what each code means and what the error body looks like, so your integration can handle failures.

## Why it matters

Different parts of the API return errors in slightly different formats. Check the status code first, then read the body for details.

## Error response formats

### Authentication and access errors

Token checks happen at the API gateway, before a request reaches a service. These errors return a plain-text body, not JSON:

| Status | Body | Cause |
| - | - | - |
| `401` | `unauthorized` | The token is missing, malformed, revoked, or expired, or a workspace or organization header doesn't match the token. |
| `403` | `forbidden` | The endpoint isn't available for API token access. |

See [Authentication](/docs/api-reference/authentication) for the full list of causes.

### Workflows and AEO Tracker errors

Workflows and AEO Tracker endpoints return JSON with an `error` field:

```json theme={null}
{
  "error": "topic name already exists"
}
```

Unexpected server errors from Workflows endpoints return a generic message:

```json theme={null}
{
  "error": "internal_error"
}
```

### Content Updates errors

The Content Updates endpoint returns JSON with a `detail` field:

```json theme={null}
{
  "detail": "unknown content_artifact_uid"
}
```

Validation errors return `422`, with `detail` listing each invalid field.

## Status codes

| Status | Meaning | Example |
| - | - | - |
| `200` | Success. | A list or get request returned data. |
| `201` | Created. | A content update was recorded. |
| `202` | Accepted. | A workflow run was queued. Poll its status to follow progress. |
| `400` | The request is invalid. | A path ID isn't valid, such as `invalid prompt id`. |
| `401` | Authentication failed. | The token is missing, revoked, or expired. |
| `403` | Access denied. | The endpoint isn't available for tokens, or the workspace doesn't match the token (`workspace does not match authenticated context`). |
| `404` | The resource doesn't exist in the token's workspace. | `query run not found` |
| `409` | The request conflicts with existing data. | `topic name already exists` |
| `422` | A field failed validation. | A Content Updates request has an invalid `occurred_at` value. |
| `429` | A run limit was reached. | `Too many concurrent runs` |
| `500` | Unexpected server error. | `internal_error` |
| `503` | A backing service is temporarily unavailable. | `analytics store unavailable` |

## Run limits

Each API token can have up to 3 workflow runs queued or running at the same time. Creating another run returns `429` with `Too many concurrent runs`. Wait for a run to finish, or cancel a queued run, then try again.

There's no daily limit on the number of runs per token.

## Troubleshooting

* **You get `401` on every request.** Check that the header is `Authorization: Bearer slat_…` and that the token isn't revoked or expired.
* **You get `403` on a valid token.** The endpoint isn't open to API tokens, or the request refers to a workspace other than the token's workspace.
* **You get `429` when creating runs.** Too many runs are in flight for this token. Poll [Get Run Status](/docs/api-reference/workflow-runs/get-run-status) and create new runs as earlier ones finish.
* **You get `503`.** Retry the request after a short wait.

## What's next

* [Authentication](/docs/api-reference/authentication) — create and manage API tokens.
* [API Overview](/docs/api-reference/overview) — base URL and available APIs.
* [Create Workflow Run](/docs/api-reference/workflow-runs/create-workflow-run) — trigger a workflow run.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.