---
title: Read support conversation history
description: Reads the known ID directly, independently of list or sync windows.
  Returns up to 100 messages in chronological order with structured authors and
  complete attachment metadata. Continue with nextCursor until null. Save
  checkpoint and pass it as cursor…
type: api-reference
source: ./openapi/inth-api.json
method: get
path: /v1/support/conversations/{conversationId}
operationId: getSupportConversation
server: https://api.inth.com
apiVersion: 1.0.0
tags:
  - Support
canonicalUrl: https://inth.com/docs/rest-api/support/get-support-conversation
lastModified: "2026-10-30T13:05:44.605Z"
---
```http
GET /v1/support/conversations/{conversationId}
```

Server: `https://api.inth.com`

Operation ID: `getSupportConversation`

Reads the known ID directly, independently of list or sync windows. Returns up to 100 messages in chronological order with structured authors and complete attachment metadata. Continue with nextCursor until null. Save checkpoint and pass it as cursor to poll for new messages. Internal operator notes are excluded. Attachment downloadUrl paths accept the same bearer token. Requires support.read and a user token. Organization API keys cannot call this operation. No operator or staff access is granted.

## Authentication

* bearerAuth

### Schemes

* bearerAuth: http / bearer - Use an Inth API key or OAuth access token in the Authorization header.

  Product operations need a capability. Feedback intake only requires authentication. An OAuth access token carries the capabilities it was granted as scopes; an organization API key carries a fixed set (\`organizations.read\`, \`projects.read\`, \`projects.write\`, \`api-keys.read\`, \`inbox.read\`, \`billing.read\`), so writes that name the person who made them, such as \`inbox.write\` and \`vendors.write\`, need a user token. A credential without the capability an operation needs is answered with \`403 INSUFFICIENT\_SCOPE\`. \`GET /v1/me\` reports the capabilities of the calling credential.

  OAuth scopes:
  - \`organizations.read\`: List the organizations you belong to.
  - \`organizations.write\`: Create organizations you will own.
  - \`projects.read\`: Read projects, their consent configuration, and the vendors seen on them.
  - \`projects.write\`: Create, update, and delete projects and their consent configuration.
  - \`members.read\`: Read member names, email addresses, profile images, roles, and pending invitation email addresses.
  - \`members.write\`: Invite members, change member roles, remove members, and cancel invitations.
  - \`api-keys.read\`: List organization API keys.
  - \`api-keys.write\`: Create, roll, and delete organization API keys.
  - \`code-audit.read\`: Read Code Audit scans, their findings, and connected repositories.
  - \`code-audit.write\`: Start Code Audit scans and unlock their reports.
  - \`inbox.read\`: Read Inbox findings.
  - \`inbox.write\`: Change Inbox status or assignment and open GitHub issues for findings.
  - \`vendors.write\`: Approve or ignore vendors detected on your projects, which resolves their Inbox findings.
  - \`billing.read\`: Read the plan and credit balance of an organization.
  - \`billing.details.read\`: Read invoices, billing profiles, and payment method summaries for organizations you own.
  - \`consent.read\`: Read consent records, analytics, configuration, and runtime status.
  - \`consent.write\`: Update consent settings, translations, IAB configuration, and policies.
  - \`consent.keys.read\`: Read consent runtime key metadata. Secret values are never returned.
  - \`website-audit.read\`: Read website audit targets, scans, reports, cookies, and evidence.
  - \`website-audit.write\`: Manage website audit targets, verify domains, review findings, and start scans.
  - \`account.read\`: Read your account profile.
  - \`notifications.read\`: Read your notification preferences and organization routing.
  - \`organization-retention.read\`: Read organization provider data retention policy.
  - \`support.read\`: Read support conversations you own or can access through sharing.
  - \`support.write\`: Create support conversations, send messages, share or close them, and upload support attachments.
  - \`consent.lifecycle.write\`: Update, upgrade or delete Consent runtimes.
  - \`consent.keys.write\`: Create, rotate and revoke Consent runtime keys.
  - \`billing.write\`: Preview and change plans, buy credits, manage billing details and subscriptions, and open hosted payment flows.
  - \`account.security.read\`: Read your active browser sessions and connected device grants.
  - \`account.security.write\`: Revoke your browser sessions and connected device grants.
  - \`integrations.read\`: Read connected integration accounts, repositories, provider properties and project links.
  - \`integrations.write\`: Connect and sync providers, manage repository settings, project links and paid pull request monitoring.
  - \`account.write\`: Update your name, avatar and PII masking preference.
  - \`account.delete\`: Permanently delete your account after ownership checks and confirmation.
  - \`notifications.write\`: Update your notification preferences.
  - \`notifications.routing.write\`: Manage organization notification routing.
  - \`organization-retention.write\`: Change organization provider data retention policy.
  - \`organizations.settings.write\`: Update organization name, logo and slug.
  - \`organizations.delete\`: Permanently delete organizations you own after confirmation.
  - \`agents.read\`: Read your Inth Agent chats and chats shared with your organization.
  - \`agents.write\`: Start Inth Agent chats, send messages, share your chats with the organization, and delete your chats. Agent replies use organization credits.

## Request

### Path Parameters

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`conversationId`|string|required||

### Query Parameters

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`organizationId`|string|optional|For lists, omit to use the saved organization. A known conversation resolves its organization independently; pass this to require a specific organization.|
|`cursor`|string|optional|Opaque nextCursor returned by the same operation. Bound to the organization and user for lists, and to the organization and conversation for messages. A conversation checkpoint can also be used here to poll for new messages.|

## Code Examples

### cURL

```bash
curl -X GET "https://api.inth.com/v1/support/conversations/{conversationId}" \
  -H "Authorization: Bearer <token>"
```

### JavaScript

```ts
const response = await fetch("https://api.inth.com/v1/support/conversations/{conversationId}", {
  method: "GET",
  headers: {
    "Authorization": "Bearer <token>"
  },
});
const data = await response.json();
```

## Responses

### 200

Success

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|unknown|required||
|`data`|object|required||
|`data.organizationId`|string|required||
|`data.conversation`|object|required||
|`data.conversation.id`|string|required||
|`data.conversation.subject`|string|required||
|`data.conversation.status`|"open" \|"closed"|required||
|`data.conversation.visibility`|"personal" \|"organization"|required||
|`data.conversation.creator`|object|required||
|`data.conversation.creator.id`|string|required||
|`data.conversation.creator.name`|string|required||
|`data.conversation.closedAt`|string \|null|required||
|`data.conversation.createdAt`|string|required|An ISO 8601 UTC date-time string.|
|`data.conversation.updatedAt`|string|required|An ISO 8601 UTC date-time string.|
|`data.messages`|object\[]|required||
|`data.messages[].id`|string|required||
|`data.messages[].conversationId`|string|required||
|`data.messages[].role`|"customer" \|"agent" \|"system" \|"internal\_note"|required||
|`data.messages[].source`|"web" \|"slack" \|"backoffice" \|"email"|required||
|`data.messages[].authorKind`|"human" \|"system"|required||
|`data.messages[].author`|object \|null|required||
|`data.messages[].clientMessageId`|string \|null|required||
|`data.messages[].text`|string|required||
|`data.messages[].attachments`|object\[]|required||
|`data.messages[].attachments[].id`|string|required||
|`data.messages[].attachments[].messageId`|string \|null|required||
|`data.messages[].attachments[].fileName`|string|required||
|`data.messages[].attachments[].mediaType`|string|required||
|`data.messages[].attachments[].sizeBytes`|integer|required||
|`data.messages[].attachments[].kind`|"image" \|"screen\_recording" \|"file"|required||
|`data.messages[].attachments[].status`|"uploading" \|"ready" \|"failed"|required||
|`data.messages[].attachments[].downloadUrl`|string|required||
|`data.messages[].attachments[].failureReason`|string \|null|optional||
|`data.messages[].attachments[].createdAt`|string|required|An ISO 8601 UTC date-time string.|
|`data.messages[].attachments[].uploadedAt`|string \|null|required||
|`data.messages[].sentAt`|string|required|An ISO 8601 UTC date-time string.|
|`data.nextCursor`|string \|null|required||
|`data.checkpoint`|string \|null|required||
|`data.hasMore`|boolean|required||

Example:

```json
{
  "success": {},
  "data": {
    "organizationId": "string",
    "conversation": {
      "id": "string",
      "subject": "string",
      "status": "open",
      "visibility": "personal",
      "creator": {
        "id": "string",
        "name": "string"
      },
      "closedAt": "string",
      "createdAt": "string",
      "updatedAt": "string"
    },
    "messages": [
      {
        "id": "string",
        "conversationId": "string",
        "role": "customer",
        "source": "web",
        "authorKind": "human",
        "author": {},
        "clientMessageId": "string",
        "text": "string",
        "attachments": [
          {
            "id": "string",
            "messageId": "string",
            "fileName": "string",
            "mediaType": "string",
            "sizeBytes": 0,
            "kind": "image",
            "status": "uploading",
            "downloadUrl": "string",
            "failureReason": "string",
            "createdAt": "string",
            "uploadedAt": "string"
          }
        ],
        "sentAt": "string"
      }
    ],
    "nextCursor": "string",
    "checkpoint": "string",
    "hasMore": true
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "data"
  ],
  "properties": {
    "success": {
      "const": true
    },
    "data": {
      "type": "object",
      "properties": {
        "organizationId": {
          "type": "string"
        },
        "conversation": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "maxLength": 64,
              "pattern": "^spc_[1-9a-km-z]+$"
            },
            "subject": {
              "type": "string"
            },
            "status": {
              "type": "string",
              "enum": [
                "open",
                "closed"
              ]
            },
            "visibility": {
              "type": "string",
              "enum": [
                "personal",
                "organization"
              ]
            },
            "creator": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255
                }
              },
              "required": [
                "id",
                "name"
              ],
              "additionalProperties": false
            },
            "closedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
                  "title": "Support date-time",
                  "description": "An ISO 8601 UTC date-time string."
                },
                {
                  "type": "null"
                }
              ]
            },
            "createdAt": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
              "title": "Support date-time",
              "description": "An ISO 8601 UTC date-time string."
            },
            "updatedAt": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
              "title": "Support date-time",
              "description": "An ISO 8601 UTC date-time string."
            }
          },
          "required": [
            "id",
            "subject",
            "status",
            "visibility",
            "creator",
            "closedAt",
            "createdAt",
            "updatedAt"
          ],
          "additionalProperties": false
        },
        "messages": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 64,
                "pattern": "^spm_[1-9a-km-z]+$"
              },
              "conversationId": {
                "type": "string",
                "maxLength": 64,
                "pattern": "^spc_[1-9a-km-z]+$"
              },
              "role": {
                "type": "string",
                "enum": [
                  "customer",
                  "agent",
                  "system",
                  "internal_note"
                ]
              },
              "source": {
                "type": "string",
                "enum": [
                  "web",
                  "slack",
                  "backoffice",
                  "email"
                ]
              },
              "authorKind": {
                "type": "string",
                "enum": [
                  "human",
                  "system"
                ]
              },
              "author": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      },
                      "name": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 255
                      }
                    },
                    "required": [
                      "id",
                      "name"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "clientMessageId": {
                "anyOf": [
                  {
                    "type": "string",
                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$",
                    "format": "uuid"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64000
              },
              "attachments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "maxLength": 64,
                      "pattern": "^sat_[1-9a-km-z]+$"
                    },
                    "messageId": {
                      "anyOf": [
                        {
                          "type": "string",
                          "maxLength": 64,
                          "pattern": "^spm_[1-9a-km-z]+$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "mediaType": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    },
                    "sizeBytes": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 4294967295
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "image",
                        "screen_recording",
                        "file"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "uploading",
                        "ready",
                        "failed"
                      ]
                    },
                    "downloadUrl": {
                      "type": "string",
                      "pattern": "^\\/v1\\/support\\/attachments\\/sat_[1-9a-km-z]+\\/content$"
                    },
                    "failureReason": {
                      "anyOf": [
                        {
                          "type": "string",
                          "maxLength": 1000
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "createdAt": {
                      "type": "string",
                      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
                      "title": "Support date-time",
                      "description": "An ISO 8601 UTC date-time string."
                    },
                    "uploadedAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
                          "title": "Support date-time",
                          "description": "An ISO 8601 UTC date-time string."
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "messageId",
                    "fileName",
                    "mediaType",
                    "sizeBytes",
                    "kind",
                    "status",
                    "downloadUrl",
                    "createdAt",
                    "uploadedAt"
                  ],
                  "additionalProperties": false
                }
              },
              "sentAt": {
                "type": "string",
                "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{1,9})?Z$",
                "title": "Support date-time",
                "description": "An ISO 8601 UTC date-time string."
              }
            },
            "required": [
              "id",
              "conversationId",
              "role",
              "source",
              "authorKind",
              "author",
              "clientMessageId",
              "text",
              "attachments",
              "sentAt"
            ],
            "additionalProperties": false
          }
        },
        "nextCursor": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            {
              "type": "null"
            }
          ]
        },
        "checkpoint": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096,
              "pattern": "^[A-Za-z0-9_-]+$"
            },
            {
              "type": "null"
            }
          ]
        },
        "hasMore": {
          "type": "boolean"
        }
      },
      "required": [
        "organizationId",
        "conversation",
        "messages",
        "nextCursor",
        "checkpoint",
        "hasMore"
      ],
      "additionalProperties": false
    }
  }
}
```

### 400

The request payload or parameters are invalid.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: default

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PAYLOAD",
    "message": "Invalid request payload",
    "details": [
      {
        "code": "too_small",
        "message": "Too small: expected string to have >=1 characters",
        "path": [
          "name"
        ]
      }
    ]
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 401

Authentication is missing, invalid, or expired.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: default

```json
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

### 403

The credential is valid but may not perform the operation.

\`INSUFFICIENT\_SCOPE\`: the credential was never granted the capability the operation needs. \`details.requiredScope\` names it, and the \`WWW-Authenticate\` header carries \`Bearer error="insufficient\_scope"\`. An OAuth client fixes this by requesting the scope; an organization API key cannot gain it.

\`FORBIDDEN\`: the capability is present but the membership behind the credential lacks the role, or the resource belongs to another organization.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example: insufficientScope

```json
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_SCOPE",
    "message": "This token was not granted the projects.write scope",
    "details": {
      "requiredScope": "projects.write"
    }
  }
}
```

Example: forbidden

```json
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "Organization membership is required"
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

#### Headers

|Name|Type|Required|Description|
|:--|:--|:--|:--|
|`WWW-Authenticate`|string|optional|Present on \`INSUFFICIENT\_SCOPE\`: \`Bearer error="insufficient\_scope", scope="\<required scope>"\`.|

### 404

The requested resource was not found.

Content type: application/json

|Property|Type|Required|Description|
|:--|:--|:--|:--|
|`success`|boolean|required||
|`error`|object|required||
|`error.code`|"UNAUTHORIZED" \|"FORBIDDEN" \|"INSUFFICIENT\_SCOPE" \|"PLAN\_LIMIT\_REACHED" \|"PLAN\_REQUIRED" \|"INVALID\_ORIGIN" \|"INVALID\_REGION" \|"INVALID\_PAYLOAD" \|"NOT\_FOUND" \|"CONFLICT" \|"KEY\_LIMIT\_REACHED" \|"INSUFFICIENT\_CREDITS" \|"SCAN\_IN\_PROGRESS" \|"UNLOCK\_REQUIRED" \|"REPOSITORY\_NOT\_LINKED" \|"PAYLOAD\_TOO\_LARGE" \|"RATE\_LIMITED" \|"SERVICE\_UNAVAILABLE" \|"INTERNAL\_ERROR"|required||
|`error.message`|string|required||
|`error.details`|unknown|optional|Optional structured error details.|

Example:

```json
{
  "success": true,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "string",
    "details": {}
  }
}
```

JSON Schema:

```json
{
  "type": "object",
  "required": [
    "success",
    "error"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "const": false
    },
    "error": {
      "type": "object",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "UNAUTHORIZED",
            "FORBIDDEN",
            "INSUFFICIENT_SCOPE",
            "PLAN_LIMIT_REACHED",
            "PLAN_REQUIRED",
            "INVALID_ORIGIN",
            "INVALID_REGION",
            "INVALID_PAYLOAD",
            "NOT_FOUND",
            "CONFLICT",
            "KEY_LIMIT_REACHED",
            "INSUFFICIENT_CREDITS",
            "SCAN_IN_PROGRESS",
            "UNLOCK_REQUIRED",
            "REPOSITORY_NOT_LINKED",
            "PAYLOAD_TOO_LARGE",
            "RATE_LIMITED",
            "SERVICE_UNAVAILABLE",
            "INTERNAL_ERROR"
          ]
        },
        "message": {
          "type": "string"
        },
        "details": {
          "description": "Optional structured error details."
        }
      }
    }
  }
}
```

## Related

* [REST API overview](/docs/rest-api): Every operation in this API.
