Punkt końcowy czatu
Wysyłaj wiadomości do swojego agenta i odbieraj odpowiedzi AI programowo.
Punkt końcowy czatu pozwala wysyłać wiadomości do agenta i odbierać odpowiedzi AI. Użyj go, aby budować niestandardowe interfejsy czatu lub integrować funkcje agenta z własnymi aplikacjami.
Punkt końcowy
POST /api/v1/chat
Uwierzytelnianie
Wymaga uwierzytelnienia za pomocą tokenu Bearer.
Authorization: Bearer YOUR_API_KEY
Treść żądania
{
"chatbotId": "uuid",
"messages": [
{ "role": "user", "content": "What are your pricing plans?" }
],
"conversationId": "optional-id",
"stream": false
}
Parametry
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
chatbotId | ciąg znaków (UUID) | Tak | Identyfikator Twojego agenta |
messages | tablica | Tak | Tablica obiektów wiadomości (1–100 elementów) |
conversationId | ciąg znaków (maks. 16 znaków) | Nie | Identyfikator referencyjny zwrócony w nagłówku x-conversation-id poprzedniego wywołania. Nieprawidłowe lub brakujące wartości powodują, że serwer przydziela nowy identyfikator. |
stream | wartość logiczna | Nie | Włącza odpowiedź strumieniową (domyślnie: false) |
Obiekt wiadomości
| Pole | Typ | Wartości | Opis |
|---|---|---|---|
role | ciąg znaków | "user", "assistant" | Kto wysłał wiadomość |
content | ciąg znaków | 1–32000 znaków | Treść wiadomości |
Limity
- Maksymalnie 100 wiadomości na żądanie
- Maksymalnie 32 000 znaków na wiadomość
Odpowiedź
Bez przesyłania strumieniowego (domyślnie)
Sukces (200):
{
"text": "Our pricing starts at $29.99/month for the Hobby plan..."
}
Nagłówki obejmują:
X-Conversation-ID: abc123
Przesyłanie strumieniowe
Ustaw "stream": true, aby uzyskać odpowiedź strumieniową.
Sukces (200):
Content-Type: text/plain; charset=utf-8
Odpowiedź przesyła zwykły tekst strumieniowo w miarę jego generowania. Użyj tego podejścia do aktualizacji interfejsu w czasie rzeczywistym.
Przykładowe żądania
Podstawowe żądanie
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"messages": [
{"role": "user", "content": "What are your pricing plans?"}
]
}'
Konwersacja wieloetapowa
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"conversationId": "conv_abc123",
"messages": [
{"role": "user", "content": "What are your pricing plans?"},
{"role": "assistant", "content": "We offer three plans..."},
{"role": "user", "content": "Tell me more about the Pro plan"}
]
}'
Odpowiedź strumieniowa
curl -X POST 'https://your-domain.com/api/v1/chat' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"chatbotId": "123e4567-e89b-12d3-a456-426614174000",
"messages": [{"role": "user", "content": "Hello"}],
"stream": true
}'
Odpowiedzi błędów
| Status | Wiadomość | Przyczyna |
|---|---|---|
| 400 | Invalid JSON body | Zniekształcony JSON |
| 400 | Invalid request body | Brakujące lub nieprawidłowe pola |
| 401 | Missing or invalid Authorization header | Nagłówek nie został podany lub ma nieprawidłowy format |
| 401 | Invalid API key | Klucz nie został rozpoznany |
| 403 | API access requires a Hobby plan or above with active billing | Plan lub stan rozliczeń nie pozwala na dostęp do API |
| 403 | Chatbot does not belong to this account | Agent należy do innego konta |
| 404 | Chatbot not found | Nieprawidłowy identyfikator agenta |
| 429 | Rate limit exceeded | Zbyt wiele żądań |
Format odpowiedzi błędu
{
"message": "Invalid request body",
"details": {
"chatbotId": ["Required"]
}
}
Przykłady kodu
Node.js
async function sendMessage(chatbotId, message) {
const response = await fetch('https://your-domain.com/api/v1/chat', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
chatbotId,
messages: [{ role: 'user', content: message }],
}),
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
const data = await response.json();
return data.text;
}
Python
import requests
def send_message(chatbot_id: str, message: str) -> str:
response = requests.post(
'https://your-domain.com/api/v1/chat',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
},
json={
'chatbotId': chatbot_id,
'messages': [{'role': 'user', 'content': message}],
},
)
response.raise_for_status()
return response.json()['text']
Node.js z przesyłaniem strumieniowym
async function streamMessage(chatbotId, message) {
const response = await fetch('https://your-domain.com/api/v1/chat', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.AGENTKIT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
chatbotId,
messages: [{ role: 'user', content: message }],
stream: true,
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const text = decoder.decode(value);
process.stdout.write(text); // Print as it streams
}
}
Zarządzanie konwersacją
Rozpoczynanie konwersacji
Pomiń conversationId, aby rozpocząć nową konwersację. Nagłówek odpowiedzi X-Conversation-ID zwraca nowy identyfikator.
Kontynuowanie konwersacji
Dołącz conversationId oraz wszystkie poprzednie wiadomości, aby zachować kontekst.
Historia wiadomości
W każdym żądaniu musisz podać poprzednie wiadomości. API jest bezstanowe — nie przechowujemy historii konwersacji na serwerze pomiędzy żądaniami.
Kolejne kroki
- Skonfiguruj subskrypcje webhooków dla powiadomień o zdarzeniach
- Zobacz wszystkie punkty końcowe API
- Zarządzaj kluczami API