Agent Chat
Chat With Agents
Allows for communication with Emporix agents. Conversational continuity requires both the session-id header and enabledMemory set to true on the agent. Collaborations configured in agentCollaborations run in the same session.
When the request includes attachments, each attachments[].attachmentId must reference a file already uploaded in this session. Send the upload sessionId as the session-id header. The attachment must already be attached to the agentId in the request body. After a file upload, send that same path agentId in the chat body. After reuse, send the target agent's path agentId in the chat body. If they differ, the request returns 400. To use the file with a different agent, first assign the attachment to that agent with attachmentId on POST /ai-service/{tenant}/agentic/{agentId}/attachments using the target agentId in the path, then chat with that target agent.
- : Needed to execute agentic chat.
- : Needed to execute agentic chat by customers.
Your Emporix tenant name.
Note: The tenant name should always be provided in lowercase.
Optional UUID of the AI Service chat session. If omitted, the system generates one.
Reuse the same value on later chat and attachment calls to continue the same session, access attachments from that session, and keep conversational memory when enabledMemory is true on the agent. A new value starts a new session.
On Starting agent chat, the value is sessionId in the JSON response. On Starting agent chat stream, the value is session_id in the SSE done event. When a chat request includes attachments, send the same value returned as sessionId from the upload or from assigning existing media. Do not send sessionId in the request body. Omitting session-id when you assign media starts a new session and returns that sessionId.
Unique identifier of the agent.
The user message to the agent.
Chat response.
Unique identifier of the agent.
Type of the agent handling the request.
Unique identifier of the session. Send this value back as the session-id header on later chat and attachment calls.
Agent message.
The request was syntactically incorrect.
The authorization token is invalid or has expired.
Authorization scopes of the access token are not sufficient and do not match the scopes required by the endpoint.
A server-side error occurred.
POST /ai-service/{tenant}/agentic/chat HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"agentId": "complaint-agent",
"message": "Find a product with \"EON1243\" code"
}[
{
"agentId": "complaint-agent",
"agentType": "complaint",
"message": "Found an order with its details.",
"sessionId": "fe91d168-4ce9-4b4d-8451-0029035b34a5"
}
]Allows for communication with Emporix agents using a Server-Sent Events stream. Conversational continuity requires both the session-id header and enabledMemory set to true on the agent. Collaborations configured in agentCollaborations run in the same session.
When the request includes attachments, each attachments[].attachmentId must reference a file already uploaded in this session. Send the upload sessionId as the session-id header. The attachment must already be attached to the agentId in the request body. After a file upload, send that same path agentId in the chat body. After reuse, send the target agent's path agentId in the chat body. If they differ, the request returns 400. To use the file with a different agent, first assign the attachment to that agent with attachmentId on POST /ai-service/{tenant}/agentic/{agentId}/attachments using the target agentId in the path, then chat with that target agent.
The response Content-Type is text/event-stream. Each frame uses an SSE event name and a JSON object in data. Concatenate successive token content values to build the assistant reply. The done event carries session metadata, including session_id when present. Send that value as the session-id header on later chat and attachment calls. The done event does not repeat the full message.
Named events:
token— Incremental text of the assistant reply.datais{ "content": "..." }.thinking— Thethinkingevent is in preview mode - some of the features may not be fully operational yet.Optional reasoning text.
datais{ "content": "..." }. Do not treat this as part of the user-facing reply unless the client displays reasoning.tool_start— The agent started a tool.datais{ "tool_name": "...", "tool_call_id": "..." }.tool_end— The agent finished a tool.datauses the same fields astool_start.tool_result— Tool output.datais{ "tool_name": "...", "tool_call_id": "...", "output": {} }.outputis a JSON object or array. Credential-like keys inoutputare omitted.done— The stream completed.dataincludesagent_id,agent_type, andsession_idwhen present. At least one of these fields is sent.error— Theerrorevent is in preview mode - some of the features may not be fully operational yet.A failure during generation.
dataincludesmessageand/orcode. Example codes areAGENT_SETUPandRECURSION_LIMIT.
SSE data fields use snake_case (session_id, agent_id, agent_type). They are not the camelCase fields of the synchronous chat ChatResponse (sessionId, agentId, agentType).
HTTP 400, 401, 403, and 500 responses are JSON problem bodies, not SSE events. They occur when the request is rejected before the stream starts. Unknown event names are not forwarded. Frames without an event name and with no data may appear as keepalives; ignore them.
- : Needed to execute agentic chat.
- : Needed to execute agentic chat by customers.
Your Emporix tenant name.
Note: The tenant name should always be provided in lowercase.
Optional UUID of the AI Service chat session. If omitted, the system generates one.
Reuse the same value on later chat and attachment calls to continue the same session, access attachments from that session, and keep conversational memory when enabledMemory is true on the agent. A new value starts a new session.
On Starting agent chat, the value is sessionId in the JSON response. On Starting agent chat stream, the value is session_id in the SSE done event. When a chat request includes attachments, send the same value returned as sessionId from the upload or from assigning existing media. Do not send sessionId in the request body. Omitting session-id when you assign media starts a new session and returns that sessionId.
Use text/event-stream to receive the response as a Server-Sent Events stream.
text/event-streamUnique identifier of the agent.
The user message to the agent.
Chat response stream as Server-Sent Events. Each named event carries a JSON object in data. Concatenate token content values for the assistant reply. When session_id is present on the done event, send it as the session-id header on later calls.
Complete Server-Sent Events body. The HTTP entity is event: / data: text, not a JSON object.
Each data line is a JSON object. The object shape depends on the event name and is documented by ChatStreamEventData:
-
token—ChatStreamTokenData -
thinking— Thethinkingevent is in preview mode - some of the features may not be fully operational yet.ChatStreamThinkingData -
tool_startandtool_end—ChatStreamToolMetaData -
tool_result—ChatStreamToolResultData -
done—ChatStreamDoneData -
error— Theerrorevent is in preview mode - some of the features may not be fully operational yet.ChatStreamErrorData
The request was syntactically incorrect.
The authorization token is invalid or has expired.
Authorization scopes of the access token are not sufficient and do not match the scopes required by the endpoint.
A server-side error occurred.
POST /ai-service/{tenant}/agentic/chat-stream HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"agentId": "complaint-agent",
"message": "Find a product with \"EON1243\" code"
}event: token
data: {"content":"Standard "}
event: token
data: {"content":"delivery is available for order EON1243."}
event: done
data: {"agent_id":"generic-agent","agent_type":"generic","session_id":"33a550d0-d812-4fb2-bb0d-d50dbfe3627b"}Allows for communication with Emporix agents in async way. Conversational continuity requires both the session-id header and enabledMemory set to true on the agent. Collaborations configured in agentCollaborations run in the same session.
When the request includes attachments, each attachments[].attachmentId must reference a file already uploaded in this session. Send the upload sessionId as the session-id header. The attachment must already be attached to the agentId in the request body. After a file upload, send that same path agentId in the chat body. After reuse, send the target agent's path agentId in the chat body. If they differ, the request returns 400. To use the file with a different agent, first assign the attachment to that agent with attachmentId on POST /ai-service/{tenant}/agentic/{agentId}/attachments using the target agentId in the path, then chat with that target agent.
- : Needed to execute agentic chat.
- : Needed to execute agentic chat by customers.
Your Emporix tenant name.
Note: The tenant name should always be provided in lowercase.
Optional UUID of the AI Service chat session. If omitted, the system generates one.
Reuse the same value on later chat and attachment calls to continue the same session, access attachments from that session, and keep conversational memory when enabledMemory is true on the agent. A new value starts a new session.
On Starting agent chat, the value is sessionId in the JSON response. On Starting agent chat stream, the value is session_id in the SSE done event. When a chat request includes attachments, send the same value returned as sessionId from the upload or from assigning existing media. Do not send sessionId in the request body. Omitting session-id when you assign media starts a new session and returns that sessionId.
Unique identifier of the agent.
The user message to the agent.
Job ID response.
Identifier of the job.
The request was syntactically incorrect.
The authorization token is invalid or has expired.
Authorization scopes of the access token are not sufficient and do not match the scopes required by the endpoint.
A server-side error occurred.
POST /ai-service/{tenant}/agentic/chat-async HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 78
{
"agentId": "complaint-agent",
"message": "Find a product with \"EON1243\" code"
}{
"jobId": "68835cc3ef4e8e1425c360ad"
}Uploads a new file and assigns it to the agent, or assigns an existing media asset to the agent.
Send exactly one of attachment or attachmentId. Sending both or neither returns 400.
Upload a file: Send the attachment form field. The response is 201 with the new attachment id and sessionId. Supported file extensions:
jpg
jpeg
png
pdf
csv
text
txt
Assign existing media: Send attachmentId and the target agent's agentId in the path. Use either the attachmentId form field or an application/json body with attachmentId. The response is 200 with the attachment id and sessionId. If you omit the session-id header, the response includes the generated sessionId.
With the ai.agentexecution_manage scope, attachmentId can be any existing media asset. The asset does not have to belong to the session and does not have to already have references. AI Service adds an AGENT reference and attaches the file to the session in the response.
With only the ai.agentexecution_manage_own scope, the attachment must already belong to the session-id session.
Chat with the attachment: Call the Starting agent chat, Starting agent chat stream, or Starting agent async chat endpoint. Send the returned sessionId as the session-id header and the path agentId in the chat body. If the chat agentId is not the agent in this path, the API returns 400 with the message Agent chat attachment with id={attachmentId} cannot be used to chat with agentId={agentId}.
- : Needed to execute agentic chat.
- : Needed to execute agentic chat by customers.
Your Emporix tenant name.
Note: The tenant name should always be provided in lowercase.
Unique identifier of the agent that receives the attachment. For a file upload, a later chat request must send this same value in the body agentId field. When you reuse an attachment, this path value is the target agent. The later chat request must send that target agentId.
Optional UUID of the AI Service chat session. If omitted, the system generates one.
Reuse the same value on later chat and attachment calls to continue the same session, access attachments from that session, and keep conversational memory when enabledMemory is true on the agent. A new value starts a new session.
On Starting agent chat, the value is sessionId in the JSON response. On Starting agent chat stream, the value is session_id in the SSE done event. When a chat request includes attachments, send the same value returned as sessionId from the upload or from assigning existing media. Do not send sessionId in the request body. Omitting session-id when you assign media starts a new session and returns that sessionId.
Existing media assigned to the agent. The body contains the attachment id and the sessionId to send on later chat requests.
Unique identifier of the created attachment.
Unique identifier of the session the attachment is on. Send this value as the session-id header on later chat requests. If the assign request omits session-id, this value is the generated session.
Attachment created.
The request was syntactically incorrect.
The authorization token is invalid or has expired.
Authorization scopes of the access token are not sufficient and do not match the scopes required by the endpoint.
A server-side error occurred.
POST /ai-service/{tenant}/agentic/{agentId}/attachments HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: multipart/form-data
Accept: */*
Content-Length: 23
{
"attachment": "binary"
}{
"id": "68835cc3ef4e8e1425c360ad",
"sessionId": "0499bef6-a4d2-45b9-86a0-2edf7d70d726"
}Last updated
Was this helpful?

