Send a message
tenantKeyX-Tenant-Key<token>The public store key (pk_live_…). Required on every call.
X-Client-IP?stringOptional. 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?stringOptional here. Server secret of the store: server-to-server only, never from a browser. Enables X-Client-IP.
Idempotency-Key?stringOptional; 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.
application/json- body
POST /api/v1/chat/messages — body is the only field the widget submits;
everything else (conversation, direction, timestamps) is server-derived.
body*stringlength <= 4096Success.
application/json- response
data*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"}'{ "data": { "id": 0, "direction": "string", "body": "string", "media": [ { "property1": null, "property2": null } ], "delivered_at": "string", "read_at": "string", "created_at": "string" }}