Skip to content
Documentation

Send a customer message

POST
/v1/webhooks/channels/api/{instance}

Sends a customer message to the API channel. The channel is set up under Channels → Add channel → API; the setup gives you the inbound URL ({instance}), the signing secret and a field for the URL agent replies are sent to.

The request is verified with the channel's signing secret, not an API key: X-ClickFix-Timestamp (Unix seconds) and X-ClickFix-Signature: sha256= + hex(HMAC-SHA256(secret, timestamp + "." + raw_body)). Requests whose timestamp is older than 5 minutes are rejected. A message with the same id is stored once. Retry on 5xx.

Authorization

apiChannelSignature
headerX-ClickFix-Signature<token>

sha256= + hex(HMAC-SHA256(secret, timestamp + "." + raw_body)), computed with the API channel's signing secret and sent together with X-ClickFix-Timestamp (Unix seconds).

Path Parameters

instance*string

The channel instance id given during setup.

Header Parameters

X-ClickFix-Timestamp*string

Signing time (Unix seconds).

Request Body

application/json
  1. body
id*string

Stable unique message ID within this instance

Length1 <= length <= 255
sender_id*string
Length1 <= length <= 255
sender_name?string
text*string
Length1 <= length <= 32000
thread_id?string
Lengthlength <= 255
reply_to?string
at?string
Formatdate-time

Response Body

Message received.

application/json
  1. response
success*true
Value intrue
data*
meta*
Example Request
curl -X POST 'https://api.getclickfix.com/v1/webhooks/channels/api/string' \  -H 'X-ClickFix-Timestamp: 1761732900' \  -H 'Content-Type: application/json' \  -d '{  "id": "msg-1001",  "sender_id": "customer-42",  "sender_name": "Ayşe Yılmaz",  "text": "When will my order arrive?"}'
Example Response
{  "success": true,  "data": {    "received": true,    "conversation_uuid": "8f0e5c2a-6b1d-4f3a-9c7e-2d4b6a8c0e1f"  },  "meta": {    "request_id": "01JCK9ZQ3M8R2W7X5E4T1N0PAB"  }}