LanaChat

API: трекінгові лінки, домени, пікселі та статистика

Читання 9 хвОновлено Markdown

Трекінговий лінк перенаправляє відвідувача до авторки в Telegram і рахує подальші дії: кліки, розмови, перші повідомлення, покупців і дохід. Лінки можуть працювати на вашому домені, запускати рекламні пікселі (Meta, TikTok, Snap) і надсилати серверні події. Ці endpoint-и відповідають сторінці Tracking.

Endpoints #

MethodPathDescriptionPermissionStatus
GET/linksСписок лінків (creator_id=, archived=false) з їхніми лічильникамиcan_tracking або can_sales_readPlanned
POST/linksСтворити лінкcan_trackingPlanned
GET/links/{id}Один лінкcan_tracking або can_sales_readPlanned
PUT/links/{id}Замінити лінк (name, slug, domain, destination, UTM, pixels)can_trackingPlanned
DELETE/links/{id}Архівувати лінк (permanent=1 видаляє його)can_trackingPlanned
GET/domainsВаші домени (status=active,inactive, q=)can_trackingPlanned
POST/domainsДодати домен (status pending)can_trackingPlanned
POST/domains/{host}/verifyПеревірити DNS-записи заразcan_trackingPlanned
PATCH/domains/{host}Зробити перевірений домен основним або змінити його labelcan_trackingPlanned
DELETE/domains/{host}Видалити домен, який не використовується активними лінкамиcan_trackingPlanned
GET/pixelsПідключення Meta, TikTok і Snap та режим згодиcan_trackingPlanned
PUT/pixels/{provider}Підключити або замінити піксель (meta, tiktok, snap)ownerPlanned
DELETE/pixels/{provider}Відключити піксельownerPlanned
POST/pixels/{provider}/testНадіслати тестову подію й отримати відповідь платформиcan_trackingPlanned
PUT/pixels/consentРежим згоди: page або implicit_by_countryownerPlanned
GET/eventsВбудовані та кастомні події з підрахунком за 7 днівcan_trackingPlanned
POST/eventsСтворити кастомну подіюownerPlanned
PATCH/events/{id}Увімкнути або вимкнути подію для мережіownerPlanned
DELETE/events/{id}Видалити кастомну подіюownerPlanned
GET/statsЩоденні підсумки, по лінках і джерелах (from=, to=, creator_id=)can_sales_readPlanned
GET/stats/export.csvТі ж дані у форматі CSVcan_sales_readPlanned

Об'єкт лінка #

{
  "id": "lnk_3",
  "name": "TikTok · Lea night",
  "slug": "lea-tiktok-night",
  "creator_id": "cr_lea",
  "source": "tiktok",
  "campaign": "Autumn",
  "domain": "go.mia-links.com",
  "public_url": "https://go.mia-links.com/r/lea-tiktok-night",
  "destination": "pool",
  "account_id": null,
  "utm": { "source": "tiktok", "medium": "social", "campaign": "autumn" },
  "pixels": { "meta": false, "tiktok": true, "snap": false },
  "counters": { "clicks": 640, "conversations": 97, "first_messages": 76, "buyers": 14, "revenue_stars": 6200 },
  "archived": false,
  "created_at": "2026-09-12T08:00:00Z"
}
FieldTypeDescription
idstringПочинається з lnk_
namestringНазва, яку бачить ваша команда
slugstringКінець публічного URL
creator_idstringАвторка, на яку веде лінк
source, campaignstringЗвідки трафік і назва вашої кампанії
domainstringПеревірений домен workspace або домен LanaChat
public_urlstringhttps://<domain>/r/<slug>: URL для біо чи реклами
destinationstringpool або account
account_idstring або nullФіксований акаунт, якщо destination, account
utmobjectsource, medium, campaign
pixelsobjectЯкі підключені пікселі спрацьовують на цьому лінку
countersobjectclicks, conversations, first_messages, buyers, revenue_stars
archivedbooleanАрхівовані лінки не потрапляють у статистику
created_atstringISO 8601, UTC
  • destination, це pool (акаунт обирається під час кліку з пулу авторки, див. pools) або account (завжди той самий account_id).
  • slug: маленькі літери, цифри та дефіси, 1-48 символів, починається й закінчується літерою або цифрою, унікальний серед активних лінків цього домену.
  • domain має бути перевіреним доменом workspace; без нього використовується домен LanaChat.
  • Значення utm: до 80 літер, цифр, крапок, дефісів або підкреслень. Вони додаються до кожного кліку й передаються у події пікселів.

Об'єкт домену #

{
  "host": "go.mia-links.com",
  "builtin": false,
  "status": "pending",
  "error": null,
  "ssl": "none",
  "is_default": false,
  "label": "Lea TikTok",
  "token": "8be03d5f19a2",
  "checks": 0,
  "added_at": "2026-10-05T10:00:00Z",
  "verified_at": null,
  "last_check_at": null
}
FieldTypeDescription
hoststringСубдомен у нижньому регістрі (мінімум 3 частини), унікальний у workspace
builtinbooleantrue для домену LanaChat, який не можна видалити
statusstringverified, pending або error
errorstring або nullТекстове пояснення, якщо status, error
sslstringnone, issuing або active
is_defaultbooleanЛише один перевірений домен є основним
labelstring або nullНазва для вашої команди, до 60 символів
tokenstringЗначення TXT-запису для перевірки
checksnumberКількість перевірок DNS
added_at, verified_at, last_check_atstring або nullISO 8601, UTC

Об'єкт підключення пікселя #

{ "connected": true, "pixel_id": "123456789012345", "token_last4": "x9Qa", "token_status": "valid", "token_error": null, "test_event_code": "TEST4821", "connected_at": "2026-10-06T14:30:00Z" }
FieldTypeDescription
connectedbooleanПіксель підключено
pixel_idstringMeta: 15 або 16 цифр. TikTok: 20 великих літер або цифр. Snap: UUID
token_last4stringОстанні 4 символи access token, сам token не повертається
token_statusstringvalid, expired або invalid
token_errorstring або nullТекстове пояснення, наприклад "Access token expired on 3 Oct. Replace it to resume delivery."
test_event_codestring або nullТестовий код у менеджері подій платформи
connected_atstringISO 8601, UTC

Об'єкт події #

{
  "id": "evt_purchase",
  "name": "Purchase",
  "builtin": true,
  "trigger": { "type": "purchase" },
  "networks": { "meta": true, "tiktok": true, "snap": false }
}
FieldTypeDescription
idstringID події
namestringВбудована або ваша назва: літера, далі до 39 літер, цифр чи підкреслень, унікальна у workspace
builtinbooleantrue для Lead, Contact, Purchase, Subscribe і InitiateCheckout
triggerobjecttype і value для тригерів, які це потребують
networksobjectУвімкнено чи вимкнено для meta, tiktok, snap

Об'єкт статистики #

{
  "days":    [ { "date": "2026-10-05", "clicks": 54, "conversations": 9, "first_messages": 7, "buyers": 2, "revenue_stars": 950 } ],
  "links":   [ { "link_id": "lnk_3", "clicks": 640, "conversations": 97, "first_messages": 76, "buyers": 14, "revenue_stars": 6200 } ],
  "sources": [ { "source": "instagram", "clicks": 1210, "conversations": 160, "first_messages": 131, "buyers": 22, "revenue_stars": 9100 } ]
}
FieldTypeDescription
daysarrayОдин рядок на кожен день періоду (UTC)
linksarrayОдин рядок на кожен лінк за весь період
sourcesarrayОдин рядок на кожну групу джерел: instagram, tiktok, snapchat, meta, x і other
clicksnumberКількість редиректів
conversationsnumberРозмови в Telegram, початі через лінк
first_messagesnumberФани, які написали хоча б раз
buyersnumberУнікальні фани з підтвердженою покупкою Stars за період
revenue_starsnumberСума підтверджених покупок Stars цими фанами за період

Лінки #

Список лінків #

GET /links · can_tracking або can_sales_read

ParameterTypeRequiredDescription
creator_idstringNoЛише лінки цієї авторки
archivedbooleanNofalse (за замовчуванням) приховує архівовані лінки
limit, cursornumber, stringNoПагінація
curl "https://api.lanachat.ai/v1/links?creator_id=cr_lea&archived=false" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь, це сторінковий список об'єктів лінків, кожен із його counters.

Створити лінк #

POST /links · can_tracking

ParameterTypeRequiredDescription
namestringYesНазва, яку бачить ваша команда
slugstringYesМаленькі літери, цифри та дефіси, 1-48 символів
creator_idstringYesАвторка, на яку веде лінк
sourcestringNoinstagram, tiktok, snapchat, meta, x або інше джерело
campaignstringNoНазва вашої кампанії
destinationstringNopool або account
account_idstringКоли destination, accountФіксований Telegram-акаунт
domainstringNoПеревірений домен; без нього, домен LanaChat
utmobjectNosource, medium, campaign
pixelsobjectNometa, tiktok, snap: true, спрацьовує цей піксель
curl -X POST https://api.lanachat.ai/v1/links \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "Insta bio · Lea", "slug": "lea-bio", "creator_id": "cr_lea", "source": "instagram", "destination": "pool", "domain": "go.mia-links.com"}'
{
  "id": "lnk_9",
  "name": "Insta bio · Lea",
  "slug": "lea-bio",
  "creator_id": "cr_lea",
  "source": "instagram",
  "campaign": null,
  "domain": "go.mia-links.com",
  "public_url": "https://go.mia-links.com/r/lea-bio",
  "destination": "pool",
  "account_id": null,
  "utm": { "source": null, "medium": null, "campaign": null },
  "pixels": { "meta": false, "tiktok": false, "snap": false },
  "counters": { "clicks": 0, "conversations": 0, "first_messages": 0, "buyers": 0, "revenue_stars": 0 },
  "archived": false,
  "created_at": "2026-10-06T14:40:00Z"
}
  • Якщо slug вже використовується, повертається 409 з The slug /lea-bio is already used by "Insta bio · Mia".
  • Якщо домен не перевірено, повертається 400 ("Pick a verified domain…").

Отримати лінк #

GET /links/{id} · can_tracking або can_sales_read

curl https://api.lanachat.ai/v1/links/lnk_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь, об'єкт лінка. Невідомий id повертає 404.

Замінити лінк #

PUT /links/{id} · can_tracking

Тіло таке саме, як у Створити лінк; PUT замінює весь лінк, тому передавайте всі поля, які хочете зберегти.

curl -X PUT https://api.lanachat.ai/v1/links/lnk_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "TikTok · Lea night", "slug": "lea-tiktok-night", "creator_id": "cr_lea", "source": "tiktok", "campaign": "Autumn", "destination": "pool", "domain": "go.mia-links.com", "utm": {"source": "tiktok", "medium": "social", "campaign": "autumn"}, "pixels": {"meta": false, "tiktok": true, "snap": false}}'

Відповідь, оновлений лінк. Помилки такі ж, як при створенні.

Архівувати або видалити лінк #

DELETE /links/{id} · can_tracking

ParameterTypeRequiredDescription
permanentnumberNo1 видаляє лінк назавжди замість архівації
curl -X DELETE https://api.lanachat.ai/v1/links/lnk_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Архівований лінк не враховується у статистиці.

Домени #

Щоб використовувати власний домен, додайте його, створіть два DNS-записи, потім підтвердьте:

  • CNAME go.mia-links.com → links.lanachat.app
  • TXT _lanachat.go.mia-links.com = lanachat-verify=8be03d5f19a2

Домени зі статусом pending також перевіряються кожні 10 хвилин протягом 72 годин, потім щодня. status стає verified, а ssl, спочатку issuing, потім active.

Список доменів #

GET /domains · can_tracking

ParameterTypeRequiredDescription
statusstringNoactive (перевірені) або inactive (pending чи error)
qstringNoЧастина host або label
curl "https://api.lanachat.ai/v1/domains?status=active" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь, список об'єктів доменів, включно з доменом LanaChat (builtin: true).

Додати домен #

POST /domains · can_tracking

ParameterTypeRequiredDescription
hoststringYesСубдомен, наприклад go.mia-links.com
curl -X POST https://api.lanachat.ai/v1/domains \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"host": "go.mia-links.com"}'

Відповідь, новий домен зі status: "pending" і його token для TXT-запису. Host очищається (нижній регістр, без https://, без шляху). Кореневі домени, *.lanachat.app і вже доданий домен повертають 400 з поясненням.

Перевірити домен #

POST /domains/{host}/verify · can_tracking

curl -X POST https://api.lanachat.ai/v1/domains/go.mia-links.com/verify \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{ "host": "go.mia-links.com", "builtin": false, "status": "verified", "error": null, "ssl": "issuing", "is_default": false, "label": null, "token": "8be03d5f19a2", "checks": 3, "added_at": "2026-10-05T10:00:00Z", "verified_at": "2026-10-06T14:45:00Z", "last_check_at": "2026-10-06T14:45:00Z" }

Якщо запис неправильний, status, error, а error пояснює причину, наприклад "The CNAME record points to another service." Домен LanaChat не можна перевірити (його DNS керується LanaChat).

Змінити домен #

PATCH /domains/{host} · can_tracking

ParameterTypeRequiredDescription
is_defaultbooleanNotrue робить цей домен основним; попередній перестає бути основним
labelstring або nullNoНазва для вашої команди, до 60 символів
curl -X PATCH https://api.lanachat.ai/v1/domains/go.mia-links.com \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"is_default": true}'

Тільки перевірений домен може бути основним. Домен LanaChat не приймає label (403).

Видалити домен #

DELETE /domains/{host} · can_tracking

curl -X DELETE https://api.lanachat.ai/v1/domains/go.mia-links.com \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Видалення домену LanaChat, основного домену ("Set another default domain first") або домену, який використовується активними лінками ("Used by N active links across all creators") повертає 409.

Пікселі #

Події надсилаються сервер-сервер, дублюються з браузерним пікселем через той самий event_id, id Telegram фана хешується (SHA-256), ніколи не передається у відкритому вигляді. Без згоди подія не надсилається взагалі. Піксель спрацьовує лише для лінків, де він увімкнений.

Переглянути підключення пікселів #

GET /pixels · can_tracking

curl https://api.lanachat.ai/v1/pixels \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь містить по одному об'єкту підключення пікселя для meta, tiktok і snap, а також режим згоди mode.

Підключити піксель #

PUT /pixels/{provider} · owner

ParameterTypeRequiredDescription
pixel_idstringYesMeta: 15 або 16 цифр. TikTok: 20 великих літер або цифр. Snap: UUID
access_tokenstringYesConversions API token платформи
test_event_codestringNoТестовий код платформи
curl -X PUT https://api.lanachat.ai/v1/pixels/meta \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pixel_id": "123456789012345", "access_token": "EAAG…", "test_event_code": "TEST4821"}'
{ "connected": true, "pixel_id": "123456789012345", "token_last4": "x9Qa", "token_status": "valid", "token_error": null, "test_event_code": "TEST4821", "connected_at": "2026-10-06T14:30:00Z" }

Access token зберігається зашифрованим і ніколи не повертається: лише token_last4. Неправильний формат pixel id або порожній token повертає 400.

Відключити піксель #

DELETE /pixels/{provider} · owner

curl -X DELETE https://api.lanachat.ai/v1/pixels/meta \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Надіслати тестову подію #

POST /pixels/{provider}/test · can_tracking

curl -X POST https://api.lanachat.ai/v1/pixels/meta/test \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
{ "ok": true, "status": 200, "body": "{\"events_received\":1}" }

status і body, це відповідь самої платформи, тобто ви бачите саме те, що повернули Meta, TikTok або Snap.

Встановити режим згоди #

PUT /pixels/consent · owner

ParameterTypeRequiredDescription
modestringYespage: екран згоди для кожного фана перед відкриттям Telegram. implicit_by_country: екран лише для ЄС, ЄЕЗ, Великої Британії та Швейцарії
curl -X PUT https://api.lanachat.ai/v1/pixels/consent \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "implicit_by_country"}'

Події #

Вбудовані події: Lead (розмова почата з лінка), Contact (перше повідомлення фана), Purchase (підтверджена покупка), Subscribe, InitiateCheckout. Кастомні події мають тригер: sale_over (продаж понад певну суму в доларах США), tag_added (тег), nth_message (N-те повідомлення фана, 2 або більше) чи offer_viewed.

Список подій #

GET /events · can_tracking

curl https://api.lanachat.ai/v1/events \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь, список об'єктів подій з кількістю доставок і помилок за 7 днів по мережах.

Створити кастомну подію #

POST /events · owner

ParameterTypeRequiredDescription
namestringYesЛітера, далі до 39 літер, цифр чи підкреслень; унікальна у workspace
triggerobjectYestype: sale_over, tag_added, nth_message або offer_viewed; value для перших трьох
networksobjectNometa, tiktok, snap: true, надсилати туди
curl -X POST https://api.lanachat.ai/v1/events \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "BigSpender", "trigger": {"type": "sale_over", "value": 50}, "networks": {"meta": true, "tiktok": true, "snap": false}}'

Відповідь, нова подія (201). Якщо ім'я вже використовується, повертається 409.

Увімкнути або вимкнути подію #

PATCH /events/{id} · owner

ParameterTypeRequiredDescription
networksobjectYesmeta, tiktok, snap: true або false
curl -X PATCH https://api.lanachat.ai/v1/events/evt_purchase \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"networks": {"meta": true, "tiktok": true, "snap": true}}'

Видалити кастомну подію #

DELETE /events/{id} · owner

curl -X DELETE https://api.lanachat.ai/v1/events/evt_bigspender \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Вбудовані події не можна видалити; просто вимкніть їх.

Статистика #

Переглянути статистику #

GET /stats · can_sales_read

ParameterTypeRequiredDescription
fromstringYesПерша дата (UTC), YYYY-MM-DD, включно
tostringYesОстання дата (UTC), YYYY-MM-DD, включно
creator_idstringNoЛише для цієї авторки; без нього, для всіх авторок
curl "https://api.lanachat.ai/v1/stats?from=2026-09-06&to=2026-10-05&creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Відповідь, об'єкт статистики. Дати у UTC; архівовані лінки не враховуються.

Експорт статистики у CSV #

GET /stats/export.csv · can_sales_read

Ті ж параметри, що й для GET /stats.

curl "https://api.lanachat.ai/v1/stats/export.csv?from=2026-09-06&to=2026-10-05" \
  -H "Authorization: Bearer $LANACHAT_TOKEN" -o stats.csv
date,link,slug,domain,creator,source,clicks,conversations,first_messages,buyers,revenue_stars
2026-10-05,TikTok · Lea night,lea-tiktok-night,go.mia-links.com,Lea,tiktok,54,9,7,2,950

Останні новини про Lana в Telegram

Нові релізи та запрошення в бету, першими в каналі.