For the complete documentation index, see llms.txt. This page is also available as Markdown.

Backend API

The Backend API lets you programmatically access your Zipchat conversation data. Use it to sync conversations with your CRM, build custom analytics dashboards, take over conversations from the AI, and

Getting Started

  1. Go to Settings > Integrations in your Zipchat dashboard

  2. Click Enable on the Backend API card

  3. Copy your API key (prefixed with zc-) — store it securely, it is only shown once

Authentication

Include your API key as a Bearer token in the Authorization header:

Authorization: Bearer zc-your_api_key_here

All requests must be authenticated. Unauthenticated or invalid requests return 401 Unauthorized.

Base URL

https://app.zipchat.ai/api/integrations/backend_api/v1

Endpoints

List Conversations

GET /chats/:chat_id/conversations

Returns a paginated list of conversations for the given chat.

Parameters

Parameter
Type
Default
Description

page

integer

1

Page number

per_page

integer

50

Items per page (max 100)

last_message_at_since

string

ISO 8601 timestamp. Only return conversations with activity since this time.

Response

The lead and assignee fields are null when not set. last_escalated_at is set when the conversation was escalated by the AI; last_escalation_resolved_at is set when an agent marked the escalation resolved.


Get Conversation

Returns a single conversation with its messages.

Parameters

Parameter
Type
Default
Description

message_page

integer

1

Message page number

message_per_page

integer

100

Messages per page (max 200)

message_created_at_since

string

ISO 8601 timestamp. Only return messages created since this time.

Response

The show endpoint returns expanded lead details (including first_name, last_name, shopify_customer_id, and additional_attributes) compared to the list endpoint. The assignee, last_escalated_at, and last_escalation_resolved_at fields follow the same shape as on the list endpoint.


List Users

Returns the users (the chat owner and any chat participants) who can be assigned to a conversation on this chat.

Parameters

Parameter
Type
Default
Description

page

integer

1

Page number

per_page

integer

50

Items per page (max 100)

Response

avatar_url is null when the user has not uploaded an avatar.


Get User

Returns a single user. Returns 404 if the user is not in the assignable set for this chat — the endpoint will never leak information about users from other chats.

Response


Update Conversation Assignment

Takes a conversation over from the AI (manual mode) or hands it back to the AI. This is a single atomic operation: setting assignee_id to a user puts the conversation into manual mode; setting it to null puts it back into AI mode and unassigns.

Use GET /chats/:chat_id/users to discover valid assignee_id values.

Request body

Or, to hand back to the AI:

Response

Errors

Status
Error message
Cause

404 Not Found

Conversation not found

The conversation does not belong to this chat.

422 Unprocessable Entity

assignee_id is required (use null to assign to AI)

The body did not include assignee_id.

422 Unprocessable Entity

assignee_id is not an assignable user for this chat

The given user is not the chat owner or a participant.


Send Manual Message

Sends a manual reply from a human agent on a conversation that is currently in manual mode. The message is sent through whichever channel the conversation uses (web, email, WhatsApp, Instagram, Messenger).

You must take the conversation over first with PATCH /conversations/:id/assignment — sending while the conversation is still in AI mode returns 422.

Request body

Field
Type
Description

message

string

The reply text. Required.

sender_id

integer

The user id that should be recorded as the sender. Must be a member of GET /chats/:chat_id/users. Required.

Response

Errors

Status
Error message
Cause

404 Not Found

Conversation not found

The conversation does not belong to this chat.

422 Unprocessable Entity

message is required

Empty or missing message.

422 Unprocessable Entity

sender_id is required

Missing sender_id.

422 Unprocessable Entity

sender_id is not an assignable user for this chat

Sender is not the chat owner or a participant.

422 Unprocessable Entity

Conversation is in AI mode; assign it to a user before sending a manual message

Call the assignment endpoint first.

422 Unprocessable Entity

Cannot send: customer last messaged more than 24 hours ago on a Meta channel

WhatsApp / Instagram / Messenger enforce a 24-hour reply window from Meta. Wait for the customer to message again.

Rate Limiting

The API allows 120 requests per 60-second window per integration.

Every response includes rate limit headers:

Header
Description

X-RateLimit-Limit

Maximum requests per window (120)

X-RateLimit-Remaining

Requests remaining in the current window

X-RateLimit-Reset

Unix timestamp when the window resets

When the limit is exceeded, the API returns 429 Too Many Requests.

Error Codes

Status
Description

401 Unauthorized

Missing or invalid API key

404 Not Found

Conversation or user not found

422 Unprocessable Entity

Invalid parameter (e.g., malformed timestamp, missing field, ineligible assignee)

429 Too Many Requests

Rate limit exceeded

Examples

Fetch the latest conversations

Fetch conversations updated in the last hour

Fetch a single conversation with messages

Paginate through messages

Take over a conversation, reply, and hand it back to the AI

Last updated