---
title: "Publish callback error"
method: POST
path: "/v1/callback/error"
tags: ["callback_endpoints"]
---

# Publish callback error

`POST /v1/callback/error`

## Request

- Base URL: `https://partners.tryotter.com`
- URL: `https://partners.tryotter.com/v1/callback/error`
- Auth: OAuth 2
  - Authorization code: `/v1/auth/oauth2/authorize`
  - Client credentials
  - Token URL: `/v1/auth/token` scopes: `callback.error.write`
- TypeScript: <https://skmtc.dev/cloudkitchens/apis/otter-api/docs/v1/callback/error/post.ts> (a function with typed inputs; its response is checked against the schema)

This is the generalized callback error that should be used to return failures for all webhooks, unless otherwise specified. See [**failed event flow**](/docs/menus-integrations-failed-event-flow/) for details.
Rate limit: 16 requests per minute.

## Headers

- `X-Store-Id` string, required: The unique identifier of the store in your app. This ID, along with the `Application ID`, will be used to match the correct store when performing operations. It cannot be longer than 255 characters and must only contain printable ASCII characters. During on-boarding, this ID will be similar to `onboarding:905bb725-b141-4a9b-832a-1f254f772c94` (where the UUID is the Internal Store ID). During off-boarding, this field will be filled with the last known Store ID, or with an empty string, in case none is found. In that case, please fall back to the provided `internalStoreId` (a.k.a. Sku-Sku ID).
- `X-Event-Id` string, required: Unique identifier of the event that this callback refers to.

## Request body

- EventCallbackError: The error container for a processed callback.
  - `errorCode` 'CANCELLED' | 'UNKNOWN' | 'INVALID_ARGUMENT' | 'FAILED_PRECONDITION' | 'DEADLINE_EXCEEDED' | 'NOT_FOUND' | 'PERMISSION_DENIED' | 'ALREADY_EXISTS' | 'RESOURCE_EXHAUSTED' | 'ABORTED' | 'OUT_OF_RANGE' | 'UNIMPLEMENTED' | 'INTERNAL' | 'UNAVAILABLE' | 'DATA_LOSS' | 'UNAUTHENTICATED': Errors that occur processing the webhook, modeled after Google's gRPC error codes. For callback errors responding to menu-related webhooks, any error with status code in: "INVALID_ARGUMENT", "FAILED_PRECONDITION", "NOT_FOUND", "PERMISSION_DENIED", "ALREADY_EXISTS", "UNIMPLEMENTED", "DATA_LOSS", "UNAUTHENTICATED" will be considered fatal and will fail the operation without retrying.
  - `errorMessage` string, nullable: Additional information about the error. This message will be displayed to the user, so ideally it should be friendly.

## Response `200`

The callback error was successfully accepted.

## Other responses

- `400`: The request is malformed.
- `401`: Invalid authorization.
- `403`: Authorization not valid for the requested resource.
- `404`: Resource not found.
- `422`: The request body is not valid.

---

[API](https://skmtc.dev/cloudkitchens/apis/otter-api.md) - [All operations](https://skmtc.dev/cloudkitchens/apis/otter-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cloudkitchens/apis/otter-api/revisions/4c868194a467?raw)
