Powrót do panelu

Dokumentacja

Dowiedz się, jak korzystać z Asyntai

Dokumentacja API

Twórz niestandardowe integracje za pomocą Asyntai REST API

Pobierz klucz 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ń
Starter100 000
Standard500 000
Pro2 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.