Dokumentacja API
Twórz niestandardowe integracje za pomocą Asyntai REST API
Wymagany plan płatny: Dostęp do API jest dostępny w planach Starter, Standard i Pro. Zobacz cennik
Przegląd
Asyntai API umożliwia integrację obsługi klienta opartej na AI z dowolną aplikacją. Wysyłaj wiadomości i otrzymuj inteligentne odpowiedzi wytrenowane na treściach Twojej strony internetowej i bazy wiedzy.
Uwierzytelnianie
Wszystkie żądania API wymagają uwierzytelnienia za pomocą klucza API. Klucz API można uzyskać na stronie Ustawienia API.
Dołącz swój klucz API do żądań, korzystając z jednej z tych metod:
- Nagłówek Authorization (zalecany):
Authorization: Bearer YOUR_API_KEY - Nagłówek X-API-Key:
X-API-Key: YOUR_API_KEY
Zachowaj swój klucz API w tajemnicy. Każdy, kto posiada Twój klucz, może uzyskać dostęp do Twojego konta za pośrednictwem API. Nigdy nie ujawniaj go w kodzie po stronie klienta.
Bazowy adres URL
https://asyntai.com/api/v1/
Endpointy
POST /chat/
Wyślij wiadomość i otrzymaj odpowiedź wygenerowaną przez AI.
Treść żądania
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
message |
string | Tak | Wiadomość użytkownika do wysłania do AI |
session_id |
string | Nie | Unikalny identyfikator rozmowy. Użyj tego samego session_id, aby zachować historię rozmowy. |
website_id |
integer | Nie | Identyfikator konkretnej strony. Jeśli nie zostanie podany, zostanie użyta Twoja główna strona. |
Odpowiedź
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Przykład (cURL)
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "What are your business hours?", "session_id": "user_123"}'
Przykład (Python)
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"message": "What are your business hours?",
"session_id": "user_123"
}
)
data = response.json()
print(data["response"])
Przykład (JavaScript)
const response = await fetch("https://asyntai.com/api/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "What are your business hours?",
session_id: "user_123"
})
});
const data = await response.json();
console.log(data.response);
GET /websites/
Wyświetl wszystkie strony internetowe powiązane z Twoim kontem.
Odpowiedź
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Przykład (cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
Pobierz historię rozmowy dla konkretnej sesji.
Parametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
session_id |
string | Tak | Identyfikator sesji, dla której ma zostać pobrana historia |
limit |
integer | Nie | Maksymalna liczba wiadomości do zwrócenia (domyślnie: 50, maks.: 100) |
Odpowiedź
{
"success": true,
"session_id": "user_123",
"messages": [
{
"role": "user",
"content": "What are your business hours?",
"timestamp": "2024-01-15T10:30:00Z"
},
{
"role": "assistant",
"content": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"timestamp": "2024-01-15T10:30:01Z"
}
]
}
Przykład (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Wyświetl ostatnie sesje czatów. Użyj tego, aby poznać identyfikatory sesji, które następnie można przekazać do /conversations/ w celu pobrania pełnej historii wiadomości.
Parametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
limit |
integer | Nie | Liczba ostatnich sesji do zwrócenia (domyślnie: 20, maks.: 100) |
website_id |
string | Nie | Filtruj sesje według identyfikatora strony internetowej |
source |
string | Nie | Filtruj według źródła sesji: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Odpowiedź
{
"success": true,
"sessions": [
{
"session_id": "session_abc123def",
"source": "widget",
"message_count": 5,
"first_message": "What are your business hours?",
"first_message_at": "2024-01-15T10:30:00Z",
"last_message_at": "2024-01-15T10:35:00Z",
"website_domain": "example.com"
}
]
}
Przykład (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Pobierz zebrane leady — adresy e-mail i numery telefonów przesłane przez odwiedzających podczas rozmów na czacie.
Parametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
limit |
integer | Nie | Liczba leadów do zwrócenia (domyślnie: 50, maks: 100) |
website_id |
string | Nie | Filtruj leady według określonego ID strony internetowej |
Odpowiedź
{
"success": true,
"leads": [
{
"session_id": "session_abc123def",
"email": "visitor@example.com",
"phone": "+1234567890",
"page_url": "https://example.com/pricing",
"started_at": "2024-01-15T10:30:00Z"
}
]
}
| Pole | Typ | Opis |
|---|---|---|
session_id |
string | ID sesji czatu. Przekaż go do /conversations/, aby zobaczyć pełną historię czatu. |
email |
ciąg znaków lub null | Adres e-mail podany przez odwiedzającego, lub null jeśli nie został zebrany |
phone |
ciąg znaków lub null | Numer telefonu podany przez odwiedzającego, lub null jeśli nie został zebrany |
page_url |
ciąg znaków lub null | URL strony, na której odwiedzający rozmawiał |
started_at |
string | Znacznik czasu ISO 8601 rozpoczęcia sesji czatu |
Przykład (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Przykład (Python)
import requests
response = requests.get(
"https://asyntai.com/api/v1/leads/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"limit": 20}
)
leads = response.json()["leads"]
for lead in leads:
print(f"{lead['email'] or ''} | {lead['phone'] or ''}")
GET /account/
Pobierz informacje o koncie i statystyki użytkowania.
Odpowiedź
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Przykład (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Wiele stron internetowych? Endpointy bazy wiedzy domyślnie odnoszą się do Twojej strony głównej. Jeśli posiadasz wiele stron internetowych, przekaż website_id aby wybrać konkretną. Identyfikatory swoich stron znajdziesz za pomocą GET /websites/.
Dzienne limity przesyłania: Przesyłanie do bazy wiedzy (tekst, URL, arkusz kalkulacyjny) podlega dziennemu limitowi znaków w zależności od planu. Dotyczy to łącznej treści przesłanej przez wszystkie endpointy bazy wiedzy w ciągu dnia.
| Plan | Znaki/dzień |
|---|---|
| Starter | 100 000 |
| Standard | 500 000 |
| Pro | 2 000 000 |
GET /knowledge/
Wyświetl wpisy w bazie wiedzy. Są to źródła treści, z których korzysta Twój chatbot AI do odpowiadania na pytania.
Parametry zapytania
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
limit |
integer | Nie | Liczba wpisów do zwrócenia (domyślnie: 50, maks.: 100) |
website_id |
string | Nie | Filtruj według identyfikatora strony (domyślnie Twoja strona główna) |
Odpowiedź
{
"success": true,
"entries": [
{
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "ghi-456-jkl",
"type": "url",
"title": "About Us - Example",
"description": "Content from https://example.com/about",
"created_at": "2024-01-14T09:00:00Z"
}
]
}
Przykład (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Dodaj niestandardową treść tekstową do bazy wiedzy. AI wykorzysta ją do odpowiadania na pytania odwiedzających.
Treść żądania
{
"title": "Return Policy",
"content": "We offer a 30-day return policy on all items. Items must be unused and in original packaging. Refunds are processed within 5-7 business days.",
"website_id": "123"
}
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
title |
string | Tak | Tytuł tego wpisu w bazie wiedzy |
content |
string | Tak | Treść tekstowa (min. 10 znaków) |
website_id |
string | Nie | Docelowa strona internetowa (domyślnie Twoja strona główna) |
Odpowiedź
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Przykład (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/text/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Return Policy", "content": "We offer a 30-day return policy..."}'
POST /knowledge/url/
Dodaj stronę internetową do bazy wiedzy. Treść zostanie pobrana i wyodrębniona automatycznie.
Treść żądania
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
url |
string | Tak | Adres URL, z którego ma zostać pobrana treść |
website_id |
string | Nie | Docelowa strona internetowa (domyślnie Twoja strona główna) |
Odpowiedź
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Przykład (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/url/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/faq"}'
POST /knowledge/spreadsheet/
Prześlij arkusz kalkulacyjny CSV lub Excel (.xlsx) do bazy wiedzy. Każdy wiersz staje się osobnym wpisem w bazie wiedzy — idealne rozwiązanie dla katalogów produktów, list FAQ, cenników i katalogów.
Żądanie
Wyślij jako multipart/form-data (przesyłanie pliku), nie JSON.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
file |
plik | Tak | Plik .csv lub .xlsx. Pierwszy wiersz musi zawierać nagłówki kolumn. Maks. wierszy na przesłanie: Starter 500, Standard 2000, Pro 10 000. Nadmiarowe wiersze są obcinane. |
website_id |
string | Nie | Docelowa strona internetowa (domyślnie Twoja strona główna) |
Odpowiedź
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Przykład (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
Usuń wpis z bazy wiedzy. Wartość id można znaleźć w odpowiedzi GET /knowledge/.
Odpowiedź
{
"success": true,
"message": "Knowledge base entry deleted"
}
Przykład (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Wskazówka: Webhookami można również zarządzać z poziomu Ustawienia API strony, bez pisania kodu.
GET /webhooks/
Wyświetl zarejestrowane webhooki.
Odpowiedź
{
"success": true,
"webhooks": [
{
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Przykład (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Zarejestruj nowy webhook, aby otrzymywać powiadomienia o zdarzeniach w czasie rzeczywistym.
Dostępne zdarzenia
| Zdarzenie | Opis |
|---|---|
message.received |
Odwiedzający wysłał wiadomość i otrzymał odpowiedź |
conversation.started |
Rozpoczęto nową sesję czatu |
escalation.requested |
AI zainicjowało eskalację do agenta |
takeover.started |
Agent przejął sesję czatu |
Treść żądania
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
url |
string | Tak | Adres URL HTTPS do odbierania żądań POST webhooka |
events |
array | Tak | Lista zdarzeń do subskrypcji (patrz tabela powyżej) |
website_id |
string | Nie | Docelowa strona internetowa (domyślnie Twoja strona główna) |
Odpowiedź
{
"success": true,
"webhook": {
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"secret": "whsec_abc123...",
"created_at": "2024-01-15T10:30:00Z"
}
}
Weryfikacja webhooków: Każdy webhook zawiera secret (wyświetlany tylko przy tworzeniu). Każde żądanie POST do Twojego URL zawiera X-Webhook-Signature nagłówek — HMAC-SHA256 treści żądania podpisany Twoim kluczem tajnym.
Przykład (cURL)
curl -X POST "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["message.received"]}'
DELETE /webhooks/{id}/
Usuń webhook. Wartość id można znaleźć w odpowiedzi GET /webhooks/.
Odpowiedź
{
"success": true,
"message": "Webhook deleted"
}
Przykład (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Odpowiedzi błędów
Wszystkie odpowiedzi błędów mają następujący format:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Kod statusu | Opis |
|---|---|
400 |
Błędne żądanie - Nieprawidłowe parametry lub brakujące wymagane pola |
401 |
Nieautoryzowany — nieprawidłowy lub brakujący klucz API |
429 |
Zbyt wiele żądań — osiągnięto limit wiadomości dla Twojego planu |
503 |
Usługa niedostępna — usługa AI tymczasowo niedostępna |
Limity żądań
Korzystanie z API jest ograniczone przez Twój plan subskrypcji:
- Free: 100 wiadomości/miesiąc
- Starter (39 $/mies.): 2500 wiadomości/miesiąc
- Standard (139 $/mies.): 15 000 wiadomości/miesiąc
- Pro (449 $/mies.): 50 000 wiadomości/miesiąc
Potrzebujesz pomocy?
Jeśli masz pytania lub napotkasz problemy, skontaktuj się z nami pod adresem hello@asyntai.com.