Base URL and response format
- Production base URL:
https://usechatting.com/api/zapier - Authentication header:
X-API-Key: <your-api-key> - Success shape:
{ "ok": true, ... } - Error shape:
{ "ok": false, "error": "<code>" }
GET /api/zapier/me
X-API-Key: <your-api-key>
200 OK
{
"ok": true,
"workspace_id": "workspace_123",
"team_name": "Acme Team"
}
401 Unauthorized
{
"ok": false,
"error": "api-key-missing"
}Authentication and idempotency
- Required auth header:
X-API-Key: <your-api-key> - Auth check endpoint:
GET /api/zapier/me - Missing key error:
api-key-missing - Invalid or revoked key error:
api-key-invalid
Create-style actions also accept Idempotency-Key or X-Idempotency-Key. Reusing the same key with a different payload returns idempotency-key-conflict.
X-API-Key: chatting_live_...
Idempotency-Key: 0b0e6a45-92b4-4da0-b0a9-6e612a8d02faTrigger subscriptions and sample endpoints
- Supported events:
conversation.created,conversation.resolved,contact.created,tag.added - Subscription endpoint:
POST /api/zapier/webhooks/subscribe - Unsubscribe endpoint:
DELETE /api/zapier/webhooks/{id} - Sample endpoints return recent records for Zapier editor mapping
Subscribe: POST /api/zapier/webhooks/subscribe
Unsubscribe: DELETE /api/zapier/webhooks/{id}
Conversation sample: GET /api/zapier/conversations?limit=1
Resolved sample: GET /api/zapier/conversations?limit=1&event=conversation.resolved
Tag-added sample: GET /api/zapier/conversations?limit=1&event=tag.added
Contact sample: GET /api/zapier/contacts?limit=1POST /api/zapier/webhooks/subscribe
Content-Type: application/json
X-API-Key: <your-api-key>
{
"event": "conversation.created",
"target_url": "https://hooks.zapier.com/hooks/catch/123/abc"
}
201 Created
{
"ok": true,
"id": "wh_123",
"event": "conversation.created",
"active": true
}DELETE /api/zapier/webhooks/wh_123
X-API-Key: <your-api-key>
200 OK
{
"ok": true,
"id": "wh_123",
"active": false
}Action endpoints
- Create contact:
POST /api/zapier/contacts - Add tag to contact:
POST /api/zapier/contacts/{id}/tags - Send message:
POST /api/zapier/conversations/{id}/messages
POST /api/zapier/contacts
Content-Type: application/json
X-API-Key: <your-api-key>
{
"email": "lead@example.com",
"name": "Ava Brooks",
"phone": "+1 555 111 2222",
"company": "Acme",
"status": "lead",
"tags": ["vip", "demo"],
"customFields": {
"crm_owner": "tina"
}
}
201 Created
{
"ok": true,
"id": "contact_123",
"email": "lead@example.com",
"name": "Ava Brooks",
"created_at": "2026-04-09T00:00:00.000Z"
}POST /api/zapier/contacts/contact_123/tags
Content-Type: application/json
X-API-Key: <your-api-key>
{
"tag": "vip"
}
200 OK
{
"ok": true,
"id": "contact_123",
"tag": "vip"
}POST /api/zapier/conversations/conv_123/messages
Content-Type: application/json
X-API-Key: <your-api-key>
{
"message": "Thanks, we got your message.",
"sender": "system"
}
201 Created
{
"ok": true,
"id": "msg_123",
"conversation_id": "conv_123",
"sender": "system",
"created_at": "2026-04-09T00:00:00.000Z"
}Common error codes
The Zapier API keeps errors intentionally short and machine-readable so the Zapier editor can surface clear setup issues. These are the main codes to expect while building and reviewing the integration.
api-key-missing— theX-API-Keyheader is missingapi-key-invalid— the API key prefix exists but the key does not verifyinvalid-subscription— the trigger event ortarget_urlis invalidmissing-email—POST /contactswas called without an emailworkspace-site-missing— the workspace has no primary site to attach contacts tocontact-not-found— a newly created contact could not be loaded backcontact-site-forbidden— the contact write target is outside the workspacecontact-save-failed— contact creation failed for a non-validation reasonmissing-tag—POST /contacts/{id}/tagswas called without a tagmissing-message—POST /conversations/{id}/messageswas called without a messagenot-found— the requested contact, conversation, or webhook id does not existidempotency-key-conflict— the same idempotency key was reused with a different payload
Sample trigger payloads
Chatting sends flattened data__... fields for easy Zapier mapping, plus the nested data object for integrations that want the original grouped structure.
{
"event": "conversation.created",
"timestamp": "2026-04-08T00:50:00.000Z",
"data__conversation_id": "conv_abc123",
"data__visitor_email": "visitor@example.com",
"data__visitor_name": "Ava Brooks",
"data__page_url": "https://www.usechatting.com/pricing",
"data__first_message": "Do you have a free plan?",
"data__assigned_to": null,
"data": {
"conversation_id": "conv_abc123",
"visitor_email": "visitor@example.com",
"visitor_name": "Ava Brooks",
"page_url": "https://www.usechatting.com/pricing",
"first_message": "Do you have a free plan?",
"tags": [],
"assigned_to": null
}
}{
"event": "conversation.resolved",
"timestamp": "2026-04-08T00:50:00.000Z",
"data__conversation_id": "conv_abc123",
"data__visitor_email": "visitor@example.com",
"data__resolved_by": null,
"data__message_count": 8,
"data__duration_seconds": 420,
"data": {
"conversation_id": "conv_abc123",
"visitor_email": "visitor@example.com",
"resolved_by": null,
"message_count": 8,
"duration_seconds": 420
}
}{
"event": "contact.created",
"timestamp": "2026-04-08T01:30:00.000Z",
"data__contact_id": "cnt_abc123",
"data__email": "visitor@example.com",
"data__name": "Ava Brooks",
"data__company": "Acme Corp",
"data__source": "chat_form",
"data": {
"contact_id": "cnt_abc123",
"email": "visitor@example.com",
"name": "Ava Brooks",
"company": "Acme Corp",
"source": "chat_form"
}
}{
"event": "tag.added",
"timestamp": "2026-04-08T02:00:00.000Z",
"data__conversation_id": "conv_abc123",
"data__tag": "vip",
"data__added_by": null,
"data": {
"conversation_id": "conv_abc123",
"tag": "vip",
"added_by": null
}
}Commercial next steps
If the Zapier API shape looks right, move next into rollout questions: can the team run the inbox, does the pricing fit, and which workflow should go live first?
Need the setup path, not just the endpoint list?
Use the practical Zapier integration guide to connect the account and test one workflow first.
Open Zapier setup guideReady to test the integration in your own workspace?
Create an account and wire the Zapier connection around a real inbox instead of sample data only.
Start freeNeed pricing before rollout?
Review the commercial plan fit before you build around the integration.
See pricing