Skip to main content
Plato APIs return JSON error messages where possible.

Error Shape

REST endpoints usually return one of these shapes:
{
  "message": "No apiKey provided."
}
{
  "error": "Unauthorized API key."
}
SDK calls throw typed tRPC errors. Catch them in your integration and log the message, status, and procedure name.

Common Status Codes

StatusMeaning
400The request is invalid, missing required fields, or failed validation.
401The API key is missing, expired, invalid, or not allowed for the operation.
403The API key is valid but its role does not have the required permission.
404The requested record does not exist in the API key workspace.
429The route is rate limited. Slow down and retry later.
500Plato could not complete the request. Retry later or contact support if it repeats.

Pagination Limits

Different APIs expose different pagination styles. CMS list endpoints use:
limit: 1 to 100
offset: 0 or higher
Menu endpoints use:
page: 1 or higher
limit: 1 to 100
Connect360 SDK list endpoints use cursors:
{
  limit: 50,
  cursor: "next_cursor"
}

Order Feed Limits

The restaurant order feed returns up to 50 orders per request. Date ranges can be up to 5 days when both date and endDate are provided.

Retry Guidance

Retry only when the failure is temporary. Retry:
  • Network timeouts.
  • 429 after waiting.
  • 500 or 503 after a short delay.
Do not retry until fixed:
  • Invalid API key.
  • Missing permission.
  • Unknown field.
  • Required field missing.
  • Invalid relation id.

Idempotency

Some SDK operations are designed to reuse existing records, such as getOrCreateConversation. Write operations like CMS create, form submit, and message send can create new records every time they are called. Make your own integration idempotent when duplicate submissions are possible.