Guide

Chatting Zapier API reference

Use this reference while reviewing or building the Chatting Zapier app.

Chatting Zapier API reference cover with endpoint, request, and response panels.
9 Apr 20266 min read

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>" }
HTTP
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.

HTTP
X-API-Key: chatting_live_...
Idempotency-Key: 0b0e6a45-92b4-4da0-b0a9-6e612a8d02fa

Trigger 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
Endpoints
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=1
HTTP
POST /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
}
HTTP
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
HTTP
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"
}
HTTP
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"
}
HTTP
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 — the X-API-Key header is missing
  • api-key-invalid — the API key prefix exists but the key does not verify
  • invalid-subscription — the trigger event or target_url is invalid
  • missing-emailPOST /contacts was called without an email
  • workspace-site-missing — the workspace has no primary site to attach contacts to
  • contact-not-found — a newly created contact could not be loaded back
  • contact-site-forbidden — the contact write target is outside the workspace
  • contact-save-failed — contact creation failed for a non-validation reason
  • missing-tagPOST /contacts/{id}/tags was called without a tag
  • missing-messagePOST /conversations/{id}/messages was called without a message
  • not-found — the requested contact, conversation, or webhook id does not exist
  • idempotency-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.

JSON
{
  "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
  }
}
JSON
{
  "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
  }
}
JSON
{
  "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"
  }
}
JSON
{
  "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 guide

Ready 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 free

Need pricing before rollout?

Review the commercial plan fit before you build around the integration.

See pricing

More guides

Keep building with Chatting

Real-time conversations
without help desk bloat.

Start small-team live chat →

No credit card. No sales call.