Skip to main content
Confirms an order. The customer is sent the account’s confirmation reply — the one set in Catalogue’s settings, with their name, the order number and the total filled in — on the channel the order came in on. If the channel can’t send it, the order is confirmed all the same and its history says why the reply didn’t go. Webhooks get order.confirmed. Asking again for the status it already has changes nothing and sends nothing.
Needs the catalogue.orders:write scope.

Path parameters

Request

Response

200 OK — the order, now confirmed. status is new, confirmed, declined, fulfilled or cancelled. source is where it came from: cart (a WhatsApp cart), agent (an AI agent’s draft, approved by a person), person (made by hand in the panel) or api. channel is the channel it came in on, where replies about it go. Each line keeps its own copy of the name and price, so a later change to the product doesn’t rewrite it; product is the product’s id, or null for a SKU the catalogue doesn’t have. Money is in minor units.

Errors

Every refusal is {"error": {"code", "message", "field"}}; field is there when one input is at fault. Any request can also be refused for its key, its account or its rate (key_required, invalid_key, account_suspended, plan_excludes_api, address_not_allowed, rate_limited); see the overview.