LanaChat

API: Tracking-Links, Domains, Pixel und Statistiken

9 Min. LesezeitAktualisiert Markdown

Ein Tracking-Link leitet einen Besucher zu einer Creatorin auf Telegram weiter und zählt, was danach passiert: Klicks, Konversationen, erste Nachrichten, Käuferinnen und Umsatz. Links können auf Ihrer eigenen Domain liegen, Werbe-Pixel (Meta, TikTok, Snap) auslösen und Server-Events senden. Diese Endpunkte entsprechen der Tracking-Seite.

Endpunkte #

MethodPathDescriptionPermissionStatus
GET/linksList links (creator_id=, archived=false) with their counterscan_tracking or can_sales_readPlanned
POST/linksCreate a linkcan_trackingPlanned
GET/links/{id}One linkcan_tracking or can_sales_readPlanned
PUT/links/{id}Replace a link (name, slug, domain, destination, UTM, pixels)can_trackingPlanned
DELETE/links/{id}Archive a link (permanent=1 deletes it)can_trackingPlanned
GET/domainsYour domains (status=active,inactive, q=)can_trackingPlanned
POST/domainsAdd a domain (status pending)can_trackingPlanned
POST/domains/{host}/verifyCheck its DNS records nowcan_trackingPlanned
PATCH/domains/{host}Make a verified domain the default, or change its labelcan_trackingPlanned
DELETE/domains/{host}Remove a domain no active link usescan_trackingPlanned
GET/pixelsThe Meta, TikTok and Snap connections and the consent modecan_trackingPlanned
PUT/pixels/{provider}Connect or replace a pixel (meta, tiktok, snap)ownerPlanned
DELETE/pixels/{provider}Disconnect a pixelownerPlanned
POST/pixels/{provider}/testSend a test event and return the platform's answercan_trackingPlanned
PUT/pixels/consentConsent mode: page or implicit_by_countryownerPlanned
GET/eventsBuilt-in and custom events, with 7-day delivery countscan_trackingPlanned
POST/eventsCreate a custom eventownerPlanned
PATCH/events/{id}Turn an event on or off per networkownerPlanned
DELETE/events/{id}Delete a custom eventownerPlanned
GET/statsDaily totals, per link and per source (from=, to=, creator_id=)can_sales_readPlanned
GET/stats/export.csvThe same numbers as 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
idstringBeginnt mit lnk_
namestringDer Name, den Ihr Team sieht
slugstringDas Ende der öffentlichen URL
creator_idstringDie Creatorin, zu der der Link führt
source, campaignstringWoher der Traffic kommt und der Name Ihrer Kampagne
domainstringEine verifizierte Domain des Workspaces oder die LanaChat-Domain
public_urlstringhttps://<domain>/r/<slug>: die URL, die Sie in Bio oder Anzeige setzen
destinationstringpool oder account
account_idstring oder nullDas feste Konto, wenn destination account ist
utmobjectsource, medium, campaign
pixelsobjectWelche verbundenen Pixel bei diesem Link feuern
countersobjectclicks, conversations, first_messages, buyers, revenue_stars
archivedbooleanArchivierte Links werden in Statistiken ausgelassen
created_atstringISO 8601, UTC
  • destination ist pool (das Konto wird beim Klick aus dem Pool der Creatorin gewählt, siehe pools) oder account (immer dasselbe account_id).
  • slug: Kleinbuchstaben, Ziffern und Bindestriche, 1 bis 48 Zeichen, beginnt und endet mit Buchstabe oder Ziffer, eindeutig unter aktiven Links derselben Domain.
  • domain muss eine verifizierte Domain des Workspaces sein; ohne diese wird die LanaChat-Domain verwendet.
  • utm-Werte: bis zu 80 Buchstaben, Ziffern, Punkte, Bindestriche oder Unterstriche. Sie werden bei jedem Klick gespeichert und an Pixel-Events weitergeleitet.

The domain object #

{
  "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
hoststringEin Subdomainname in Kleinbuchstaben (mindestens 3 Labels), eindeutig im Workspace
builtinbooleantrue für die LanaChat-Domain, die nie entfernt werden kann
statusstringverified, pending oder error
errorstring oder nullEin einfacher Satz, wenn status error ist
sslstringnone, issuing oder active
is_defaultbooleanGenau eine verifizierte Domain ist die Standarddomain
labelstring oder nullEin Name für Ihr Team, bis zu 60 Zeichen
tokenstringDer Wert des TXT-Verifizierungs-Eintrags
checksnumberBisher durchgeführte DNS-Prüfungen
added_at, verified_at, last_check_atstring oder nullISO 8601, UTC

The pixel connection object #

{ "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
connectedbooleanDas Pixel ist verbunden
pixel_idstringMeta: 15 oder 16 Ziffern. TikTok: 20 Großbuchstaben oder Ziffern. Snap: eine UUID
token_last4stringDie letzten 4 Zeichen des Zugriffstokens, nie das Token selbst
token_statusstringvalid, expired oder invalid
token_errorstring oder nullEin einfacher Satz, z. B. "Access token expired on 3 Oct. Replace it to resume delivery."
test_event_codestring oder nullDer Testcode des Event-Managers der Plattform
connected_atstringISO 8601, UTC

The event object #

{
  "id": "evt_purchase",
  "name": "Purchase",
  "builtin": true,
  "trigger": { "type": "purchase" },
  "networks": { "meta": true, "tiktok": true, "snap": false }
}
FieldTypeDescription
idstringDie Event-ID
namestringEingebauter Name oder Ihr eigener Name: ein Buchstabe, dann bis zu 39 Buchstaben, Ziffern oder Unterstriche, eindeutig im Workspace
builtinbooleantrue für Lead, Contact, Purchase, Subscribe und InitiateCheckout
triggerobjecttype und ein value für Trigger, die einen benötigen
networksobjectAn oder aus für meta, tiktok und snap

The stats object #

{
  "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
daysarrayEine Zeile pro UTC-Tag des Zeitraums
linksarrayEine Zeile pro Link über den gesamten Zeitraum
sourcesarrayEine Zeile pro Quellgruppe: instagram, tiktok, snapchat, meta, x und other
clicksnumberWeiterleitungen
conversationsnumberTelegram-Konversationen, die über den Link gestartet wurden
first_messagesnumberFans, die mindestens einmal geschrieben haben
buyersnumberUnterschiedliche Fans mit verifizierten Stars-Käufen im Zeitraum
revenue_starsnumberVerifizierte Stars-Käufe dieser Fans im Zeitraum

GET /links · can_tracking or can_sales_read

ParameterTypeRequiredDescription
creator_idstringNeinNur Links dieser Creatorin
archivedbooleanNeinfalse (Standardansicht) blendet archivierte Links aus
limit, cursornumber, stringNeinPagination
curl "https://api.lanachat.ai/v1/links?creator_id=cr_lea&archived=false" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Die Antwort ist eine paginierte Liste von link objects, jeweils mit ihren counters.

POST /links · can_tracking

ParameterTypeRequiredDescription
namestringJaDer Name, den Ihr Team sieht
slugstringJaKleinbuchstaben, Ziffern und Bindestriche, 1 bis 48 Zeichen
creator_idstringJaDie Creatorin, zu der der Link führt
sourcestringNeininstagram, tiktok, snapchat, meta, x oder eine andere Quelle
campaignstringNeinIhr Kampagnenname
destinationstringNeinpool oder account
account_idstringWenn destination account istDas feste Telegram-Konto
domainstringNeinEine verifizierte Domain; ohne diese die LanaChat-Domain
utmobjectNeinsource, medium, campaign
pixelsobjectNeinmeta, tiktok, snap: true, um das Pixel auszulösen
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"
}
  • Ein bereits verwendeter Slug antwortet mit 409 und The slug /lea-bio is already used by "Insta bio · Mia".
  • Eine nicht verifizierte Domain antwortet mit 400 ("Pick a verified domain…").

GET /links/{id} · can_tracking or can_sales_read

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

Die Antwort ist das link object. Eine unbekannte ID antwortet mit 404.

PUT /links/{id} · can_tracking

Gleicher Body wie bei Create a link; PUT ersetzt den gesamten Link, senden Sie also alle Felder, die erhalten bleiben sollen.

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

Die Antwort ist der aktualisierte Link. Dieselben Fehler wie bei der Erstellung.

DELETE /links/{id} · can_tracking

ParameterTypeRequiredDescription
permanentnumberNein1 löscht den Link dauerhaft statt ihn zu archivieren
curl -X DELETE https://api.lanachat.ai/v1/links/lnk_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Ein archivierter Link wird in Statistiken ausgelassen.

Domains #

Um Ihre eigene Domain zu nutzen, fügen Sie sie hinzu, erstellen zwei DNS-Einträge und verifizieren sie dann:

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

Pending-Domains werden auch alle 10 Minuten für 72 Stunden geprüft, danach täglich. status wird zu verified und ssl wechselt von issuing zu active.

List domains #

GET /domains · can_tracking

ParameterTypeRequiredDescription
statusstringNeinactive (verifiziert) oder inactive (pending oder error)
qstringNeinTeil des Hosts oder Labels
curl "https://api.lanachat.ai/v1/domains?status=active" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Die Antwort listet domain objects, inklusive der LanaChat-Domain (builtin: true).

Add a domain #

POST /domains · can_tracking

ParameterTypeRequiredDescription
hoststringJaEine Subdomain, z. B. 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"}'

Die Antwort ist die neue Domain mit status: "pending" und ihrem token für den TXT-Eintrag. Der Host wird bereinigt (Kleinbuchstaben, kein https://, kein Pfad). Root-Domains, *.lanachat.app und bereits hinzugefügte Domains antworten mit 400 und einem Satz.

Verify a domain #

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

Wenn ein Eintrag falsch ist, ist status error und error sagt, welcher, z. B. "The CNAME record points to another service." Die LanaChat-Domain kann nicht verifiziert werden (DNS wird von LanaChat verwaltet).

Change a domain #

PATCH /domains/{host} · can_tracking

ParameterTypeRequiredDescription
is_defaultbooleanNeintrue macht sie zur Standarddomain; die vorherige Standarddomain verliert diesen Status
labelstring oder nullNeinEin Name für Ihr Team, bis zu 60 Zeichen
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}'

Nur eine verifizierte Domain kann Standard sein. Die LanaChat-Domain lehnt ein Label ab (403).

Remove a domain #

DELETE /domains/{host} · can_tracking

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

Das Entfernen der LanaChat-Domain, der Standarddomain ("Set another default domain first") oder einer Domain, die von aktiven Links genutzt wird ("Used by N active links across all creators"), antwortet mit 409.

Pixels #

Events werden serverseitig gesendet, dedupliziert mit dem Browser-Pixel über dieselbe event_id, mit der Telegram-ID der Fans gehasht (SHA-256), nie im Klartext. Ohne Zustimmung wird kein Event gesendet, niemals. Ein Pixel feuert nur für Links, die es aktiviert haben.

Read pixel connections #

GET /pixels · can_tracking

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

Die Antwort enthält je einen pixel connection für meta, tiktok und snap sowie den Zustimmungs-mode.

Connect a pixel #

PUT /pixels/{provider} · owner

ParameterTypeRequiredDescription
pixel_idstringJaMeta: 15 oder 16 Ziffern. TikTok: 20 Großbuchstaben oder Ziffern. Snap: eine UUID
access_tokenstringJaDer Conversions-API-Token der Plattform
test_event_codestringNeinDer Testcode der Plattform
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" }

Der Zugriffstoken wird verschlüsselt gespeichert und nie zurückgegeben: nur token_last4. Ein Pixel-ID im falschen Format oder ein leerer Token antwortet mit 400.

Disconnect a pixel #

DELETE /pixels/{provider} · owner

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

Send a test event #

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 und body sind die Antwort der Plattform, Sie sehen also genau, was Meta, TikTok oder Snap gesagt haben.

PUT /pixels/consent · owner

ParameterTypeRequiredDescription
modestringJapage: Ein Zustimmungsbildschirm für jede Fanin vor Telegram. implicit_by_country: Der Bildschirm nur in der EU, dem EWR, Großbritannien und der Schweiz
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"}'

Events #

Eingebaute Events: Lead (Konversation gestartet über Link), Contact (erste Fan-Nachricht), Purchase (verifizierter Verkauf), Subscribe, InitiateCheckout. Eigene Events haben einen Trigger: sale_over (Verkauf über einem Betrag in US-Dollar), tag_added (ein Tag), nth_message (die N-te Fan-Nachricht, 2 oder mehr) oder offer_viewed.

List events #

GET /events · can_tracking

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

Die Antwort listet event objects mit ihren akzeptierten und fehlgeschlagenen Zustellungen über 7 Tage, pro Netzwerk.

Create a custom event #

POST /events · owner

ParameterTypeRequiredDescription
namestringJaEin Buchstabe, dann bis zu 39 Buchstaben, Ziffern oder Unterstriche; eindeutig im Workspace
triggerobjectJatype: sale_over, tag_added, nth_message oder offer_viewed; value für die ersten drei
networksobjectNeinmeta, tiktok, snap: true, um es dorthin zu senden
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}}'

Die Antwort ist das neue Event (201). Ein bereits verwendeter Name antwortet mit 409.

Turn an event on or off #

PATCH /events/{id} · owner

ParameterTypeRequiredDescription
networksobjectJameta, tiktok, snap: true oder 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 a custom event #

DELETE /events/{id} · owner

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

Eingebaute Events können nicht gelöscht werden; schalten Sie sie stattdessen aus.

Stats #

Read stats #

GET /stats · can_sales_read

ParameterTypeRequiredDescription
fromstringJaErster UTC-Tag, YYYY-MM-DD, inklusive
tostringJaLetzter UTC-Tag, YYYY-MM-DD, inklusive
creator_idstringNeinNur diese Creatorin; ohne alle Creatorinnen
curl "https://api.lanachat.ai/v1/stats?from=2026-09-06&to=2026-10-05&creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"

Die Antwort ist das stats object. Tage sind UTC; archivierte Links werden ausgelassen.

Export stats as CSV #

GET /stats/export.csv · can_sales_read

Gleiche Parameter wie bei 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

Die neuesten Nachrichten zu Lana auf Telegram

Neue Releases und Beta-Einladungen, zuerst im Kanal.