Skip to main content
Order creation is idempotent by the resolved type source and externalOrderId. Also send a stable Idempotency-Key for each external order:
Keep the key at 200 characters or fewer.

Safe Retry

When Plato receives the same order identity again, it returns the original order with 200 OK:
Retry network timeouts and 500 responses with the same externalOrderId and Idempotency-Key.

Existing Orders

When an order already exists, Plato returns the stored order instead of creating another one. Generate a new external order id only for a genuinely new order.

Validation Error

Invalid fields and inconsistent totals return 422 Unprocessable Entity with field paths:

Endpoint Status Codes

If an aggregator value in type does not belong to an app installed in the API key workspace, Plato does not create or update an order:
For a timeout or 500, retry after approximately 1, 2, 5, 10, and 30 seconds. Stop after a bounded number of attempts and place the order in a reconciliation queue. Log the X-Request-Id, external order id, HTTP status, and Plato order id. Do not log the API key or the full customer payload.