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

# Errors

> Every error tag the app and tooling endpoints return, with its status and fields.

> Reintersect apps are in developer preview. Names and limits can still change before general
> release.

Errors are JSON with `_tag`, `message`, `path` (the request field at fault, often empty) and the
fields below. Match on `_tag`; messages are for people and may change. The SDK exposes the same tags
as error classes. Each endpoint's page lists the tags that endpoint returns.

## Common

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectApiInvalidRequestError` | 400 | `issues: { message, path }[]` | The request doesn't match the schema. |
| `ReintersectApiInvalidCursorError` | 400 | `cursor?` | The cursor isn't from this query. |
| `ReintersectApiRateLimitExceededError` | 429 | | Slow down and retry later. |
| `ReintersectApiInternalServerError` | 500 | | Reintersect failed. Retry reads; check state before retrying writes. |
| `ReintersectApiServiceUnavailableError` | 503 | | Temporarily unavailable. Retry with backoff. |

The SDK also has `ReintersectApiUnknownError`, with the response's HTTP `status`, for an error body
it doesn't recognize. The server never sends this tag.

## Credentials

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectAppTokenMissingError` | 401 | | No bearer credential. |
| `ReintersectAppTokenInvalidError` | 401 | | Invalid or expired credential. |
| `ReintersectAppInteractionExpiredError` | 401 | | The interaction token expired. |
| `ReintersectAppInstallRevokedError` | 403 | `installId` | The install was uninstalled or suspended. |
| `ReintersectAppInstallNotFoundError` | 404 | `installId` | No such install for your app. |
| `ReintersectAppScopeMissingError` | 403 | `scope` | The install hasn't granted this scope. |
| `ReintersectAppOAuthInvalidClientError` | 401 | `error: "invalid_client"`, `error_description` | Wrong client credentials. |
| `ReintersectAppOAuthInvalidGrantError` | 400 | `error: "invalid_grant"`, `error_description` | Bad install code, redirect URI or verifier. |

## Blocks and references

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectAppBlockNotFoundError` | 404 | `blockId` | No such block for your install. |
| `ReintersectAppBlockTypeUnknownError` | 422 | `blockType` | The installed version has no such block type. |
| `ReintersectAppBlockPropsInvalidError` | 422 | `issues` | Props don't match the schema. |
| `ReintersectAppBlockStateInvalidError` | 422 | `blockId?`, `issues` | State doesn't match the schema. |
| `ReintersectAppBlockVersionConflictError` | 409 | `blockId`, `expectedVersion`, `currentVersion` | The block changed. |
| `ReintersectAppBlockFinalError` | 409 | `blockId` | The block is final. |
| `ReintersectAppResponseInvalidError` | 502 | | Your app's answer to a delivery Reintersect needed was invalid. |
| `ReintersectAppReferenceKindUnknownError` | 422 | `kind` | The installed version has no such reference kind. |
| `ReintersectAppReferenceKindNotSearchableError` | 422 | `kind` | The kind has no `search`. |

## Circles, conversations and members

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectAppCircleNotFoundError` | 404 | `circleIds` | A circle doesn't exist in the workspace, your app can't reach it, or it can't take app messages. `circleIds` lists them. Returned by search objects, memories, stream events, and block inserts and replies that target `circleId`. |
| `ReintersectApiConversationNotFoundError` | 404 | `conversationId` | No such conversation within the install's reach. |
| `ReintersectApiReplyNotFoundError` | 404 | `replyId` | No such reply within the install's reach. |
| `ReintersectApiReplyNestingLimitError` | 422 | `parentReplyId` | Replies don't nest deeper. |
| `ReintersectAppMemberNotFoundError` | 404 | `memberId` | No such member, or not one this install may notify. |

## Message content

Replies and deferred invocation answers validate their `content` document:

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectApiInvalidDocumentError` | 422 | `reason`: `empty`, `invalid-structure`, `invalid-attributes`, `unsupported` | The content isn't a valid document. |
| `ReintersectApiMentionUnavailableError` | 422 | `mentionId`, `mentionType`: `person`, `circle`, `conversation` | A mention names something that doesn't exist or that your app can't reach. |
| `ReintersectApiCircleMentionUnavailableError` | 422 | `slug` | A circle mentioned by slug doesn't exist or your app can't reach it. |
| `ReintersectApiInvalidEmojiNameError` | 422 | `name` | An unknown emoji name. |
| `ReintersectApiUnsafeLinkError` | 422 | `href` | A link uses a scheme Reintersect doesn't allow. |
| `ReintersectApiInvalidAssetReferenceError` | 422 | `assetId`, `reason`: `missing`, `not-ready`, `conflict` | An asset reference in the content can't be used. |

## App streams

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectAppStreamRevokedError` | 410 | | Your app's stream in this circle was revoked. |
| `ReintersectAppStreamInvalidPayloadError` | 400 | `reason`: `invalid_document`, `unsupported_node`, `empty` | The event content was rejected. |

## Deploy and tooling

| `_tag` | Status | Fields | Meaning |
| - | - | - | - |
| `ReintersectAppNotFoundError` | 404 | `appId` | No such app, or the credential may not use it. |
| `ReintersectAppVersionNotFoundError` | 404 | `appId`, `target` | No version for that target. |
| `ReintersectAppsUnavailableError` | 403 | | Apps aren't available in the workspace. |
| `ReintersectAppDevSlugUnavailableError` | 409 | `slug` | No free development app slug. |
| `ReintersectAppManifestInvalidError` | 422 | `reason` | The manifest breaks a rule. See [reasons](/reference/manifest#validation). |
| `ReintersectAppPatternInvalidError` | 422 | `pattern`, `reason` | A reference pattern is invalid. |
| `ReintersectAppBundleInvalidError` | 422 | `reason`: `empty`, `too-large`, `not-a-module` | The hosted bundle is unusable. |
| `ReintersectAppOidcTokenInvalidError` | 401 | | The GitHub OIDC token is invalid. |
| `ReintersectAppOidcUntrustedError` | 403 | `repository` | The app doesn't trust this repository, branch or environment. |
| `ReintersectAppDeployTargetForbiddenError` | 403 | | The credential may not change production, or may not use this endpoint. |
| `ReintersectAppEnvVarNotFoundError` | 404 | `key` | No such environment variable. |
| `ReintersectAppEnvVarLimitError` | 422 | `limit` | The environment is full. |
| `ReintersectAppNotHostedError` | 422 | `appId` | The app is self-hosted. |
| `ReintersectCliAuthorizationPendingError` | 400 | | Keep polling. |
| `ReintersectCliSlowDownError` | 400 | `interval` | Poll less often. |
| `ReintersectCliDeviceCodeExpiredError` | 400 | | Start over. |
| `ReintersectCliAccessDeniedError` | 400 | | The member declined. |

The current `reason` values of `ReintersectAppPatternInvalidError` are `too-long`, `not-absolute`,
`insecure-scheme`, `credentials`, `search-or-hash`, `host-port`, `host-wildcard`, `host-invalid`,
`public-suffix-wildcard`, `regex-group`, `multiple-params`, `optional-not-final`, `param-name`,
`param-wildcard`, `param-partial`, `wildcard-not-final`, `wildcard-partial`, `unsupported-group`,
`literal-invalid`, `empty-segment`, `duplicate-param`, `too-many-segments` and `too-many-groups`. The
message explains each one.


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