Skip to main content
Your system can inject orders into Fire using the Orders API. Fire then manages the order lifecycle and sends status updates back via webhooks.

Flow

Your system receives an order → Your system injects it into Fire → Fire confirms

Injecting an order

POST /v1/orders
Authorization: Bearer <your_api_key>
Content-Type: application/json
{
  "channel_id": "channel_abc123",
  "external_order_id": "uber_order_9876",
  "customer": {
    "name": "Jane Doe",
    "phone": "+1555000111"
  },
  "items": [
    {
      "product_id": "prod_001",
      "quantity": 2,
      "unit_price": 1200,
      "modifiers": []
    }
  ],
  "delivery": {
    "type": "delivery",
    "address": "123 Main St"
  },
  "total": 2400
}

Required fields

FieldDescription
channel_idThe Fire sales channel ID (from Sales channels)
external_order_idYour own order ID — used to correlate status updates
itemsArray of ordered products with quantities and prices

Response

{
  "id": "fire_order_abc",
  "external_order_id": "uber_order_9876",
  "status": "received",
  "created_at": "2025-01-15T14:30:00Z"
}
Store the id returned by Fire to correlate future order.status_changed events.

Error handling

StatusMeaning
400Invalid payload — check required fields
404Unknown channel_id — re-fetch channels
409Duplicate external_order_id — order already exists
5xxFire-side error — retry with exponential backoff
Do not send the same order twice with the same external_order_id. Fire will reject duplicates with a 409.