Skip to content
Elara One docs
Chat

Send a message

POST
/v1/chat/messages

Authorization

tenantKey
headerX-Tenant-Key<token>

The public store key (pk_live_…). Required on every call.

Header Parameters

X-Client-IP?string

Optional. IP address of the shopper (one IPv4/IPv6, no port, no list). Honoured only together with a valid X-Tenant-Secret; ignored otherwise. Used for rate limits and recorded with form submissions.

X-Tenant-Secret?string

Optional here. Server secret of the store: server-to-server only, never from a browser. Enables X-Client-IP.

Idempotency-Key?string

Optional; recommended (a UUID made once per user action, reused only to retry that action). Only a success is stored (24 hours): the same key with the same body, URI and credentials (Authorization, X-Cart-Token, X-Chat-Token) replays it (Idempotent-Replayed: true); anything else under that key is 422 IDEMPOTENCY_KEY_REUSED. An error is never stored: after a 4xx or 5xx, retrying with the same key runs the request again.

Request Body

application/json
  1. body

POST /api/v1/chat/messages — body is the only field the widget submits; everything else (conversation, direction, timestamps) is server-derived.

body*string
Lengthlength <= 4096

Response Body

Success.

application/json
  1. response
data*
Example Request
curl -X POST 'https://api.elaraone.app/api/v1/chat/messages' \  -H 'X-Tenant-Key: pk_live_…' \  -H 'X-Tenant-Secret: your-server-secret' \  -H 'Content-Type: application/json' \  -d '{  "body": "string"}'
Example Response
{  "data": {    "id": 0,    "direction": "string",    "body": "string",    "media": [      {        "property1": null,        "property2": null      }    ],    "delivered_at": "string",    "read_at": "string",    "created_at": "string"  }}