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
The Asyntai API allows you to integrate AI-powered customer support into any application. Send messages and receive intelligent responses grounded in your website content and knowledge base.
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"
POST /websites/
Create a new AI agent. This does the same thing as adding a website in your dashboard: it makes the agent, reads your site, and writes the first draft of the AI instructions.
Use this to set up customers from your own software. You get back the widget ID and the code to put on the website.
Treść żądania
| Pole | Typ | Opis |
|---|---|---|
domain |
string | Required. The website address, for example example.com |
name |
string | Optional. A display name for the agent. Useful when one website has several agents. |
crawl |
boolean | Optional, true by default. Set it to false to create the agent without reading the website. Nothing is crawled and no instructions are written. |
force |
boolean | Optional, false by default. Set it to true to add a website you already have. The copy is stored with a number after it. |
Odpowiedź
{
"success": true,
"website": {
"id": 42,
"domain": "example.com",
"name": "Support agent",
"widget_id": "asyntai_ab12cd34ef56",
"is_primary": true,
"crawl_started": true,
"instructions_status": "generating",
"job_id": "8f2c1e90-..."
},
"embed_code": "<script>...</script>"
}
Przykład (cURL)
curl -X POST https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "example.com", "name": "Support agent"}'
Reading a website takes a few minutes, so this call answers straight away. Check when the agent is ready with the next endpoint.
Errors
| Code | Meaning |
|---|---|
403 |
You have reached the number of websites your plan allows. The answer tells you the limit. |
409 |
Your account already has this website. Send force as true to add it again. |
GET /websites/{id}/
Get one website and see whether it is ready. Use this after you create an agent, to wait until the website has been read and the AI instructions are written.
Odpowiedź
{
"success": true,
"website": {
"id": 42,
"domain": "example.com",
"name": "Support agent",
"widget_id": "asyntai_ab12cd34ef56",
"is_primary": true,
"created_at": "2026-08-11T09:12:00+00:00",
"ready": true,
"instructions": {
"status": "completed",
"has_instructions": true,
"characters": 3421
},
"crawl": {
"job_id": "8f2c1e90-...",
"status": "completed",
"pages_crawled": 47,
"pages_found": 50,
"max_pages": 50,
"completed_at": "2026-08-11T09:15:31+00:00",
"error": ""
},
"knowledge_items": 47
},
"embed_code": "<script>...</script>"
}
The ready field is true when nothing is still running. A crawl that failed also counts as ready, because it has finished. Look at the crawl status to see what happened.
Przykład (cURL)
curl https://asyntai.com/api/v1/websites/42/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET PATCH /websites/{id}/settings/
Read or change the chat widget settings for one website. These are the same settings you see on the Customize page: colours, the name of the assistant, the first message, lead capture, and everything else.
Reading the settings
A GET request returns every setting with its current value, plus a locked list. Locked shows the settings your plan cannot change, and which plans they need.
{
"success": true,
"settings": {
"ai_support_name": "AI Assistant",
"widget_color": "#6366f1",
"initial_message": "Hi, how can I help you?",
"hide_branding": false,
"...": "..."
},
"locked": {
"hide_branding": ["pro", "enterprise"],
"widget_style": ["pro", "enterprise"]
}
}
Changing the settings
A PATCH request changes only the settings you send. Everything you leave out stays as it is.
curl -X PATCH https://asyntai.com/api/v1/websites/42/settings/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ai_support_name": "Ava", "widget_color": "#0f172a", "use_emoji": true}'
{
"success": true,
"updated": ["ai_support_name", "use_emoji", "widget_color"],
"settings": { "...": "..." },
"locked": { "...": "..." }
}
Plans
Each setting needs its own plan, the same as in the dashboard. For example, hiding the Asyntai branding needs the Pro plan, and voice input needs Standard.
| Plan needed | Ustawienia | Examples |
|---|---|---|
| Any paid plan | 25 | widget_color, ai_support_name, initial_message |
| Starter i wyżej | 22 | profile_picture, conversation_starters_enabled |
| Standard i wyżej | 25 | speech_to_text_enabled, image_vision_enabled, escalation_enabled |
| Pro | 6 | hide_branding, widget_style |
If you send a setting your plan does not allow, the whole request is refused with code 403 and nothing is saved. The same happens if any value is wrong, for example a colour that is not a hex code. Your settings never end up half changed.
GET PUT /websites/{id}/instructions/
Read or replace the AI instructions for one website. These are the rules that tell the assistant who it is, what it may say, and what it must not say. They are the same instructions you edit in the dashboard.
Reading
{
"success": true,
"instructions": "You are the support agent for Acme Tools...",
"characters": 1979,
"version": 7,
"mode": "instructions",
"ask_questions": true,
"generation_status": "completed",
"being_edited_by": null
}
Replacing
A PUT request replaces the whole text, the same as saving in the dashboard. There is no append mode. To add a paragraph, read the instructions, add your text, then write it back.
curl -X PUT https://asyntai.com/api/v1/websites/42/instructions/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"instructions": "You are the support agent for Acme Tools...", "version": 7}'
Treść żądania
| Pole | Typ | Opis |
|---|---|---|
instructions |
string | Required. The complete new text. It replaces everything that was there. |
version |
number | Optional but recommended. The version you read. If somebody changed the instructions since then, your write is refused instead of overwriting their work. |
mode |
string | Optional. Either instructions or general. |
ask_questions |
boolean | Optional. Whether the assistant asks a follow-up question at the end of its answers. |
force |
boolean | Optional, false by default. Needed only when your new text is less than half the length of the current text. |
How your instructions are protected
Instructions can take hours to write, so a write can be refused to protect them:
| Code | Meaning |
|---|---|
400 |
Your new text is less than half the length of the current text. This catches a script that sends empty or cut-off text over instructions somebody spent hours on. Send force as true if you meant it. |
409 |
The instructions changed after you read them. Read them again, apply your change, then write. |
423 |
Somebody is editing the instructions in the dashboard right now. The answer tells you who. Try again in a couple of minutes. |
Every change also saves a copy of the previous text, so an earlier version can always be restored from the dashboard.
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",
"sender_type": "ai",
"agent_name": null,
"response_time_ms": 1840.5
}
]
}
Pytanie i jego odpowiedź są zapisywane w jednym rekordzie, więc oba mają ten sam timestamp. Nie odejmuj jednego od drugiego, aby zmierzyć szybkość odpowiedzi, ponieważ wynik zawsze wyniesie zero. Użyj response_time_ms, czyli rzeczywistego czasu odpowiedzi w milisekundach.
sender_type ma wartość ai, gdy odpowiedział chatbot, i human, gdy rozmowę przejął jeden z Twoich agentów. agent_name zawiera nazwę wyświetlaną tego agenta.
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",
"first_response_time_ms": 1840.5,
"first_human_response_at": null,
"started_at": "2024-01-15T10:29:58Z",
"ended_at": "2024-01-15T10:41:12Z",
"taken_over_at": null,
"website_domain": "example.com"
}
]
}
Pola znaczników czasu do raportowania
| Pole | Opis |
|---|---|
started_at |
Kiedy odwiedzający otworzył czat. Dostępne tylko dla sesji widżetu, ponieważ sesje utworzone przez API nigdy nie otwierają widżetu. |
first_message_at |
Kiedy zapisano pierwszą wiadomość rozmowy. |
first_response_time_ms |
Jak długo trwała pierwsza odpowiedź, w milisekundach. Użyj tego do czasu pierwszej odpowiedzi. |
first_human_response_at |
Kiedy jeden z Twoich agentów wysłał pierwszą odpowiedź. Wartość to null, gdy chatbot obsłużył całą rozmowę. |
taken_over_at |
Kiedy agent przejął czat od chatbota. |
last_message_at |
Kiedy zapisano ostatnią wiadomość rozmowy. |
ended_at |
Kiedy odwiedzający opuścił czat. Czat nie ma stanu rozwiązany ani zamknięty, ponieważ odwiedzający zawsze może wrócić i zadać kolejne pytanie. |
Wszystkie znaczniki czasu są w UTC i używają formatu ISO 8601. Nie można zmienić strefy czasowej. Przelicz wartości we własnym narzędziu raportowym.
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": "[email protected]",
"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": "[email protected]",
"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 | 300 000 |
| Standard | 1 500 000 |
| Pro | 6 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 "[email protected]"
GET /knowledge/{id}/
Odczytaj jeden wpis bazy wiedzy wraz z zapisanym dla niego tekstem. Wartość id pochodzi z odpowiedzi GET /knowledge/.
Treść jest zwracana dla wpisów, które dodałeś samodzielnie: tekstu, plików, arkuszy, pojedynczych adresów URL i filmów. Przeszukiwanie witryny jest widoczne na liście, ale jej strony nie są zwracane, ponieważ źródłem jest Twoja własna publiczna witryna. W takim przypadku content ma wartość null, a pole reason wyjaśnia powód.
Odpowiedź
{
"success": true,
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z",
"chunks_count": 3,
"content": "We are open Monday to Friday, 9am to 5pm...",
"content_available": true,
"char_count": 43
}
Przykład (cURL)
curl "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
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 [email protected].