curl --request POST \
--url https://api.eigi.ai/v1/public/chat \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "Hello, how can you help me?",
"streaming": true
}
'{
"response": "<string>",
"session_id": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Chat
Send Chat Message
Send a message to an AI agent and receive a response with optional streaming
POST
/
v1
/
public
/
chat
curl --request POST \
--url https://api.eigi.ai/v1/public/chat \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "Hello, how can you help me?",
"streaming": true
}
'{
"response": "<string>",
"session_id": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Overview
This endpoint enables text-based conversations with your AI agents. It supports both streaming and non-streaming responses, making it ideal for chatbots, customer support widgets, and interactive applications.Authentication
string
required
Your eigi.ai API key. Must be prefixed with
vk_.Request Body
string
required
The unique identifier of the agent to chat with. Example:
68ea2517dbb84c09bae1ba0astring
required
The user’s message to send to the agent. Must be between 1 and 4000
characters. Example:
"Hello, I need help with my account"string
Session ID for continuing a conversation. If not provided, a new session will
be created. Example:
58a6b549-ef07-4a31-86bc-0eb0e026840aboolean
default:"true"
Whether to stream the response in real-time or wait for the complete response.
true: Response streams as it’s generated (recommended for chat UIs) -false: Returns complete response as JSON
object
Additional metadata to attach to the conversation. Useful for tracking user context.Example:
{"user_id": "user_123", "source": "website"}Response
Streaming Response (streaming=true)
Returns atext/plain stream with the agent’s response delivered word-by-word.
Response Headers:
| Header | Description |
|---|---|
X-Session-ID | The session ID to use for subsequent messages |
Content-Type | text/plain; charset=utf-8 |
Non-Streaming Response (streaming=false)
string
The complete response from the AI agent.
string
The session ID to use for subsequent messages in this conversation.
Examples
Streaming Request
curl -X POST "https://api.eigi.ai/v1/public/chat" \
-H "X-API-Key: vk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "Hello, how can you help me?",
"streaming": true
}'
import requests
response = requests.post(
"https://api.eigi.ai/v1/public/chat",
headers={
"X-API-Key": "vk_your_api_key_here",
"Content-Type": "application/json"
},
json={
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "Hello, how can you help me?",
"streaming": True
},
stream=True
)
# Get session ID from headers
session_id = response.headers.get("X-Session-ID")
# Stream the response
for chunk in response.iter_content(decode_unicode=True):
print(chunk, end="", flush=True)
const response = await fetch("https://api.eigi.ai/v1/public/chat", {
method: "POST",
headers: {
"X-API-Key": "vk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
agent_id: "68ea2517dbb84c09bae1ba0a",
message: "Hello, how can you help me?",
streaming: true,
}),
});
// Get session ID from headers
const sessionId = response.headers.get("X-Session-ID");
// Stream the response
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
console.log(decoder.decode(value));
}
Non-Streaming Request
curl -X POST "https://api.eigi.ai/v1/public/chat" \
-H "X-API-Key: vk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "What are your business hours?",
"streaming": false
}'
import requests
response = requests.post(
"https://api.eigi.ai/v1/public/chat",
headers={
"X-API-Key": "vk_your_api_key_here",
"Content-Type": "application/json"
},
json={
"agent_id": "68ea2517dbb84c09bae1ba0a",
"message": "What are your business hours?",
"streaming": False
}
)
data = response.json()
print(f"Response: {data['response']}")
print(f"Session ID: {data['session_id']}")
const response = await fetch("https://api.eigi.ai/v1/public/chat", {
method: "POST",
headers: {
"X-API-Key": "vk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
agent_id: "68ea2517dbb84c09bae1ba0a",
message: "What are your business hours?",
streaming: false,
}),
});
const data = await response.json();
console.log("Response:", data.response);
console.log("Session ID:", data.session_id);
Non-Streaming Response Example
{
"response": "Hello! I'd be happy to help you. Our business hours are Monday through Friday, 9 AM to 6 PM EST. Is there something specific I can assist you with today?",
"session_id": "58a6b549-ef07-4a31-86bc-0eb0e026840a"
}
Continuing a Conversation
Use thesession_id from previous responses to maintain conversation context:
cURL
curl -X POST "https://api.eigi.ai/v1/public/chat" \
-H "X-API-Key: vk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "68ea2517dbb84c09bae1ba0a",
"session_id": "58a6b549-ef07-4a31-86bc-0eb0e026840a",
"message": "What about weekends?",
"streaming": false
}'
Error Responses
| Status Code | Description |
|---|---|
| 400 Bad Request | Agent has no LLM configuration or message is invalid |
| 401 Unauthorized | Missing, invalid, inactive, or expired API key |
| 403 Forbidden | API key owner doesn’t have access to this agent |
| 404 Not Found | Agent not found |
Example Error Response
{
"detail": "Agent does not have LLM configuration"
}
Best Practices
Use Streaming for Chat UIs: Streaming provides a more responsive user
experience by showing the response as it’s generated.
Persist Session IDs: Store session IDs to maintain conversation context
across multiple messages.
Include Metadata: Use the metadata field to track user context, which can
help with personalization and analytics.
Messages are limited to 4000 characters. For longer content, consider breaking
it into multiple messages.
Authorizations
API key for authentication. Get your API key from the eigi.ai Dashboard under Settings → API Keys.
Body
application/json
The ID of the agent to chat with
Example:
"68ea2517dbb84c09bae1ba0a"
User message to send to the agent
Required string length:
1 - 4000Example:
"Hello, how can you help me?"
Session ID for continuing a conversation (created if not provided)
Example:
"58a6b549-ef07-4a31-86bc-0eb0e026840a"
If true, response streams in real-time. If false, returns complete JSON response.
Additional metadata for the conversation
Example:
{
"user_id": "user_123",
"source": "website"
}

