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

# Error codes

> API error response fields and stable error codes.

# Error codes

## Synopsis

Every API error uses a JSON Problem Details response. Each response carries a stable error code and documentation URL.

Use the error code for program logic. Use the request identifier when you contact support.

## Example with output

```json theme={"theme":"vesper"}
{
  "docs_uri": "https://docs.agentsfleet.net/api-reference/error-codes#UZ-AGT-009",
  "title": "Fleet not found",
  "detail": "No fleet with id '0198a7ba-2c1d-7f08-8a45-3e9b6d2f1c70' in this workspace.",
  "error_code": "UZ-AGT-009",
  "request_id": "0198a7b5-3c8d-7e41-9a2b-6f1d4c7e8a05",
  "user_message": "We couldn't find that Fleet. Check the workspace and fleet identifier."
}
```

## Options

The error format has no client option. Every response contains the first five fields below.

A conflict response also contains `current_state`. Some errors contain `user_message`.

| Field           | Effect                                   | Default  | Unit or range                       |
| --------------- | ---------------------------------------- | -------- | ----------------------------------- |
| `docs_uri`      | Links to this error.                     | Included | URL                                 |
| `title`         | Gives a stable short label.              | Included | Text                                |
| `detail`        | Explains this failure.                   | Included | Text that varies by request         |
| `error_code`    | Identifies the failure for client logic. | Included | Registered code below               |
| `request_id`    | Identifies the request for support.      | Included | Server-generated value              |
| `current_state` | Names the state that blocked a change.   | Omitted  | Included on HTTP 409 responses      |
| `user_message`  | Gives text safe to show to a user.       | Omitted  | Included when the error defines one |

## Errors

### Identifiers

| Code                                       | HTTP | Title                    | Why and fix                                                                                        | Prevent                                  |
| ------------------------------------------ | ---- | ------------------------ | -------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| <span id="UZ-UUIDV7-009" />`UZ-UUIDV7-009` | 400  | Invalid identifier shape | The supplied identifier does not match the expected version 7 universally unique identifier shape. | Use identifiers returned by agentsfleet. |

### Service failures

| Code                                           | HTTP | Title               | Why and fix                                                                                                | Prevent                                                         |
| ---------------------------------------------- | ---- | ------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| <span id="UZ-INTERNAL-001" />`UZ-INTERNAL-001` | 503  | Service unavailable | A required service is unavailable. Try again shortly.                                                      | Clients cannot prevent this failure. Keep retry handling ready. |
| <span id="UZ-INTERNAL-002" />`UZ-INTERNAL-002` | 500  | Request failed      | We couldn't finish that request. Try again shortly.                                                        | Clients cannot prevent this failure. Keep retry handling ready. |
| <span id="UZ-INTERNAL-003" />`UZ-INTERNAL-003` | 500  | Request failed      | The request could not finish. Retry it, then report the error code and request identifier if it continues. | Clients cannot prevent this failure. Keep retry handling ready. |

### Request

| Code                                 | HTTP | Title             | Why and fix                                                                   | Prevent                                             |
| ------------------------------------ | ---- | ----------------- | ----------------------------------------------------------------------------- | --------------------------------------------------- |
| <span id="UZ-REQ-001" />`UZ-REQ-001` | 400  | Invalid request   | That request wasn't valid. Double-check the values you entered and try again. | Validate request fields before sending the request. |
| <span id="UZ-REQ-002" />`UZ-REQ-002` | 413  | Payload too large | Request body exceeds the maximum allowed size.                                | Validate request fields before sending the request. |

### Workspaces

| Code                                             | HTTP | Title                         | Why and fix                                                                                 | Prevent                                                |
| ------------------------------------------------ | ---- | ----------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| <span id="UZ-WORKSPACE-001" />`UZ-WORKSPACE-001` | 409  | Workspace name already exists | A workspace with that name already exists. Check the refreshed list or choose another name. | Use a unique workspace name within the current tenant. |

### Authentication

| Code                                   | HTTP | Title                              | Why and fix                                                                                                                                  | Prevent                                        |
| -------------------------------------- | ---- | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| <span id="UZ-AUTH-001" />`UZ-AUTH-001` | 403  | Forbidden                          | You need operator access for that. Ask a tenant operator or admin to manage API keys.                                                        | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-002" />`UZ-AUTH-002` | 401  | Unauthorized                       | Authentication required. Provide a valid Bearer token.                                                                                       | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-003" />`UZ-AUTH-003` | 401  | Token expired                      | Your authentication token has expired. Re-authenticate.                                                                                      | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-004" />`UZ-AUTH-004` | 503  | Authentication service unavailable | Authentication service is temporarily unavailable. Retry shortly.                                                                            | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-005" />`UZ-AUTH-005` | 404  | Session not found                  | Session was not found. It may have expired or been invalidated.                                                                              | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-006" />`UZ-AUTH-006` | 401  | Session expired                    | Your session has expired. Please sign in again.                                                                                              | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-011" />`UZ-AUTH-011` | 400  | Verification code did not match    | The 6-digit verification code did not match what the dashboard issued. Double-check the code shown in your browser and try again.            | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-012" />`UZ-AUTH-012` | 410  | Login session already consumed     | This login session has already been consumed. Start over with `agentsfleet login`.                                                           | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-013" />`UZ-AUTH-013` | 410  | Login session aborted              | This login session was aborted (too many wrong codes, explicit cancel, or replaced by a newer session). Start over with `agentsfleet login`. | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-014" />`UZ-AUTH-014` | 409  | Login session not approved         | This login session has not been approved in the dashboard yet. Approve it in your browser before submitting a verification code.             | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-015" />`UZ-AUTH-015` | 409  | Login session already approved     | This login session has already been approved. Do not call /approve a second time.                                                            | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-016" />`UZ-AUTH-016` | 400  | Invalid command-line public key    | The supplied public\_key is malformed. Expect base64url-encoded P-256 SubjectPublicKeyInfo.                                                  | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-017" />`UZ-AUTH-017` | 400  | Invalid token name                 | token\_name must contain 1 to 64 characters from space through tilde.                                                                        | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-018" />`UZ-AUTH-018` | 400  | Invalid verification code shape    | verification\_code must contain exactly 6 decimal digits.                                                                                    | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-019" />`UZ-AUTH-019` | 400  | Invalid ciphertext                 | ciphertext is missing or empty. Expect a base64url-encoded AES-256-GCM output.                                                               | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-020" />`UZ-AUTH-020` | 400  | Invalid nonce                      | nonce is missing, empty, or the wrong length. Expect a base64url-encoded 12-byte value.                                                      | Keep sign-in sessions and credentials current. |
| <span id="UZ-AUTH-022" />`UZ-AUTH-022` | 403  | Insufficient scope                 | You need an additional scope for that. Ask an agentsfleet admin to grant the scope this action requires.                                     | Keep sign-in sessions and credentials current. |

### API

| Code                                 | HTTP | Title                            | Why and fix                                                                                              | Prevent                                           |
| ------------------------------------ | ---- | -------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| <span id="UZ-API-001" />`UZ-API-001` | 429  | Too many requests                | The API is handling its maximum number of requests. Wait for the Retry-After delay, then retry.          | Limit concurrent requests and honor retry delays. |
| <span id="UZ-API-002" />`UZ-API-002` | 503  | Activity stream capacity reached | The API is serving its maximum number of activity streams. Close unused dashboard tabs or retry shortly. | Limit concurrent requests and honor retry delays. |

### Fleet keys

| Code                                           | HTTP | Title               | Why and fix                                     | Prevent                                             |
| ---------------------------------------------- | ---- | ------------------- | ----------------------------------------------- | --------------------------------------------------- |
| <span id="UZ-FLEETKEY-001" />`UZ-FLEETKEY-001` | 404  | Fleet key not found | Fleet key not found. Verify the fleet\_key\_id. | Use a current Fleet API key for the intended fleet. |

### Webhooks

| Code                               | HTTP | Title                                | Why and fix                                                                                                                                         | Prevent                                                               |
| ---------------------------------- | ---- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| <span id="UZ-WH-001" />`UZ-WH-001` | 404  | Fleet not found for webhook          | No fleet is registered for this webhook endpoint.                                                                                                   | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-002" />`UZ-WH-002` | 400  | Malformed webhook                    | Webhook payload could not be parsed. Check Content-Type and body.                                                                                   | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-010" />`UZ-WH-010` | 401  | Invalid webhook signature            | Webhook signature verification failed. Confirm the signing secret stored for this provider (Slack/Clerk/other) matches the one configured upstream. | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-011" />`UZ-WH-011` | 401  | Stale webhook timestamp              | Webhook request timestamp is outside the allowed 5-minute drift window. This may indicate a replay attack or clock skew.                            | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-020" />`UZ-WH-020` | 401  | Webhook credential not configured    | Create a random webhook secret with at least 32 bytes. Store it as this source's webhook\_secret, configure the same value upstream, then resend.   | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-021" />`UZ-WH-021` | 404  | Connector installation is not mapped | Reconnect the provider App to the intended workspace before redelivering the event.                                                                 | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-022" />`UZ-WH-022` | 404  | No fleet subscription matched        | Bind the repository and event to an active fleet with an approved integration grant.                                                                | Keep webhook signing secrets matched and service clocks synchronized. |
| <span id="UZ-WH-030" />`UZ-WH-030` | 413  | Webhook payload too large            | Webhook body exceeds the 1 MiB ingest limit. Reduce the payload size or filter at the source.                                                       | Keep webhook signing secrets matched and service clocks synchronized. |

### Slack

| Code                                 | HTTP | Title                       | Why and fix                                                                                                                                                                 | Prevent                                                      |
| ------------------------------------ | ---- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ |
| <span id="UZ-SLK-010" />`UZ-SLK-010` | 401  | Invalid Slack signature     | The Slack request signature did not verify. Confirm the platform Slack app signing secret matches the one vaulted at slack-app/signing\_secret.                             | Keep Slack app credentials, permissions, and clocks current. |
| <span id="UZ-SLK-011" />`UZ-SLK-011` | 401  | Stale Slack timestamp       | The Slack request timestamp is outside the allowed 5-minute drift window — a replay attempt or a skewed server clock.                                                       | Keep Slack app credentials, permissions, and clocks current. |
| <span id="UZ-SLK-020" />`UZ-SLK-020` | 200  | Slack team not installed    | The Slack team that sent this event has no connector install, so the event is acknowledged (200) and ignored. Re-run Connect Slack in the dashboard to (re)install.         | Keep Slack app credentials, permissions, and clocks current. |
| <span id="UZ-SLK-022" />`UZ-SLK-022` | 502  | Slack token exchange failed | The Slack OAuth code could not be exchanged for a bot token. Retry the connect flow; if the error continues, verify the platform Slack app credentials.                     | Keep Slack app credentials, permissions, and clocks current. |
| <span id="UZ-SLK-030" />`UZ-SLK-030` | 502  | Slack answer post failed    | The channel bot's answer could not be delivered to Slack (missing chat:write, a 429, or a Slack outage). It is logged and retried with backoff; the run itself never fails. | Keep Slack app credentials, permissions, and clocks current. |

### Tools

| Code                                   | HTTP | Title        | Why and fix                                                     | Prevent                               |
| -------------------------------------- | ---- | ------------ | --------------------------------------------------------------- | ------------------------------------- |
| <span id="UZ-TOOL-005" />`UZ-TOOL-005` | 400  | Unknown tool | Unknown tool name. Check spelling against the known tools list. | Declare every tool used by the fleet. |

### Fleets

| Code                                 | HTTP | Title                              | Why and fix                                                                                                           | Prevent                                           |
| ------------------------------------ | ---- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| <span id="UZ-AGT-003" />`UZ-AGT-003` | 424  | Fleet credential missing           | A required credential is not in the vault. Add it with: `agentsfleet secret create <NAME>`                            | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-004" />`UZ-AGT-004` | 500  | Fleet unavailable                  | The fleet could not accept work. Check that the fleet exists and is active, then retry.                               | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-006" />`UZ-AGT-006` | 409  | Fleet name already exists          | A Fleet with this name already exists. Use `agentsfleet kill <name>` first, then deploy again.                        | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-008" />`UZ-AGT-008` | 400  | Invalid fleet config               | That fleet's config isn't valid. Check the trigger, tools, credentials, and budget fields, then try again.            | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-009" />`UZ-AGT-009` | 404  | Fleet not found                    | We couldn't find that Fleet. It may have been deleted, or the identifier doesn't match one in this workspace.         | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-010" />`UZ-AGT-010` | 409  | Fleet state transition not allowed | That action isn't available for this Fleet right now — check its current status and try again.                        | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-011" />`UZ-AGT-011` | 400  | Fleet files disagree on `name:`    | This Fleet Bundle's files disagree on its name. `SKILL.md` and `TRIGGER.md` must match. Fix the source and try again. | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-012" />`UZ-AGT-012` | 409  | Fleet is paused                    | This Fleet is paused. Resume it before sending new work.                                                              | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-013" />`UZ-AGT-013` | 500  | Fleet install rolled back          | We couldn't finish setting up your fleet. Nothing was created — try again.                                            | Use fleet identifiers from the current workspace. |
| <span id="UZ-AGT-014" />`UZ-AGT-014` | 412  | Fleet source is stale              | Someone else edited this Fleet's source since you opened it. Reload to see their change, then re-apply your edit.     | Use fleet identifiers from the current workspace. |

### Schedules

| Code                                     | HTTP | Title                          | Why and fix                                                                                                              | Prevent                                                                         |
| ---------------------------------------- | ---- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- |
| <span id="UZ-SCHED-001" />`UZ-SCHED-001` | 422  | Invalid schedule               | cron must be a valid five-field expression and timezone must name a supported region.                                    | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-002" />`UZ-SCHED-002` | 404  | Schedule not found             | No schedule matches this identifier for the selected Fleet.                                                              | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-003" />`UZ-SCHED-003` | 409  | Schedule limit reached         | A Fleet can hold at most 32 schedules. Remove one before creating another.                                               | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-004" />`UZ-SCHED-004` | 502  | Schedule provider unavailable  | QStash did not confirm the change. Run the schedule sync command shown by the client.                                    | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-005" />`UZ-SCHED-005` | 401  | Invalid schedule signature     | QStash delivery signature verification failed. Confirm the vaulted signing keys and ingress URL.                         | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-006" />`UZ-SCHED-006` | 409  | Schedule update busy           | Another schedule mutation holds the synchronization lease. Retry after the reported delay.                               | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-007" />`UZ-SCHED-007` | 503  | Schedule service unavailable   | QStash credentials are not configured. Follow the registration playbook and roll agentsfleetd.                           | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |
| <span id="UZ-SCHED-008" />`UZ-SCHED-008` | 409  | Schedule source already exists | A schedule already uses this source key for the selected Fleet. Pick a different source or update the existing schedule. | Use a valid schedule, cron expression, timezone, and configured QStash ingress. |

### Fleet Bundles

| Code                                       | HTTP | Title                            | Why and fix                                                                                                                 | Prevent                                            |
| ------------------------------------------ | ---- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| <span id="UZ-BUNDLE-001" />`UZ-BUNDLE-001` | 400  | Invalid Fleet Bundle             | That Fleet Bundle isn't valid. It's missing `SKILL.md`, or has an unsafe or oversized file. Check the source and try again. | Check Fleet Bundle files and limits before upload. |
| <span id="UZ-BUNDLE-002" />`UZ-BUNDLE-002` | 404  | Fleet Bundle not found           | We couldn't find that Fleet Bundle. It may not be installed in this workspace yet — check the Fleet library.                | Check Fleet Bundle files and limits before upload. |
| <span id="UZ-BUNDLE-003" />`UZ-BUNDLE-003` | 424  | Fleet Bundle secrets missing     | This Fleet Bundle needs secrets this workspace doesn't have yet. Add the missing secrets, then install again.               | Check Fleet Bundle files and limits before upload. |
| <span id="UZ-BUNDLE-004" />`UZ-BUNDLE-004` | 502  | Fleet Bundle fetch failed        | We couldn't fetch that Fleet Bundle from GitHub. Check the source and try again.                                            | Check Fleet Bundle files and limits before upload. |
| <span id="UZ-BUNDLE-005" />`UZ-BUNDLE-005` | 503  | Fleet Bundle storage unavailable | We couldn't store your Fleet Bundle right now. Try again shortly.                                                           | Check Fleet Bundle files and limits before upload. |

### Secrets

| Code                                     | HTTP | Title                                       | Why and fix                                                                                                        | Prevent                                      |
| ---------------------------------------- | ---- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| <span id="UZ-VAULT-001" />`UZ-VAULT-001` | 400  | Secret data must be a non-empty JSON object | That secret needs at least one field. Enter it as a JSON object with one or more keys — not a bare string or list. | Use a valid workspace secret name and value. |
| <span id="UZ-VAULT-002" />`UZ-VAULT-002` | 400  | Secret data too large                       | That secret is too large. Keep it under 4 KiB. Trim or shorten the fields.                                         | Use a valid workspace secret name and value. |
| <span id="UZ-VAULT-003" />`UZ-VAULT-003` | 404  | Secret not found                            | We couldn't find that secret. It may have already been deleted — refresh the list.                                 | Use a valid workspace secret name and value. |
| <span id="UZ-VAULT-004" />`UZ-VAULT-004` | 409  | Secret still referenced by model entries    | This key is used by one or more models in your registry. Remove those entries first, then delete the key.          | Use a valid workspace secret name and value. |
| <span id="UZ-VAULT-005" />`UZ-VAULT-005` | 409  | Secret name already taken                   | A secret with that name already exists. Rename this one, or open the existing secret and replace its value.        | Use a valid workspace secret name and value. |

### Model providers

| Code                                           | HTTP | Title                                        | Why and fix                                                                                                                                        | Prevent                                            |
| ---------------------------------------------- | ---- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| <span id="UZ-PROVIDER-001" />`UZ-PROVIDER-001` | 400  | secret\_ref required when mode=self\_managed | Pick a secret to activate. Choose a stored secret before switching to a self-managed model.                                                        | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-002" />`UZ-PROVIDER-002` | 400  | Secret not found                             | We couldn't find that secret. Store it under Secrets & ENVs, then try again.                                                                       | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-003" />`UZ-PROVIDER-003` | 400  | Secret JSON missing required field           | That secret is missing required fields. It needs a provider set (and an API key for a named provider) — edit it under Secrets & ENVs and add them. | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-004" />`UZ-PROVIDER-004` | 400  | Model not in library                         | That model isn't in our library yet. Pick a listed model, or ask us to add support for it.                                                         | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-005" />`UZ-PROVIDER-005` | 400  | Custom endpoint base\_url invalid or unsafe  | That endpoint URL isn't allowed. Use a public https URL for your custom endpoint.                                                                  | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-006" />`UZ-PROVIDER-006` | 404  | Library model not found                      | We couldn't find that model in the library. Refresh the list and try again.                                                                        | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-007" />`UZ-PROVIDER-007` | 409  | Library model is the active platform default | This model is the active platform default — point the default at another model before deleting it.                                                 | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-008" />`UZ-PROVIDER-008` | 409  | Library model already exists                 | That model is already in the library. Edit the existing entry instead of adding a duplicate.                                                       | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-009" />`UZ-PROVIDER-009` | 500  | Platform model key not configured            | Platform defaults aren't set up on this deployment yet. Keep your current provider for now, or contact support.                                    | Configure a supported provider, model, and secret. |
| <span id="UZ-PROVIDER-010" />`UZ-PROVIDER-010` | 500  | Tenant has no primary workspace              | Something's off with your account setup. Contact support with the request id below.                                                                | Configure a supported provider, model, and secret. |

### Tenant models

| Code                                       | HTTP | Title                                | Why and fix                                                                              | Prevent                              |
| ------------------------------------------ | ---- | ------------------------------------ | ---------------------------------------------------------------------------------------- | ------------------------------------ |
| <span id="UZ-MODELS-001" />`UZ-MODELS-001` | 409  | Cannot delete the active model entry | This is your active model — switch to a different one first, then remove this entry.     | Use a model available to the tenant. |
| <span id="UZ-MODELS-002" />`UZ-MODELS-002` | 404  | Referenced secret not found          | We couldn't find that key. Store it under Secrets & ENVs first, or pick an existing key. | Use a model available to the tenant. |
| <span id="UZ-MODELS-003" />`UZ-MODELS-003` | 409  | Model entry already exists           | You already have this model registered with that key. Edit the existing entry instead.   | Use a model available to the tenant. |
| <span id="UZ-MODELS-004" />`UZ-MODELS-004` | 404  | Model entry not found                | We couldn't find that model entry. It may have already been removed — refresh the list.  | Use a model available to the tenant. |

### Dashboard preferences

| Code                                     | HTTP | Title                      | Why and fix                                                       | Prevent                                                               |
| ---------------------------------------- | ---- | -------------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------- |
| <span id="UZ-PREFS-001" />`UZ-PREFS-001` | 400  | Unknown preference key     | That setting doesn't exist. Reload the page and try again.        | Write only preference keys the dashboard declares, with small values. |
| <span id="UZ-PREFS-002" />`UZ-PREFS-002` | 400  | Preference value too large | That setting is too large to save. Reload the page and try again. | Write only preference keys the dashboard declares, with small values. |

### Fleet library catalog

| Code                                         | HTTP | Title                                          | Why and fix                                                                                                       | Prevent                                                                      |
| -------------------------------------------- | ---- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| <span id="UZ-CATALOG-001" />`UZ-CATALOG-001` | 404  | Fleet library entry not found                  | We couldn't find that fleet. It may have already been removed — refresh the page.                                 | Fetch a bundle before publishing a fleet, and unpublish before deleting one. |
| <span id="UZ-CATALOG-002" />`UZ-CATALOG-002` | 409  | Cannot publish a fleet with no bundle          | There's no bundle for this fleet yet. Fetch it from its repository first, then publish.                           | Fetch a bundle before publishing a fleet, and unpublish before deleting one. |
| <span id="UZ-CATALOG-003" />`UZ-CATALOG-003` | 409  | Cannot delete a published fleet                | This fleet is published. Unpublish it first, then delete it.                                                      | Fetch a bundle before publishing a fleet, and unpublish before deleting one. |
| <span id="UZ-CATALOG-004" />`UZ-CATALOG-004` | 409  | Catalog id already taken by another repository | A different repository already owns this fleet's name. Rename the bundle, or confirm you want to replace it.      | Fetch a bundle before publishing a fleet, and unpublish before deleting one. |
| <span id="UZ-CATALOG-005" />`UZ-CATALOG-005` | 412  | Catalog entry changed since you loaded it      | Someone else edited this catalog entry since you opened it. Refresh to see their change, then re-apply your edit. | Fetch a bundle before publishing a fleet, and unpublish before deleting one. |

### Library listings

| Code                                         | HTTP | Title                                                | Why and fix                                                                                              | Prevent                                                                                                                                              |
| -------------------------------------------- | ---- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| <span id="UZ-LIBRARY-001" />`UZ-LIBRARY-001` | 400  | Pagination cursor is malformed                       | That page link is no longer valid. Go back to the first page and try again.                              | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-002" />`UZ-LIBRARY-002` | 400  | Pagination cursor does not match this request        | The filters changed since that page was loaded. Start again from the first page.                         | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-003" />`UZ-LIBRARY-003` | 400  | Pagination or filter input out of bounds             | That request asked for too much at once. Try a smaller page size or a shorter filter.                    | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-004" />`UZ-LIBRARY-004` | 503  | Catalogue version unavailable                        | The model catalogue is temporarily unavailable. Try again shortly.                                       | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-005" />`UZ-LIBRARY-005` | 500  | Response exceeded its size ceiling                   | We couldn't build that page. Try again shortly, and contact support with the request id if it continues. | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-006" />`UZ-LIBRARY-006` | 503  | Data service temporarily unavailable                 | We couldn't reach the database. Try again shortly.                                                       | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |
| <span id="UZ-LIBRARY-008" />`UZ-LIBRARY-008` | 409  | Credential was deleted while it was being referenced | That key was deleted while you were saving. Refresh and pick another key.                                | Page with the `next_cursor` returned by the previous page, keep `limit` within 1 to 100, and start over from the first page after changing a filter. |

### Startup

| Code                                         | HTTP | Title                     | Why and fix                                                                                                                       | Prevent                                                           |
| -------------------------------------------- | ---- | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| <span id="UZ-STARTUP-001" />`UZ-STARTUP-001` | 500  | Required settings missing | The service cannot start because required settings are missing. An operator must add them before retrying startup.                | Operators should verify required service settings before startup. |
| <span id="UZ-STARTUP-002" />`UZ-STARTUP-002` | 500  | Settings could not load   | The service cannot start because one or more settings are invalid. An operator must correct them before retrying startup.         | Operators should verify required service settings before startup. |
| <span id="UZ-STARTUP-003" />`UZ-STARTUP-003` | 500  | Data service unavailable  | The service cannot start because a required data service is unreachable. An operator must restore access before retrying startup. | Operators should verify required service settings before startup. |
| <span id="UZ-STARTUP-004" />`UZ-STARTUP-004` | 500  | Event service unavailable | The service cannot start because its event service is unreachable. An operator must restore access before retrying startup.       | Operators should verify required service settings before startup. |
| <span id="UZ-STARTUP-005" />`UZ-STARTUP-005` | 500  | Stored data is not ready  | The service cannot start because stored data is not ready. An operator must finish the data update before retrying startup.       | Operators should verify required service settings before startup. |
| <span id="UZ-STARTUP-006" />`UZ-STARTUP-006` | 500  | Service could not start   | The host lacked enough memory during startup. Free memory or use a larger host, then retry.                                       | Operators should verify required service settings before startup. |

### Runners

| Code                                 | HTTP | Title                                         | Why and fix                                                                                                                                                                                   | Prevent                                                         |
| ------------------------------------ | ---- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| <span id="UZ-RUN-001" />`UZ-RUN-001` | 401  | Invalid runner token                          | The Bearer runner\_token is missing, malformed, or not recognized. Re-register the runner.                                                                                                    | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-005" />`UZ-RUN-005` | 409  | Stale fencing token                           | The lease was reclaimed by a newer holder. This report is rejected; the current holder's result wins.                                                                                         | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-006" />`UZ-RUN-006` | 404  | Lease not found                               | No active lease matches this lease\_id for the presenting runner; it may have expired, been reclaimed, or never existed.                                                                      | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-009" />`UZ-RUN-009` | 401  | Runner admin state blocks access              | This runner is cordoned, draining, drained, or revoked and cannot call the runner plane. Re-enroll the host to mint a fresh runner token.                                                     | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-010" />`UZ-RUN-010` | 409  | Lease exceeded max runtime                    | The lease reached its maximum runtime and cannot renew. The runner stops the child and reports any result.                                                                                    | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-011" />`UZ-RUN-011` | 409  | Lease lost                                    | The lease moved to another runner before renewal. The former runner must stop its child.                                                                                                      | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-012" />`UZ-RUN-012` | 402  | Lease renewal blocked: no credits             | The tenant balance cannot cover another run slice. The lease does not renew, and the run stops cleanly.                                                                                       | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-013" />`UZ-RUN-013` | 400  | Renew body malformed                          | The renew request body could not be parsed. Token counts become zero, but the renewed slice still charges for runtime. The lease still renews.                                                | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-014" />`UZ-RUN-014` | 404  | Runner not found                              | We couldn't find that runner. It may have been removed — refresh the list.                                                                                                                    | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-015" />`UZ-RUN-015` | 402  | Lease renewal blocked: fleet budget exhausted | The fleet reached its daily\_dollars or monthly\_dollars limit from `TRIGGER.md`. The lease cannot renew, so the run stops. This differs from UZ-RUN-012, which reports a low tenant balance. | Keep runner settings and lease health within configured limits. |
| <span id="UZ-RUN-016" />`UZ-RUN-016` | 409  | Active runner must be revoked before deletion | This runner is still live. Revoke it first, then delete it.                                                                                                                                   | Keep runner settings and lease health within configured limits. |

### Runs

| Code                                   | HTTP | Title                            | Why and fix                                                                                                                                                                                          | Prevent                                                |
| -------------------------------------- | ---- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| <span id="UZ-EXEC-003" />`UZ-EXEC-003` | 500  | Run timed out                    | The run exceeded its time limit and stopped.                                                                                                                                                         | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-004" />`UZ-EXEC-004` | 500  | Run memory limit reached         | The run reached its memory limit and stopped.                                                                                                                                                        | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-005" />`UZ-EXEC-005` | 500  | Run resource limit reached       | The run reached a resource limit and stopped.                                                                                                                                                        | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-006" />`UZ-EXEC-006` | 500  | Runner connection lost           | The connection to the runner was lost.                                                                                                                                                               | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-007" />`UZ-EXEC-007` | 500  | Run lease expired                | The run took too long and its lease expired.                                                                                                                                                         | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-008" />`UZ-EXEC-008` | 500  | Run stopped during renewal       | The run stopped because its lease was lost, expired, or refused renewal.                                                                                                                             | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-009" />`UZ-EXEC-009` | 500  | Runner security check failed     | Check the runner security settings before retrying.                                                                                                                                                  | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-010" />`UZ-EXEC-010` | 500  | Run crashed                      | The run process crashed. Check the activity stream for details.                                                                                                                                      | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-011" />`UZ-EXEC-011` | 403  | Landlock policy deny             | Landlock policy denied the filesystem operation.                                                                                                                                                     | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-012" />`UZ-EXEC-012` | 500  | Runner fleet init failed         | Runner fleet initialization failed. Check configuration.                                                                                                                                             | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-013" />`UZ-EXEC-013` | 500  | Runner fleet run failed          | The runner could not finish the fleet run. Check the activity stream.                                                                                                                                | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-014" />`UZ-EXEC-014` | 400  | Run settings invalid             | The run settings are invalid. Check the fleet files before retrying.                                                                                                                                 | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-015" />`UZ-EXEC-015` | 402  | Run stopped: fleet limit reached | The run stopped because the fleet reached its configured limit.                                                                                                                                      | Check runner settings and access before starting work. |
| <span id="UZ-EXEC-016" />`UZ-EXEC-016` | 401  | Runner token rejected            | The control plane rejected this host's agt\_r runner token (401/403) on the heartbeat. Retrying can't fix it — mint a fresh agt\_r and issue the host's runner token again, then restart the runner. | Check runner settings and access before starting work. |

### Approvals

| Code                                           | HTTP | Title                        | Why and fix                                                                                                | Prevent                                 |
| ---------------------------------------------- | ---- | ---------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| <span id="UZ-APPROVAL-001" />`UZ-APPROVAL-001` | 400  | Approval parse failed        | That approval gate's config is invalid. Check the gates section in TRIGGER.md.                             | Resolve only current approval requests. |
| <span id="UZ-APPROVAL-002" />`UZ-APPROVAL-002` | 404  | Approval not found           | That approval action wasn't found. It may have already timed out or been resolved elsewhere.               | Resolve only current approval requests. |
| <span id="UZ-APPROVAL-003" />`UZ-APPROVAL-003` | 401  | Approval invalid signature   | That approval callback couldn't be verified. Check the signing secret configuration.                       | Resolve only current approval requests. |
| <span id="UZ-APPROVAL-004" />`UZ-APPROVAL-004` | 503  | Approval service unavailable | Approvals are temporarily unavailable. We deny requests while this service is down. Try again shortly.     | Resolve only current approval requests. |
| <span id="UZ-APPROVAL-005" />`UZ-APPROVAL-005` | 400  | Approval condition invalid   | That approval gate's condition is invalid. Check the gate's condition expression for a supported operator. | Resolve only current approval requests. |
| <span id="UZ-APPROVAL-006" />`UZ-APPROVAL-006` | 409  | Approval already resolved    | Someone already resolved this. Refresh to see the outcome and who resolved it.                             | Resolve only current approval requests. |

### Memory

| Code                                 | HTTP | Title                         | Why and fix                                                                                                            | Prevent                                            |
| ------------------------------------ | ---- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| <span id="UZ-MEM-002" />`UZ-MEM-002` | 404  | Fleet not found for memory op | The fleet\_id does not exist or does not belong to the requesting workspace. Verify the fleet\_id and workspace scope. | Use an existing fleet and a valid memory category. |
| <span id="UZ-MEM-003" />`UZ-MEM-003` | 503  | Saved memory unavailable      | Saved memory is unavailable. The fleet uses temporary workspace memory until the service recovers.                     | Use an existing fleet and a valid memory category. |
| <span id="UZ-MEM-004" />`UZ-MEM-004` | 404  | Memory entry not found        | That memory entry is already gone — the fleet isn't holding anything under that key.                                   | Use an existing fleet and a valid memory category. |

### API keys

| Code                                       | HTTP | Title                                                | Why and fix                                                                                     | Prevent                                                   |
| ------------------------------------------ | ---- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| <span id="UZ-APIKEY-001" />`UZ-APIKEY-001` | 401  | Invalid API key                                      | API key is invalid or revoked. Mint a replacement with: `POST /v1/workspaces/{ws}/fleet-keys`   | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-003" />`UZ-APIKEY-003` | 404  | API key not found                                    | We couldn't find that API key. It may have already been deleted — refresh the list.             | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-004" />`UZ-APIKEY-004` | 401  | API key has been revoked                             | This key was revoked and can no longer authenticate. Mint a replacement with: POST /v1/api-keys | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-005" />`UZ-APIKEY-005` | 409  | Key name already exists in this tenant               | An API key with that name already exists. Pick a different name for this tenant.                | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-006" />`UZ-APIKEY-006` | 409  | API key is already revoked                           | That API key is already revoked. Refresh the list to see its current state.                     | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-007" />`UZ-APIKEY-007` | 409  | active cannot be set to true; mint a new key instead | A revoked key can't be reactivated. Mint a new key instead.                                     | Use current API key identifiers and replace revoked keys. |
| <span id="UZ-APIKEY-008" />`UZ-APIKEY-008` | 409  | Active API key must be revoked before deletion       | Revoke this key before deleting it. Revoke it first, then delete the revoked key.               | Use current API key identifiers and replace revoked keys. |

### Integration grants

| Code                                     | HTTP | Title                            | Why and fix                                                                                                                            | Prevent                                               |
| ---------------------------------------- | ---- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| <span id="UZ-GRANT-001" />`UZ-GRANT-001` | 403  | No integration grant for service | This fleet has no approved grant for the target service. Request one with: `POST /v1/workspaces/{ws}/fleets/{id}/integration-requests` | Use active integration grants approved for the fleet. |
| <span id="UZ-GRANT-002" />`UZ-GRANT-002` | 404  | Integration grant not found      | We couldn't find that grant request. It may have already been resolved — refresh the list.                                             | Use active integration grants approved for the fleet. |
| <span id="UZ-GRANT-003" />`UZ-GRANT-003` | 409  | Grant already resolved           | Someone already resolved this. Refresh to see the outcome and who resolved it.                                                         | Use active integration grants approved for the fleet. |

### Credentials

| Code                                   | HTTP | Title                            | Why and fix                                                                                                                                                                            | Prevent                                                  |
| -------------------------------------- | ---- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| <span id="UZ-CRED-001" />`UZ-CRED-001` | 404  | Integration not connected        | That integration isn't connected. Connect it from the Integrations page, then try again.                                                                                               | Create required workspace secrets before starting a run. |
| <span id="UZ-CRED-002" />`UZ-CRED-002` | 503  | Credential broker not configured | The on-demand credential broker is not wired on this deployment (a boot-time misconfiguration, not a client error). An operator must configure it before runners can mint credentials. | Create required workspace secrets before starting a run. |

### GitHub

| Code                               | HTTP | Title                         | Why and fix                                                                                                                                                                                                     | Prevent                                                        |
| ---------------------------------- | ---- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| <span id="UZ-GH-001" />`UZ-GH-001` | 409  | GitHub App reconnect required | The GitHub App installation is gone (uninstalled or revoked), so no token can be minted. Reconnect GitHub from the dashboard — the fleet stays blocked until the App is reinstalled.                            | Keep the GitHub App installed with required repository access. |
| <span id="UZ-GH-002" />`UZ-GH-002` | 502  | GitHub token mint failed      | GitHub did not return an installation token (upstream 5xx, network, or a malformed exchange response). This is temporary. Retry shortly; if the error continues, check GitHub status and the App configuration. | Keep the GitHub App installed with required repository access. |

### Connectors

| Code                                   | HTTP | Title                                         | Why and fix                                                                                                            | Prevent                                                |
| -------------------------------------- | ---- | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
| <span id="UZ-CONN-001" />`UZ-CONN-001` | 503  | Connector not configured                      | This connector isn't set up yet. Contact your operator to enable it.                                                   | Check the provider connection before sending requests. |
| <span id="UZ-CONN-002" />`UZ-CONN-002` | 400  | Invalid connect state                         | That connection attempt expired or was already used. Start connecting again from the dashboard.                        | Check the provider connection before sending requests. |
| <span id="UZ-CONN-003" />`UZ-CONN-003` | 502  | Connector vendor call exceeded its deadline   | We couldn't reach that service right now. Try again shortly.                                                           | Check the provider connection before sending requests. |
| <span id="UZ-CONN-004" />`UZ-CONN-004` | 404  | Unknown connector provider                    | We don't recognize that connector. Check the available connectors on the dashboard.                                    | Check the provider connection before sending requests. |
| <span id="UZ-CONN-006" />`UZ-CONN-006` | 502  | Connector OAuth exchange failed               | That connection didn't go through. Try connecting again from the dashboard.                                            | Check the provider connection before sending requests. |
| <span id="UZ-CONN-007" />`UZ-CONN-007` | 500  | Connector catalog lookup failed               | We couldn't load your connectors right now. Try refreshing — if it keeps failing, contact support.                     | Check the provider connection before sending requests. |
| <span id="UZ-CONN-008" />`UZ-CONN-008` | 403  | Connector installation ownership not verified | We couldn't verify that this GitHub installation belongs to you. Sign in with the owning GitHub account and try again. | Check the provider connection before sending requests. |

## Related pages

* [API introduction](/api-reference/introduction)
* [API scopes](/api-reference/scopes)
* [Troubleshoot fleets](/fleets/troubleshooting)
