API: AI Brains, szkice i Playground
AI Brain przechowuje sposób, w jaki AI sprzedaje dla twórczyni: jej fazy sprzedaży, zasady i ustawienia. Zmieniasz szkic, testujesz go w Playground, a potem publikujesz; aktywny brain zmienia się tylko po publikacji. Brain jest powiązany z jedną twórczynią i może być używany przez jej konta.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /brains | Lista brains (creator_id=) | can_engine | Planned |
| POST | /brains | Utwórz brain dla twórczyni, pusty lub skopiowany z innego (copy_from) | can_engine | Planned |
| GET | /brains/{id} | Aktywna wersja braina | can_engine | Planned |
| PATCH | /brains/{id} | Zmień nazwę lub powiąż z inną twórczynią | can_engine | Planned |
| DELETE | /brains/{id} | Usuń brain, którego nie używa żadne konto | can_engine | Planned |
| GET | /brains/{id}/draft | Aktualny szkic i różnice względem aktywnej wersji | can_engine | Planned |
| PATCH | /brains/{id}/draft | Zmień szkic (fazy, zasady, ustawienia) | can_engine | Planned |
| DELETE | /brains/{id}/draft | Usuń szkic | can_engine | Planned |
| POST | /brains/{id}/publish | Opublikuj szkic; staje się aktywny na wszystkich powiązanych kontach | can_publish | Planned |
| GET | /brains/{id}/versions | Opublikowane wersje, najnowsze pierwsze | can_engine | Planned |
| POST | /brains/{id}/versions/{version}/restore | Skopiuj starą wersję do szkicu | can_engine | Planned |
| POST | /playground/{brain_id}/message | Wyślij testową wiadomość do szkicu i otrzymaj odpowiedź AI | can_engine | Planned |
| DELETE | /playground/{brain_id}/session | Zacznij testową rozmowę od nowa | can_engine | Planned |
Obiekt brain #
{
"id": "br_lea_main",
"name": "Lea · main",
"creator_id": "cr_lea",
"version": 12,
"published_at": "2026-10-04T21:10:00Z",
"has_draft": true,
"accounts": ["acc_1001", "acc_1004"],
"phases": [
{ "key": "warm_up", "name": "Warm up", "enabled": true },
{ "key": "first_offer", "name": "First offer", "enabled": true }
]
}
| Pole | Typ | Opis |
|---|---|---|
id | string | Zaczyna się od br_ |
name | string | Nazwa w Console |
creator_id | string | Powiązana twórczyni |
version | number | Aktywna wersja; zwiększa się o jeden przy każdej publikacji |
published_at | string lub null | Data publikacji aktywnej wersji, ISO 8601 UTC |
has_draft | boolean | true gdy szkic różni się od aktywnej wersji |
accounts | tablica stringów | Konta Telegram odpowiadające tym brainem |
phases | tablica | Fazy sprzedaży: key, name i czy każda jest enabled |
Brains #
Lista brains #
GET /brains · can_engine
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
creator_id | string | Nie | Tylko brains tej twórczyni |
limit, cursor | number, string | Nie | Paginacja |
curl "https://api.lanachat.ai/v1/brains?creator_id=cr_lea" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
{
"data": [
{ "id": "br_lea_main", "name": "Lea · main", "creator_id": "cr_lea", "version": 12, "published_at": "2026-10-04T21:10:00Z", "has_draft": true, "accounts": ["acc_1001", "acc_1004"], "phases": [ { "key": "warm_up", "name": "Warm up", "enabled": true }, { "key": "first_offer", "name": "First offer", "enabled": true } ] }
],
"next_cursor": null
}
Utwórz brain #
POST /brains · can_engine
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
creator_id | string | Tak | Dla której twórczyni |
name | string | Nie | Nazwa w Console |
copy_from | string | Nie | Id braina do skopiowania; bez tego brain jest pusty |
curl -X POST https://api.lanachat.ai/v1/brains \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"creator_id": "cr_lea", "name": "Lea · TikTok test", "copy_from": "br_lea_main"}'
Odpowiedź to nowy brain (201). copy_from brain, który nie istnieje w tym workspace, zwraca 404.
Pobierz brain #
GET /brains/{id} · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź to aktywna wersja, jak w obiekcie brain. Szkic odczytuje się przez GET /brains/{id}/draft.
Zmień nazwę lub powiąż brain #
PATCH /brains/{id} · can_engine
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
name | string | Nie | Nowa nazwa |
creator_id | string | Nie | Powiąż z inną twórczynią |
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Lea · main FR"}'
Odpowiedź to zaktualizowany brain.
Usuń brain #
DELETE /brains/{id} · can_engine
curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_old \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Brain używany przez konto zostanie odrzucony (409): najpierw powiąż te konta z innym brainem.
Szkice i publikowanie #
Odczytaj szkic #
GET /brains/{id}/draft · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main/draft \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź to aktualny szkic (fazy, zasady i ustawienia) oraz różnice względem aktywnej wersji.
Zmień szkic #
PATCH /brains/{id}/draft · can_engine
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
phases | tablica | Nie | Fazy sprzedaży do zmiany |
rules | tablica | Nie | Zasady do zmiany |
settings | obiekt | Nie | Ustawienia do zmiany, np. first_offer_after_messages lub max_discount_percent |
curl -X PATCH https://api.lanachat.ai/v1/brains/br_lea_main/draft \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"settings": {"first_offer_after_messages": 6, "max_discount_percent": 20}}'
Zmieniają się tylko przesłane pola. Aktywny brain nie zmienia się aż do publikacji.
Usuń szkic #
DELETE /brains/{id}/draft · can_engine
curl -X DELETE https://api.lanachat.ai/v1/brains/br_lea_main/draft \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Szkic zostaje usunięty; aktywna wersja pozostaje bez zmian, a has_draft zmienia się na false.
Opublikuj szkic #
POST /brains/{id}/publish · can_publish
curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/publish \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
{ "id": "br_lea_main", "version": 13, "published_at": "2026-10-06T14:20:03Z", "has_draft": false }
Szkic staje się aktywny na wszystkich powiązanych kontach. Próba publikacji bez szkicu zwraca 409. Zaawansowane profile AI wymagają własnych uprawnień właściciela, jak w Console. Webhook brain.published powiadamia Twój serwer.
Wersje #
Lista wersji #
GET /brains/{id}/versions · can_engine
curl https://api.lanachat.ai/v1/brains/br_lea_main/versions \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Odpowiedź zawiera listę opublikowanych wersji, najnowsze pierwsze, paginowaną.
Przywróć wersję #
POST /brains/{id}/versions/{version}/restore · can_engine
curl -X POST https://api.lanachat.ai/v1/brains/br_lea_main/versions/11/restore \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
Stara wersja zostaje skopiowana do szkicu. Nic się nie zmienia dla fanów aż do publikacji. Nieznana wersja zwraca 404.
Playground #
Playground rozmawia z szkicem, nigdy z fanem. Nic nie jest wysyłane na Telegram i nic nie jest sprzedawane.
Wyślij testową wiadomość #
POST /playground/{brain_id}/message · can_engine
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
text | string | Tak | Co pisze testowy fan |
fan | obiekt | Nie | Testowy fan: language (np. en) i is_new |
curl -X POST https://api.lanachat.ai/v1/playground/br_lea_main/message \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"text": "hey, are you real?", "fan": {"language": "en", "is_new": true}}'
{
"reply": { "text": "Haha very real, just slow at typing 🙈 where are you from?", "media": [] },
"phase": "warm_up",
"explain": "Phrase bank answer for \"Are you a bot?\", then a question to keep the fan talking."
}
replyto, co AI by wysłało: tekst i media.phaseto faza sprzedaży, w której jest AI.explainwyjaśnia po angielsku, dlaczego tak odpowiedziało.
Każde wywołanie kontynuuje tę samą testową rozmowę.
Zacznij testową rozmowę od nowa #
DELETE /playground/{brain_id}/session · can_engine
curl -X DELETE https://api.lanachat.ai/v1/playground/br_lea_main/session \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Następna testowa wiadomość zaczyna nową rozmowę, jako nowy fan.