Skip to content

Talk to your AI Agent programmatically with the Quickchat AI Chat endpoint — ideal for building a custom chat UI.

The realtime Chat endpoint sends a visitor message to your AI Agent and returns the AI reply in a single round-trip. This is the endpoint you want when building a custom chat UI on top of Quickchat AI.

It differs from the other endpoints in two ways: it sits at app.quickchat.ai/chat, outside the /v1/api/ and /v1/api_core/ base paths, and it reads scenario_id from the request body rather than from the token. It uses the same Bearer token authentication as the rest of this API.

POST https://app.quickchat.ai/chat

Request Body

ParameterDescription
scenario_id
string, required
ID of your AI Agent. Must match the scenario_id bound to the Bearer token
text
string, required
User input message
conv_id
string
Conversation ID. Omit on the first request to start a new conversation, then pass the returned conv_id back on subsequent requests to continue it
client_metadata
object
Custom key-value pairs (max 5 keys) attached to every message. Displayed as data columns in the conversation export in the Inbox

A request without conv_id starts a new conversation, and the generated conv_id is returned in the response. Store that conv_id and send it back on later requests to maintain conversation context across multiple user interactions.

Terminal window
# Start a new conversation by omitting conv_id
curl -X POST https://app.quickchat.ai/chat \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"scenario_id": "<SCENARIO_ID>",
"text": "Hello!"
}'

Response 200 OK

{
"conv_id": "conv-uuid-1234",
"reply": "Hi there! How can I help you today?",
"ord_number": 3,
"src": 0
}
FieldDescription
conv_id
string
Conversation identifier. Always returned. Pass it back in the conv_id body field to continue the conversation
reply
string
The AI Agent’s response. May contain HTML such as <br> line breaks
ord_number
integer
Sequential message number within the conversation
src
integer
Internal source indicator. API clients can ignore this field

To continue an existing conversation, pass back the conv_id you received:

Terminal window
curl -X POST https://app.quickchat.ai/chat \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"scenario_id": "<SCENARIO_ID>",
"conv_id": "conv-uuid-1234",
"text": "What is your return policy?"
}'

The Chat endpoint accepts an optional client_metadata parameter: custom attributes that are assigned to every new message and displayed as data columns in the conversation export in the Inbox. You can attach the same attributes through the widget. A maximum of 5 keys can be sent at a time, for example {"userId": 12, "website": "mywebsite.com"}.

Terminal window
curl -X POST https://app.quickchat.ai/chat \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"scenario_id": "<SCENARIO_ID>",
"conv_id": "conv-uuid-1234",
"text": "Hello!",
"client_metadata": {"userId": 12, "website": "mywebsite.com"}
}'

You can add tags to Knowledge Base articles and use them to restrict which articles the AI draws on, so it answers based only on a subset of the Knowledge Base. This filtering is currently supported only via the API.

To filter by tag, add a kb_topic key to client_metadata. The kb_topic key must be present on every request in the conversation, including the request that starts it. Its value can change between requests, but the key itself has to be present throughout the conversation for the filter to apply.

In the example below, any article tagged your-topic, or with no tag at all, is included in the candidate pool of knowledge for the response.

json={
"scenario_id": "<SCENARIO_ID>",
"conv_id": "conv-uuid-1234",
"text": "Hello!",
"client_metadata": {"kb_topic": "your-topic"},
}

The Chat endpoint returns a plain-text error message with an appropriate HTTP status code.

StatusDescriptionAction
400Missing scenario_id, or the request is not authenticatedInclude scenario_id in the body and a valid Authorization: Bearer <API_TOKEN> header
400Invalid conv_id (Conversation conv_id <id> is not valid.)Omit conv_id to start a new conversation, or pass a conv_id returned by a previous response
404Unknown scenario_id (No implementation found for scenario_id <id>)Verify the scenario_id and that your Bearer token is bound to it
500Internal server errorAn issue on our side. Please get in touch with support
503Service unavailableServers are temporarily overloaded or under maintenance. If the problem persists, please get in touch with support