Skip to Content
Welcome to Zendera Knowledge Hub
For DevelopersOrder Messages

Order Messages API

v1

Send chat messages to the driver assigned to an order and read the conversation on the order, by Zendera order ID or by your own order number.

Every order has a chat shared with the driver assigned to it — the driver reads and answers it in the mobile app. These endpoints let your integration take part: post a message to the driver, and read the whole conversation back.

Where this fits in your operation

  • Customer service relays a request: the receiver calls your service desk (“please use the back entrance”) — post it straight into the order chat so the driver sees it on the stop.
  • Your systems flag a change: an ERP or webshop event that matters on the road (gate code changed, goods short-shipped) becomes a message to the driver.
  • Keep a record: read the conversation into your CRM or ticket alongside the order.

Interactive API Explorer

Loading API Documentation...

Authentication

Authorization: apikey YOUR_API_KEY_HERE

Base URLs

  • Production: https://app.zenderatms.com/api/
  • Staging: https://staging.zenderatms.com/api/

Identifying the order

Both endpoints take exactly one of:

  • orderId — the Zendera order ID, or
  • internalOrderNumber — your own order number, as set on import.

Sending both, or neither, returns 400. An order that doesn’t exist in your organization returns 404.

Endpoints

Send a message

POST /v1/order-messages

{ "internalOrderNumber": "ERP-001", "text": "Please use the back entrance — the front is closed today.", "senderUserId": 314 }
FieldNotes
orderId / internalOrderNumberExactly one is required.
textRequired. Leading and trailing whitespace is trimmed; an empty message returns 400.
senderUserIdA user in your organization to attribute the message to — their name is shown as the sender in the driver app. The API accepts a message without it, but the driver app only shows messages that have a sender, so send it whenever the driver should see the message. A user who isn’t an active member of your organization returns 400.

If a driver is assigned to the order, the driver gets a push notification about the new message.

Response:

{ "orderId": 5335569, "message": { "messageId": 88430, "text": "Please use the back entrance — the front is closed today.", "createdByUserId": 314, "createdByUserName": "Anna Hansen", "createdAt": "2026-10-01T09:42:17Z" } }

Read the conversation

GET /v1/order-messages?internalOrderNumber=ERP-001

or

GET /v1/order-messages?orderId=5335569

Returns orderId and messages[], oldest first — the messages sent through this API as well as the rest of the order’s chat. Each message has the same shape as above. createdByUserId and createdByUserName are left out when the message has no sender attribution.

Common gotchas

  • One identifier, not two. Send orderId or internalOrderNumber, never both.
  • No feed. This is a per-order read — there is no endpoint that lists new messages across orders, so poll the orders you care about.
  • camelCase JSON (internalOrderNumber, senderUserId, createdAt).

Chat messages also appear among an order’s driver-recorded events as type message — see Order Documentations.

Last updated on