Najlepszy przewodnik po API dla programistów
Ten dokument stanowi oficjalną, wyczerpującą dokumentację API dla całej platformy Chirps AI. Zmapowaliśmy każdy bezpieczny dla programisty punkt końcowy w całym systemie. Możesz programowo odtworzyć 100% funkcjonalności pulpitu nawigacyjnego, bez użycia głowy.
1. Uwierzytelnianie i podstawowe zasady
Podstawowy adres URL: https://chirps.cc
Wszystkie punkty końcowe API wymagają klucza API Chirps w nagłówku „Authorization”. Możesz wygenerować klucz API z Menedżera API w sekcji dla programistów na pulpicie nawigacyjnym.
Authorization: Bearer <YOUR_CHIRPS_API_KEY>
Przykładowe żądanie:
curl -X GET https://chirps.cc/api/billing/usage \ -H "Authorization: Bearer <YOUR_CHIRPS_API_KEY>" \ -H "Content-Type: application/json"
Standardowa obsługa błędów
| Kod stanu | Opis |
|---|---|
| ,,200 OK”. | Żądanie zostało zrealizowane. |
400 Złych Żądań | Weryfikacja ładunku JSON nie powiodła się. Zawiera tablicę szczegółów. |
401 Nieautoryzowane | Brakujący lub wygasły token. |
402 Wymagana płatność | Obszar roboczy osiągnął limity rozliczeniowe. |
403 Zabronione | Użytkownik nie ma wymaganych uprawnień RBAC. |
404 Nie znaleziono | Żądany zasób nie istnieje. |
500 Błąd serwera | Nieoczekiwany błąd platformy. |
2. Cykl życia asystenta (tworzenie)
GET /api/asystenci
Lista asystentów
Pobiera listę wszystkich asystentów powiązanych z obszarem roboczym klucza API.
Utwórz Asystenta
POST /api/asystenci
Tworzy nowego asystenta ze wszystkimi konfiguracjami podstawowymi.
{
"businessName": "Acme Corp",
"businessUrl": "https://acme.com",
"knowledgeBaseType": "both",
"knowledgeBaseUrl": "https://acme.com/help",
"knowledgeBaseText": "Raw text content of a document...",
"knowledgeBaseFileName": "company_handbook.pdf",
"language": "en",
"isMultiLanguage": false,
"tonePersonality": "professional",
"isCustomPersonality": false,
"supportEmail": "[email protected]",
"maxPages": 5,
"maxDepth": 2,
"welcomeMessageDelay": 2
}| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
Nazwa Firmy | Smyczkowy | Tak | Nazwa firmy (2-100 znaków). |
biznesowy adres URL | Smyczkowy | Tak | Prawidłowy adres URL witryny firmy (maks. 500 znaków). |
typ bazy wiedzy | Wyliczenie | Tak | Jedno z: "url", "dokument", "oba", "brak". |
KnowledgeBaseUrl | Smyczkowy | NIE | Należy podać, jeśli typem jest `url'' lub `oba''. |
Tekst Bazowy Wiedzy | Smyczkowy | NIE | Surowy tekst, jeśli typ to `dokument'' lub `oba''. |
NazwaPliku Bazowego Wiedzy | Smyczkowy | NIE | Nazwa przesłanego pliku, jeśli dostarczany jest tekst. |
| „język”. | Smyczkowy | Tak | Kod języka (np. „en”, „es”). |
| „jest wielojęzyczny”. | Wartość logiczna | NIE | Włącz automatyczne tłumaczenie. Domyślnie „fałsz”. |
| „tonOsobowość”. | Smyczkowy | Tak | Np. „profesjonalny”, „przyjazny””. Maks. 100 znaków. |
| „isCustomPersonality”. | Wartość logiczna | NIE | Włącz niestandardowy dźwięk. Domyślnie „fałsz”. |
niestandardowy opis osobowości | Smyczkowy | NIE | Niestandardowe instrukcje dźwiękowe, jeśli są włączone (maks. 2000 znaków). |
| „instrukcje dodatkowe”. | Smyczkowy | NIE | Podstawowe instrukcje podpowiedzi (maks. 10000 znaków). |
wsparcieE-mail | Smyczkowy | Tak | Prawidłowy adres e-mail do eskalacji. |
maxPages | Numer | NIE | Strony do przeszukania. Min. 1, maks. 100. Domyślnie „5”. |
maxDepth | Numer | NIE | Głębokość pełzania. Min. 1, maks. 20. Domyślnie „2”. |
opóźnienie wiadomości powitalnej | Numer | NIE | Opóźnienie w sekundach przed powitaniem. Min. 0, Maks. 6. Domyślnie „2”. |
Usuń Asystenta
USUŃ /api/asystenci/:id
Trwale usuwa asystenta i kaskadowo usuwa wszystkie jego węzły wiedzy i historię. Nie jest wymagany żaden ładunek.
3. Asystent Analytics i statystyki
Natychmiast po utworzeniu i użyciu możesz programowo pobrać wskaźniki wydajności asystenta.
GET /api/analytics/overview?assistantId=uuid&range=30
Pobierz statystyki użytkowania, całkowitą liczbę wiadomości, przechwyconych potencjalnych klientów i ogólne wskaźniki zaangażowania dla określonego asystenta. Parametr „zakres” jest opcjonalny (liczba dni, min. 7, maks. 365, domyślnie 30).
Oczekiwana odpowiedź
{
"totalConversations": 1245,
"totalMessages": 8420,
"totalLeads": 156,
"totalBookings": 42,
"satisfactionRate": 94,
"avgMessagesPerSession": 6.7,
"avgSessionsPerDay": 41.5,
"liveNow": 3,
"onlineNow": 12,
"dailySeries": [
{
"date": "2026-07-15",
"conversations": 45,
"messages": 310,
"leads": 5,
"bookings": 2
}
],
"agentStats": [
{
"name": "Jane Doe",
"messagesSent": 120,
"csat": 98
}
]
}| Nieruchomość | Typ | Opis |
|---|---|---|
| „całkowite rozmowy”. | Numer | Całkowita liczba sesji czatu obsłużonych przez asystenta. |
| „wszystkie wiadomości”. | Numer | Całkowita liczba wiadomości (użytkownik + AI) wysłanych we wszystkich rozmowach. |
| „całkowita liczba potencjalnych klientów”. | Numer | Całkowita liczba wyodrębnionych unikalnych leadów (imię i nazwisko, adres e-mail, telefon). |
| „całkowite rezerwacje”. | Numer | Łączna liczba pomyślnie zarezerwowanych spotkań w kalendarzu. |
| „Wskaźnik satysfakcji”. | Numer | Procent (0–100) pozytywnych ocen w stosunku do wszystkich ocen. |
średniaWiadomościNaSesję | Numer | Średnia liczba wiadomości wymienianych w trakcie rozmowy. |
średnia liczba sesji na dzień | Numer | Średnia liczba rozmów dziennie w żądanym zakresie. |
| „Na żywo”. | Numer | Liczba aktywnych rozmów aktualnie przejętych przez agenta ludzkiego. |
| „Teraz online”. | Numer | Liczba użytkowników aktywnie rozmawiających z AI w ciągu ostatnich 2 minut. |
| „codzienna seria”. | Szyk | Tablica obiektów codziennych zawierających liczniki „rozmów”, „wiadomości”, „potencjalnych klientów” i „rezerwacji” według daty. |
Statystyki agenta | Szyk | Wskaźniki wydajności agentów ludzkich, w tym „messagesSent” i „csat” (wynik zadowolenia klienta). |
4. Wiedza i szkolenie
Po utworzeniu asystenta zarządzasz jego mózgiem poprzez „węzły wiedzy”. Each node represents a chunk of data (a crawled URL, an uploaded document, or a manual text snippet).
Zarządzanie węzłami wiedzy
GET /api/assistants/:id/nodes - Lista wszystkich węzłów wiedzy dla tego asystenta.
POST /api/assistants/:id/nodes - Ręcznie wstrzyknij nowy blok wiedzy.
{
"title": "Return Policy",
"refined_content": "We offer a 30-day return policy for all unused items...",
"type": "text",
"metadata": {}
}PATCH /api/assistants/:id/nodes/:nodeId - Zmodyfikuj zawartość istniejącego węzła lub przełącz jego stan aktywny.
{
"title": "Updated Return Policy",
"refined_content": "We offer a 60-day return policy now...",
"is_active": true
}DELETE /api/assistants/:id/nodes/:nodeId - Całkowicie usuwa blok wiedzy.
POST /api/assistants/:id/nodes/:nodeId/re-crawl - Zmusza skrobak do ponownego przeszukania adresu URL powiązanego z tym węzłem i zaktualizowania jego zawartości. Ładunek: {}.
Szkolenie AI
POST /api/assistants/:id/train - Skompiluj wszystkie węzły wiedzy is_active i użyj orkiestratora AI do dynamicznej syntezy nowego głównego monitu systemowego. Ładunek: {}.
5. Wygląd i konfiguracja widżetu
Dostosuj interfejs użytkownika dymka asystenta i okna czatu.
Zaktualizuj wygląd widgetu
PATCH /api/assistants/:id/widget-config
{
"primaryColor": "#000000",
"position": "bottom-right",
"language": "en",
"welcomeMessage": "Hi! How can I help you today?",
"title": "Acme Support",
"theme": "light",
"fontFamily": "default",
"bubbleStyle": "circle",
"bubbleText": "Chat with us",
"headerSubtitle": "We typically reply instantly",
"inputPlaceholder": "Type your message...",
"privacyPolicyUrl": "https://acme.com/privacy",
"voiceEnabled": true,
"voiceName": "Fenrir",
"welcomeMessageDelay": 2,
"fileUploadEnabled": true,
"dictationEnabled": true,
"copilotEnabled": true,
"welcomeSuggestions": ["Pricing plans", "Contact sales"],
"pageVisibility": {
"mode": "all",
"paths": []
}
}| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| „Kolor podstawowy”. | Smyczkowy | NIE | Kod koloru szesnastkowego (np. „#000000”). |
| „pozycja”. | Wyliczenie | NIE | „prawy dolny róg”, „lewy dolny dół”, „prawy górny róg”, „lewy górny róg”. |
| „język”. | Smyczkowy | NIE | Kod języka widgetu (np. "en", "fr"). |
| „Wiadomość powitalna”. | Smyczkowy | NIE | Początkowa wiadomość powitalna. |
tytuł | Smyczkowy | NIE | Tytuł w nagłówku widżetu. |
temat | Wyliczenie | NIE | „jasny” lub „ciemny”. |
Rodzina czcionek | Wyliczenie | NIE | domyślny' (Inter) lub ``odziedziczyć''. |
| „Styl bańki”. | Wyliczenie | NIE | "koło", "bar", "szuflada", "okrągło-markowe", "barek-markowy', "szuflada-markowa'. |
| „Tekst bąbelkowy”. | Smyczkowy | NIE | Tekst wyświetlany obok dymku (w przypadku stylów paska/szuflady). |
nagłówekPodtytuł | Smyczkowy | NIE | Podtytuł w nagłówku widżetu. |
miejsce wejściowe | Smyczkowy | NIE | Tekst zastępczy dla danych wejściowych wiadomości. |
Url Polityki Prywatności | Smyczkowy | NIE | Adres URL Twojej polityki prywatności. |
avatarUrl | Smyczkowy | NIE | Adres URL niestandardowego obrazu awatara. |
niestandardowyLogoUrl | Smyczkowy | NIE | Adres URL niestandardowego obrazu logo nagłówka. |
| „Włączony głos”. | Wartość logiczna | NIE | Włącz połączenia głosowe. |
Nazwa głosu | Smyczkowy | NIE | Tożsamość głosowa dla odpowiedzi audio. Zobacz dostępne głosy poniżej. |
opóźnienie wiadomości powitalnej | Numer | NIE | Opóźnienie w sekundach przed powitaniem. |
fileUploadEnabled | Wartość logiczna | NIE | Zezwalaj użytkownikom na przesyłanie załączników. |
dyktowanie włączone | Wartość logiczna | NIE | Włącz dyktowanie głosowe (zamienianie mowy na tekst). |
| „drugi pilotWłączony”. | Wartość logiczna | NIE | Włącz żetony sugestii drugiego pilota. |
| „powitanieSugestie”. | Szyk | NIE | Tablica ciągów znaków dla początkowych żetonów szybkiej odpowiedzi. |
Widoczność strony | Obiekt | NIE | Określa, na jakich stronach pojawi się widżet („tryb”, „ścieżki”). |
rateLimitEnabled | Wartość logiczna | NIE | Włącz ograniczenie szybkości czatu. Domyślnie prawda. |
rateLimitMaxMessages | Numer | NIE | Maksymalna liczba wiadomości w oknie. Domyślnie 30. |
rateLimitTimeWindow | Numer | NIE | Okno czasowe w minutach. Domyślnie 60. |
gdprDataMaskingEnabled | Wartość logiczna | NIE | Maskuj PII przed zapisaniem. Domyślnie fałsz. |
Dostępne nazwy głosów
- Samice: Zephyr, Aoede, Core, Leda, Callirrhoe, Despina, Erinome, Laomedeia, Achernar, Pulcherrima, Gacrux, Algenib, Sulfat
- Samce:
Puck,Charon,Fenrir,Orus,Enceladus,Iapetus,Umbriel,Algieba,Autonoe,Rasalgethi,Alnilam
Niestandardowe logo
POST /api/assistants/:id/widget-logo
Format: multipart/form-data z polem file.
6. Integracja i wdrożenie
Po skonfigurowaniu i przeszkoleniu asystenta możesz go wdrożyć na dwa podstawowe sposoby:
Opcja A: osadzanie w sieci Web (frontend)
Najprostszy sposób na integrację asystenta ze standardową stroną internetową (WordPress, Shopify, React itp.). Kod osadzania jest czysto deterministyczny. Aby go pobrać, nie potrzebujesz punktu końcowego. Po prostu upuść to w <head> swojej witryny:
<script src="https://chirps.cc/widget.js" data-assistant-id="YOUR_ASSISTANT_ID_HERE"></script>
Opcja B: Bezgłowe Integracje (Backend / CRM / Boty)
Jeśli tworzysz niestandardowego klienta (takiego jak bot Discord, integracja z Telegramem lub natywna aplikacja na iOS), NIE będziesz używać Web Embed. Zamiast tego będziesz mieć bezpośrednią interakcję z punktem końcowym /api/chat.
POST /api/chat lub /api/chat?stream=true
Uwaga: Ten punkt końcowy jest publiczny i *nie* wymaga nagłówka klucza API Authorization: Bearer. Uwierzytelnianie odbywa się niejawnie poprzez assistantId.
{
"assistantId": "123e4567-e89b-12d3-a456-426614174000",
"sessionId": "unique-session-id-for-user",
"conversationId": "optional-uuid",
"message": "Hello, I need help with my billing."
}*(Obsługuje również multipart/form-data z polem file dla załączników, jeśli fileUploadEnabled ma wartość true).*
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
AsystentId | Smyczkowy | Tak | UUID asystenta. |
Identyfikator sesji | Smyczkowy | Tak | Generujesz to. Unikalny identyfikator z Twojego własnego systemu do grupowania historii czatów (np. identyfikator użytkownika Discord, identyfikator czatu Telegram lub losowy identyfikator UUID). |
wiadomość | Smyczkowy | Tak | Treść tekstowa wiadomości (max 5000 znaków). |
Identyfikator rozmowy | Smyczkowy | NIE | UUID konwersacji (zwrócony w pierwszym żądaniu). |
| „identyfikator”. | Smyczkowy | NIE | Opcjonalny identyfikator komunikatu po stronie klienta, aby zapobiec deduplikacji. |
Tryb 1: Standardowa odpowiedź JSON (domyślnie)
Wysyłając żądanie POST do /api/chat (bez parametru stream), czekasz na pełną odpowiedź AI i otrzymujesz standardowy obiekt JSON.
{
"message": "Here is the information you requested...",
"conversationId": "uuid-of-conversation",
"messageId": "uuid-of-message"
}*(Jeśli zostanie zwrócone is_active_agent: true, oznacza to, że czat przejął człowiek, a message będzie miało wartość null.)*
Tryb 2: Przesyłanie strumieniowe zdarzeń wysyłanych przez serwer (?stream=true)
Dodając „?stream=true” do adresu URL, otrzymujesz strumień zdarzeń wysyłanych przez serwer (SSE) w czasie rzeczywistym. Twój kod powinien nasłuchiwać tych konkretnych typów zdarzeń:
- `event: token`: Zawiera
{"text": "fragment"}. Wywoływany dla każdego fragmentu tekstu odpowiedzi AI. - `event: status`: Zawiera
{"text": "Przeszukiwanie bazy wiedzy..."}. Reprezentuje stany wykonania narzędzia zaplecza. - `event: gotowe`: Zawiera
{"messageId": "uuid", "conversationId": "uuid", "message": "pełny tekst"}. Wywoływany po całkowitym zakończeniu generowania. - `zdarzenie: błąd`: Zawiera
{"błąd": "Komunikat o błędzie"}. Uruchamiany w przypadku wystąpienia ograniczeń szybkości lub błędów.
Punkty końcowe przejęcia na żywo
GET /api/czat/sesje
Pobierz sesje historyczne.
POST /api/chat/toggle-agent
Wstrzymaj sztuczną inteligencję w celu przejęcia władzy przez ludzi. Ładunek: { "sessionId": "..." }
POST /api/chat/wiadomość-agenta
Wyślij ludzką wiadomość. Ładunek: { "sessionId": "...", "message": "..." }
7. Zaawansowane ustawienia Asystenta
PATCH /api/asystenci/:id
Zaktualizuj konfigurację rdzenia
Zmodyfikuj podstawowe ustawienia, osobowość i granice skrobania asystenta.
{
"business_name": "Acme Corp",
"business_url": "acme.com",
"business_description": "We sell anvils.",
"system_prompt": "You are a helpful assistant.",
"language": "en",
"tone_personality": "Friendly",
"support_email": "[email protected]",
"additional_instructions": "Never mention the Roadrunner.",
"is_multi_language": true,
"is_dev_mode": false,
"is_active": true,
"max_pages": 15,
"max_depth": 2,
"widget_config_merge": {
"rateLimitEnabled": true
}
}*Uwaga: wszystkie pola są opcjonalne. Wysyłaj tylko te pola, które chcesz zaktualizować.*
Usuń Asystenta
USUŃ /api/asystenci/:id
Trwale usuwa asystenta i kaskadowo usuwa wszystkie węzły wiedzy, rozmowy i wiadomości. Jeśli asystent nigdy nie został w pełni skonfigurowany, zwracany jest miesięczny limit tworzenia.
8. Telefonia i głos
GET /api/phone-numbers - Lista dostępnych numerów.
POST /api/phone-numbers/:id/sign - Podaj numer. Ładunek: {}
POST /api/assistants/:id/outbound - Uruchom połączenie wychodzące. Ładunek: { "do": "+123...", "wiadomość": "..." }
9. Ekstrakcja leadów
GET /api/leads?assistantId=uuid&page=1&limit=50&status=new - Pobierz podzielone na strony i uporządkowane leady AI wyodrębnione podczas rozmów.
GET /api/leads?id=leadId - Pobierz szczegóły pojedynczego leada, łącznie z pełnym zapisem rozmowy.
10. Rezerwacje i kalendarz
GET /api/bookings?assistantId=uuid&start=ISO-8601&end=ISO-8601 - Pobierz spotkania z kalendarza zaplanowane przez asystenta, opcjonalnie filtrowane według daty.
GET /api/bookings?id=bookingId - Pobierz szczegóły pojedynczej rezerwacji, łącznie z transkrypcją rozmowy.
POST /api/bookings/cancel - Anuluj aktywną rezerwację. Ładunek: { "bookingId": "uuid" }
POST /api/bookings/reschedule - Dostosuj rezerwację. Ładunek: { "bookingId": "uuid", "newTime": "ISO-8601" }
11. Korzystanie z konta i rozliczeń
GET /api/billing/wykorzystanie
Pobierz wykorzystanie cyklu rozliczeniowego obszaru roboczego, limity planu subskrypcji i łączną liczbę asystentów. Uwaga: w przypadku korzystania z klucza API żądanie jest automatycznie kierowane do obszaru roboczego klucza API; nie musisz podawać teamId.
Odpowiedź („200 OK”):
{
"planName": "Pro",
"periodStr": "2023-10-01",
"assistantCount": 3,
"usage": {
"message_count": 1450,
"harvest_count": 12,
"recrawl_count": 5,
"train_count": 2,
"assistants_created_count": 1,
"voice_minutes_used": 0,
"sms_count": 0,
"email_count": 0,
"whatsapp_count": 0
},
"limits": {
"messages": 5000,
"assistants": 5,
"training": 50,
"recrawls": 20
},
"workspaceOwnerId": "uuid"
}Uruchom asystenta
za 10 minut.
Zarejestruj się, trenuj na swojej stronie, dostosuj alerty i umieść je na swojej stronie internetowej.