Developer API
API programisty

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.

Developer API

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.

http
Authorization: Bearer <YOUR_CHIRPS_API_KEY>

Przykładowe żądanie:

bash
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 stanuOpis
,,200 OK”.Żądanie zostało zrealizowane.
400 Złych ŻądańWeryfikacja ładunku JSON nie powiodła się. Zawiera tablicę szczegółów.
401 NieautoryzowaneBrakujący lub wygasły token.
402 Wymagana płatnośćObszar roboczy osiągnął limity rozliczeniowe.
403 ZabronioneUżytkownik nie ma wymaganych uprawnień RBAC.
404 Nie znalezionoŻądany zasób nie istnieje.
500 Błąd serweraNieoczekiwany błąd platformy.
Developer API

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.

json
{

  "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
}
ParametrTypWymaganyOpis
Nazwa FirmySmyczkowyTakNazwa firmy (2-100 znaków).
biznesowy adres URLSmyczkowyTakPrawidłowy adres URL witryny firmy (maks. 500 znaków).
typ bazy wiedzyWyliczenieTakJedno z: "url", "dokument", "oba", "brak".
KnowledgeBaseUrlSmyczkowyNIENależy podać, jeśli typem jest `url'' lub `oba''.
Tekst Bazowy WiedzySmyczkowyNIESurowy tekst, jeśli typ to `dokument'' lub `oba''.
NazwaPliku Bazowego WiedzySmyczkowyNIENazwa przesłanego pliku, jeśli dostarczany jest tekst.
„język”.SmyczkowyTakKod języka (np. „en”, „es”).
„jest wielojęzyczny”.Wartość logicznaNIEWłącz automatyczne tłumaczenie. Domyślnie „fałsz”.
„tonOsobowość”.SmyczkowyTakNp. „profesjonalny”, „przyjazny””. Maks. 100 znaków.
„isCustomPersonality”.Wartość logicznaNIEWłącz niestandardowy dźwięk. Domyślnie „fałsz”.
niestandardowy opis osobowościSmyczkowyNIENiestandardowe instrukcje dźwiękowe, jeśli są włączone (maks. 2000 znaków).
„instrukcje dodatkowe”.SmyczkowyNIEPodstawowe instrukcje podpowiedzi (maks. 10000 znaków).
wsparcieE-mailSmyczkowyTakPrawidłowy adres e-mail do eskalacji.
maxPagesNumerNIEStrony do przeszukania. Min. 1, maks. 100. Domyślnie „5”.
maxDepthNumerNIEGłębokość pełzania. Min. 1, maks. 20. Domyślnie „2”.
opóźnienie wiadomości powitalnejNumerNIEOpóź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.

Developer API

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ź

json
{

  "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śćTypOpis
„całkowite rozmowy”.NumerCałkowita liczba sesji czatu obsłużonych przez asystenta.
„wszystkie wiadomości”.NumerCałkowita liczba wiadomości (użytkownik + AI) wysłanych we wszystkich rozmowach.
„całkowita liczba potencjalnych klientów”.NumerCał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”.NumerProcent (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”.NumerLiczba aktywnych rozmów aktualnie przejętych przez agenta ludzkiego.
„Teraz online”.NumerLiczba użytkowników aktywnie rozmawiających z AI w ciągu ostatnich 2 minut.
„codzienna seria”.SzykTablica obiektów codziennych zawierających liczniki „rozmów”, „wiadomości”, „potencjalnych klientów” i „rezerwacji” według daty.
Statystyki agentaSzykWskaźniki wydajności agentów ludzkich, w tym „messagesSent” i „csat” (wynik zadowolenia klienta).
Developer API

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.

json
{

  "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.

json
{

  "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: {}.

Developer API

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

json
{

  "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": []
  }
}
ParametrTypWymaganyOpis
„Kolor podstawowy”.SmyczkowyNIEKod koloru szesnastkowego (np. „#000000”).
„pozycja”.WyliczenieNIE„prawy dolny róg”, „lewy dolny dół”, „prawy górny róg”, „lewy górny róg”.
„język”.SmyczkowyNIEKod języka widgetu (np. "en", "fr").
„Wiadomość powitalna”.SmyczkowyNIEPoczątkowa wiadomość powitalna.
tytułSmyczkowyNIETytuł w nagłówku widżetu.
tematWyliczenieNIE„jasny” lub „ciemny”.
Rodzina czcionekWyliczenieNIEdomyślny' (Inter) lub ``odziedziczyć''.
„Styl bańki”.WyliczenieNIE"koło", "bar", "szuflada", "okrągło-markowe", "barek-markowy', "szuflada-markowa'.
„Tekst bąbelkowy”.SmyczkowyNIETekst wyświetlany obok dymku (w przypadku stylów paska/szuflady).
nagłówekPodtytułSmyczkowyNIEPodtytuł w nagłówku widżetu.
miejsce wejścioweSmyczkowyNIETekst zastępczy dla danych wejściowych wiadomości.
Url Polityki PrywatnościSmyczkowyNIEAdres URL Twojej polityki prywatności.
avatarUrlSmyczkowyNIEAdres URL niestandardowego obrazu awatara.
niestandardowyLogoUrlSmyczkowyNIEAdres URL niestandardowego obrazu logo nagłówka.
„Włączony głos”.Wartość logicznaNIEWłącz połączenia głosowe.
Nazwa głosuSmyczkowyNIETożsamość głosowa dla odpowiedzi audio. Zobacz dostępne głosy poniżej.
opóźnienie wiadomości powitalnejNumerNIEOpóźnienie w sekundach przed powitaniem.
fileUploadEnabledWartość logicznaNIEZezwalaj użytkownikom na przesyłanie załączników.
dyktowanie włączoneWartość logicznaNIEWłącz dyktowanie głosowe (zamienianie mowy na tekst).
„drugi pilotWłączony”.Wartość logicznaNIEWłącz żetony sugestii drugiego pilota.
„powitanieSugestie”.SzykNIETablica ciągów znaków dla początkowych żetonów szybkiej odpowiedzi.
Widoczność stronyObiektNIEOkreśla, na jakich stronach pojawi się widżet („tryb”, „ścieżki”).
rateLimitEnabledWartość logicznaNIEWłącz ograniczenie szybkości czatu. Domyślnie prawda.
rateLimitMaxMessagesNumerNIEMaksymalna liczba wiadomości w oknie. Domyślnie 30.
rateLimitTimeWindowNumerNIEOkno czasowe w minutach. Domyślnie 60.
gdprDataMaskingEnabledWartość logicznaNIEMaskuj 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.

Developer API

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:

json
<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.

json
{

  "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).*

ParametrTypWymaganyOpis
AsystentIdSmyczkowyTakUUID asystenta.
Identyfikator sesjiSmyczkowyTakGenerujesz 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śćSmyczkowyTakTreść tekstowa wiadomości (max 5000 znaków).
Identyfikator rozmowySmyczkowyNIEUUID konwersacji (zwrócony w pierwszym żądaniu).
„identyfikator”.SmyczkowyNIEOpcjonalny 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.

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": "..." }

Developer API

7. Zaawansowane ustawienia Asystenta

PATCH /api/asystenci/:id

Zaktualizuj konfigurację rdzenia

Zmodyfikuj podstawowe ustawienia, osobowość i granice skrobania asystenta.

json
{

  "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.

Developer API

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ść": "..." }

Developer API

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.

Developer API

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" }

Developer API

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”):

json
{

  "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"
}
Gotowy do rozpoczęcia?

Uruchom asystenta
za 10 minut.

Zarejestruj się, trenuj na swojej stronie, dostosuj alerty i umieść je na swojej stronie internetowej.