Integriši Chat33
sa svojim alatima.
Piksel za praćenje, webhook događaji, MMP postbackovi za instalacije i praćenje prihoda. Sve što ti treba da povežeš Chat33 sa svojim sajtom ili aplikacijom.
Početak
Za Chat33 integracije za programere treba ti MMP Token. Nalazi se na kontrolnoj tabli, u Podešavanja → Integracije.
1. Uzmi svoj token
Idi na Podešavanja → Integracije → MMP Token. Klikni "Generiši token" ako ga još nemaš.
2. Izaberi integraciju
Sajt / veb aplikacija
Koristi piksel za praćenje poseta stranicama, registracija i kupovina.
Mobilna aplikacija
Koristi MMP postbackove (AppsFlyer, Adjust, Branch, Tenjin, Singular) za praćenje instalacija.
Piksel za praćenje
Prati događaje na sajtu i poveži ih sa DM razgovorima
Instalacija
Dodaj ovaj script tag u <head> svog sajta ili pre </body>. Zameni YOUR_PIXEL_KEY ključem piksela iz Podešavanja, Integracije. Nikad ne koristi MMP token ovde: on je tajan.
<script src="https://chat33.io/pixel.js" data-token="YOUR_PIXEL_KEY"></script>Praćenje događaja
Piksel automatski prati posete stranicama. Za prilagođene događaje (kupovine, registracije i slično) koristi metod chat33.track():
// Track a purchase with value
chat33.track("purchase", {
value: 49.99,
currency: "USD",
product: "Pro Plan"
});
// Track a signup
chat33.track("signup");
// Track a lead
chat33.track("lead", { source: "landing_page" });
// Track any custom event
chat33.track("tutorial_complete", { step: 5 });Kako radi
Pametni linkovi
Chat33 dodaje ?cid=xxx na praćene linkove u DM-ovima
Automatska atribucija
Piksel čita ID kontakta iz URL-a i čuva ga između stranica
Automatsko označavanje
Događaji kao 'purchase' automatski dodaju oznaku kontaktu u tvom CRM-u
API referenca
| Metod | Parametri | Opis |
|---|---|---|
| chat33.track(event, metadata?) | event: string, metadata: object | Šalje prilagođeni događaj |
| chat33.identify(contactId) | contactId: string | Ručno postavlja ID kontakta |
| chat33.getContactId() | — | Vraća trenutni ID kontakta |
API za webhook događaje
Šalji prilagođene događaje sa svog servera na Chat33
Endpoint
POST https://chat33.io/api/webhooks/events?token=YOUR_TOKEN
Content-Type: application/json
{
"event": "purchase",
"contactId": "cm1abc123...",
"value": 49.99,
"currency": "USD",
"metadata": {
"product": "Pro Plan",
"source": "checkout"
}
}Telo zahteva
| Polje | Tip | Obavezno | Opis |
|---|---|---|---|
| event | string | Da | Naziv događaja (purchase, signup, lead i slično) |
| contactId | string | Ne | Chat33 ID kontakta za atribuciju |
| value | number | Ne | Novčana vrednost događaja |
| currency | string | Ne | Kod valute (USD, EUR i slično) |
| metadata | object | Ne | Bilo koji dodatni podaci |
Primeri
# cURL
curl -X POST "https://chat33.io/api/webhooks/events?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"event":"purchase","value":29.99,"currency":"USD"}'// Node.js / fetch
await fetch("https://chat33.io/api/webhooks/events?token=YOUR_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
event: "purchase",
contactId: "cm1abc123...",
value: 29.99,
currency: "USD",
}),
});Ograničenje: 100 događaja u minutu po tokenu. Događaji se čuvaju kao analitički događaji, a kontakti se automatski označavaju prema nazivu događaja (npr. "purchase" → oznaka "Purchased").
API za objavljivanje
Zakazuj i objavljuj sadržaj na Instagramu, Facebooku, TikToku, YouTube-u, X-u (Twitter), LinkedInu, Bluesky-ju i Threads-u
Autentifikacija
Generiši API ključ u Podešavanja → API ključevi. Šalji ga kao header x-api-key u svim zahtevima.
# All API requests require this header:
x-api-key: sk_live_your_api_key_herePodržane platforme
Fotografije, Reels, karuseli (preko IG Graph API-ja)
Tekst, fotografije i video, sa izvornim zakazivanjem
TikTok
Video i foto objave preko Content Posting API-ja
YouTube
Upload videa, sa izvornim zakazanim objavljivanjem
X (Twitter)
Tekst, fotografije, video i niti preko X API v2 (troši kredite)
Tekst, link kartice, do 9 slika ili video, objavljeno na ličnom profilu člana
Bluesky
Tekst, link kartice, do 4 slike ili video, preko AT Protocol-a
Threads
Tekst, slike, video, karuseli do 20, ankete i oznake tema
Pravljenje objave
curl -X POST "https://chat33.io/api/v1/posts" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"accountIds": ["channel_id_here"],
"text": "Check out our new product! #launch",
"mediaUrls": ["https://your-blob-url.com/image.jpg"],
"mediaType": "image"
}'Opcije platformi (platformConfig)
Podešavanja po platformi idu pod ključ sa nazivom platforme. Čitaju se samo ključevi za platforme iz accountIds, pa jedan zahtev može da nosi opcije za više njih odjednom. Svaka platforma prima text koji zamenjuje zajednički tekst, pa ista objava može da glasi drugačije na svakoj mreži.
Dve stvari koje treba znati pre prvog poziva: youtube.madeForKids se odbija ako nedostaje, umesto da dobije podrazumevanu vrednost, jer YouTube traži tu izjavu za svaki upload. A TikTok objava bez objekta consent završava u nacrtima naloga umesto da se objavi.
{
"instagram": {
"text": "...", // caption for this platform only
"firstComment": "#tags #here" // posted right after publish
},
"facebook": {
"text": "..."
},
"linkedin": {
"text": "...",
"visibility": "PUBLIC", // or "CONNECTIONS" (1st-degree only)
"articleUrl": "https://...", // link card, ignored when the post has media
"mediaTitle": "...",
"mediaDescription": "..."
},
"youtube": {
"madeForKids": false, // REQUIRED for any YouTube channel
"privacyStatus": "public", // or "unlisted" / "private"
"title": "...",
"description": "...",
"tags": ["one", "two"], // up to 30
"categoryId": "22", // default: People & Blogs
"notifySubscribers": true
},
"x": {
"text": "...",
"thread": true, // split text into a thread
"splitOn": "---",
"replyControl": "everyone" // or "following" / "mentionedUsers"
},
"tiktok": {
"text": "...",
"consent": {
"publishMode": "DIRECT_POST", // or "MEDIA_UPLOAD" (drafts)
"privacyLevel": "SELF_ONLY", // required for DIRECT_POST
"disableComment": false,
"disableDuet": false,
"disableStitch": false,
"aiGenerated": false
}
}
}Specifičnosti LinkedIna
- Objave idu na lični profil prijavljenog člana. Za Company Pages treba LinkedIn Community Management API, koji ima posebnu proveru i još nije podržan.
- Jedna objava nosi do 9 slika ili 1 video, nikad oba. Sve preko ograničenja se odbija, a ne skraćuje bez upozorenja.
- Opis može da ima najviše 3.000 znakova. Video do 200MB, slike do 10MB svaka.
articleUrlvaži samo za tekstualne objave. Mediji imaju prednost i link se tada ignoriše.- Pristup ističe posle 60 dana i LinkedIn ne izdaje refresh token, pa nalog mora ručno ponovo da se poveže. Kad pristup istekne, objavljivanje vraća jasnu grešku za ponovno povezivanje.
- LinkedIn dozvoljava 150 API zahteva po članu dnevno, a svaka slika troši još dva poziva, pa se ograničenje odnosi na zahteve, a ne na broj objava.
Zakazivanje objave
curl -X POST "https://chat33.io/api/v1/posts" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"accountIds": ["ig_channel_id", "fb_channel_id"],
"text": "Coming soon!",
"mediaUrls": ["https://your-blob-url.com/video.mp4"],
"mediaType": "video",
"scheduledAt": "2026-04-15T14:00:00Z",
"callbackUrl": "https://your-server.com/webhook"
}'Otpremanje medija
Multipart otpremanje ima čvrsto ograničenje od 4,5MB. Veća tela se odbijaju sa 413 FUNCTION_PAYLOAD_TOO_LARGE pre nego što stignu do API-ja. Za sve veće preuzmi fajl sa javnog URL-a, ili uzmi presigned URL i otpremi direktno u skladište.
# Small files (< 4.5MB): multipart upload
curl -X POST "https://chat33.io/api/v1/media/upload" \
-H "x-api-key: sk_live_your_key" \
-F "file=@photo.jpg"
# Large files, already on a public URL: URL ingestion (up to 4GB)
curl -X POST "https://chat33.io/api/v1/media/upload" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/large-video.mp4", "filename": "video.mp4"}'
# Large LOCAL file: presigned direct upload (up to 500MB per PUT)
# 1. ask for an upload URL
curl -X POST "https://chat33.io/api/v1/media/upload-url" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{"filename": "video.mp4", "contentType": "video/mp4", "size": 16352652}'
# -> {"uploadUrl": "https://...", "headers": {"content-type": "video/mp4"}, ...}
# 2. PUT the bytes straight to storage (never touches the API)
curl -X PUT "<uploadUrl>" \
-H "Content-Type: video/mp4" \
--data-binary @video.mp4
# -> {"url": "https://....public.blob.vercel-storage.com/...", ...}
# pass that url in mediaUrls when creating the postAPI referenca
| Metod | Endpoint | Opis |
|---|---|---|
POST | /api/v1/posts | Pravi objave i stavlja ih u red |
GET | /api/v1/posts | Lista objava (sa paginacijom i filterima) |
GET | /api/v1/posts/:id | Detalji objave |
PATCH | /api/v1/posts/:id | Izmena ili otkazivanje nacrta ili objave u redu |
DELETE | /api/v1/posts/:id | Brisanje nacrta ili otkazivanje objave |
POST | /api/v1/posts/:id/duplicate | Kopiranje objave |
POST | /api/v1/media/upload | Otpremanje medija (fajl manji od 4,5MB ili javni URL) |
POST | /api/v1/media/upload-url | Presigned URL za direktno otpremanje velikog lokalnog fajla |
Telo zahteva: pravljenje objave
| Polje | Tip | Obavezno | Opis |
|---|---|---|---|
| accountIds | string[] | Da | ID-jevi kanala na koje se objavljuje (najviše 10) |
| text | string | Ne | Opis objave |
| mediaUrls | string[] | Ne | URL-ovi medijskih fajlova (otpremljenih preko /media/upload) |
| mediaType | string | Ne | image, video, reel ili carousel |
| scheduledAt | string | Ne | Datum i vreme u formatu ISO 8601 za zakazivanje |
| callbackUrl | string | Ne | Webhook URL za obaveštenja o objavljivanju |
| platformConfig | object | Ne | Opcije po platformi (YouTube naslov, privatnost i slično) |
| coverImageUrl | string | Ne | Naslovna slika ili sličica za video |
Ograničenja: 50 objava u minutu po organizaciji. Dnevna ograničenja po kanalu: Instagram (25), Facebook (50), TikTok (20), YouTube (100), X (300).
Callback pozivi: Kad se objava objavi ili ne uspe, na tvoj callbackUrl stiže POST zahtev sa ID-jem objave, statusom i URL-om objave na mreži.
OpenAPI 3.1 specifikacija
Interaktivni pregled endpointa + mašinski čitljiv JSON za codegen, n8n, MCP.
AI dokumentacija · llms.txt
Markdown dokumentacija za Claude, ChatGPT, Cursor. Kopiraj i nalepi da AI pravi ispravne API pozive.
n8n čvor · community node
Zvanični n8n community čvor. Izlistaj naloge, pravi i zakazuj objave, otpremaj medije iz bilo kog n8n workflow-a. Instaliraj n8n-nodes-chat33 iz Settings → Community Nodes.
MCP server
Poveži Claude, Cursor ili bilo koji MCP klijent sa Chat33. Objavljuj, preuzimaj analitiku i pravi DM automatizacije običnim rečima.
Povezivanje naloga tvojih korisnika
Omogući svojim korisnicima da povežu Instagram, Facebook, TikTok, YouTube, X, LinkedIn, Bluesky ili Threads naloge preko Chat33, pa objavljuj za njih preko API-ja
Developer connect API izdaje jednokratni link koji u tvoje ime šalje korisnika na OAuth ekran za saglasnost same platforme, bez ikakvog dodira s njegovom lozinkom. Kad korisnik odobri, povezani nalog se ponaša kao svaki drugi u API-ju za objavljivanje iznad: objavljuješ na njega, čitaš analitiku gde je platforma daje i prekidaš vezu. Sve je vezano za krajnjeg korisnika ("profil") kome nalog pripada.
Kako radi
- Napravi profil za korisnika (
POST /v1/profiles) ili koristi postojeći, po svomexternalId. - Zatraži link za povezivanje za taj profil i platformu (
POST /v1/connect). Važi jednom, 15 minuta. - Pošalji korisnika na vraćeni
url. Korisnik odobrava na ekranu same platforme, gde je Chat33 naveden kao aplikacija koja traži pristup. To je očekivano i niko ne vidi lozinku. - Korisnik se vraća na tvoj
redirectUrlsastatus,profileIdiaccountIds(ilistatus=error&code=…ako je otkazano ili je nešto pošlo naopako; otkazana saglasnost ne troši link).
Pravljenje profila
curl -X POST "https://chat33.io/api/v1/profiles" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Fitness",
"externalId": "user_482"
}'Pravljenje linka za povezivanje
curl -X POST "https://chat33.io/api/v1/connect" \
-H "x-api-key: sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"profileId": "prof_abc123",
"platform": "instagram",
"redirectUrl": "https://yourapp.com/oauth/done",
"skipIntro": false
}'
# -> {"url": "https://chat33.io/connect/...", "expiresAt": "...", "platform": "instagram", "profileId": "prof_abc123"}
# send your user to that url
# skipIntro: true returns a url that goes straight to the platform's consent screenŠta tvoj korisnik vidi
Stranicu na Chat33 sa nazivom tvoje aplikacije, a zatim ekran za prijavu i saglasnost same platforme, gde je Chat33 naveden kao aplikacija koja traži pristup, a ne tvoja aplikacija. Tako radi OAuth u pozadini i to je očekivano. Korisnik može da opozove pristup na samoj platformi bilo kad.
Da preskočiš uvodnu stranicu i pošalješ korisnika direktno na ekran za saglasnost platforme, prosledi "skipIntro": true pri pravljenju linka. Link je tada neposredan redirect: isti token, isti rok od 15 minuta, isti povratak na tvoj redirectUrl. Ako je preskočiš, na svom ekranu reci korisniku da će stranica za saglasnost navoditi Chat33, i radije ga šalji klikom na dugme nego linkom u imejlu. Imejl klijenti i aplikacije za razgovor unapred učitavaju linkove, a unapred učitan skipIntro link otvara dijalog platforme u skeneru (token se ne troši).
$1 po slotu za povezivanje na 30 dana. Slot se kupuje iz tvojih unapred plaćenih kredita u trenutku kad se nalog poveže (ili unapred preko Kupi slotove) i obnavlja se na svakih 30 dana dok je nalog povezan. Nema srazmernog obračuna ni povraćaja, ali slot oslobođen prekidom veze ostaje tvoj do isteka i koristi ga sledeći nalog koji povežeš. Ako stanje ne može da pokrije obnovu, nalog radi još 7 dana, a iznos se prikazuje kao dugovanje. Posle toga se pauzira dok ne dopuniš stanje. Pauzirani nalozi se ne naplaćuju.
Pravila
- Jedan stvarni nalog postoji samo jednom u celom Chat33. Ne može da se poveže drugi put, ni od tebe ni od nekog drugog, ni preko API-ja ni preko Chat33 kontrolne table.
- Nalozi povezani preko API-ja nikad se ne računaju u ograničenje kanala paketa tvoje organizacije.
- Chat33 ne čuva i ne automatizuje dolazne poruke i komentare na ovim nalozima (v1 služi samo za objavljivanje).
- Facebook povezuje svaku stranicu kojoj korisnik odobri pristup. Svaka stranica je poseban nalog i poseban slot.
- Instagram se povezuje preko Instagram Login-a, za poslovne naloge ili naloge kreatora.
- Objave na X-u preko povezanih naloga takođe troše tvoje stanje kredita, kao i objave sa naloga na tvojoj kontrolnoj tabli.
Pauzirani nalozi
Nalog čiji slot ostane neplaćen 7 dana se pauzira: objavljivanje vraća 402 account_paused sa pogođenim accountIds. Nastavlja automatski kad dopuniš stanje. POST /v1/posts, POST /v1/posts/validate i POST /v1/posts/:id/duplicate ovo proveravaju unapred, pre nego što išta stave u red.
// 402
{
"error": "ACCOUNT_PAUSED",
"code": "account_paused",
"message": "These accounts are paused until outstanding connection charges are paid. Top up credits.",
"accountIds": ["chan_abc123"]
}API referenca
| Metod | Endpoint | Opis |
|---|---|---|
GET | /api/v1/profiles | Lista tvojih krajnjih korisnika |
POST | /api/v1/profiles | Pravi (ili nalazi, po externalId) krajnjeg korisnika |
GET | /api/v1/profiles/:id | Profil i njegovi nalozi |
PATCH | /api/v1/profiles/:id | Izmena imena ili externalId profila |
DELETE | /api/v1/profiles/:id | Prekida vezu sa nalozima i briše profil |
POST | /api/v1/connect | Pravi jednokratni link za povezivanje za profil |
GET | /api/v1/accounts?source=api | Lista svih naloga koje su tvoji korisnici povezali, kroz sve profile |
GET | /api/v1/accounts?profileId= | Lista povezanih naloga profila |
DELETE | /api/v1/accounts/:id | Prekid veze sa nalogom |
GET | /api/v1/posts?profileId= | Lista objava profila |
GET | /api/v1/analytics/posts?profileId= | Zbirna analitika objava profila |
GET | /api/v1/billing/connections | Stanje kredita, dugovanje i istorija slotova |
POST | /api/v1/billing/slots | Kupovina slotova za povezivanje unapred |
Odgovaraš za sadržaj koji objavljuješ preko naloga svojih korisnika i za to da imaš njihovu saglasnost. Chat33 može da onemogući API ključeve koji ugrožavaju njegove aplikacije na platformama.
Uključi scope
Uzmi scope connect:write: napravi ključ u Podešavanja → API ključevi i označi Povezivanje naloga tvojih korisnika. Podrazumevano je isključen na svakom ključu.
MMP postbackovi za instalacije
Prati instalacije aplikacije iz AppsFlyera, Adjusta, Brancha, Tenjina ili Singulara
Postback URL
Podesi ovaj URL na svojoj MMP kontrolnoj tabli kao postback endpoint. Zameni YOUR_SECRET svojom MMP Webhook tajnom iz Podešavanja.
https://chat33.io/api/webhooks/mmp?secret=YOUR_SECRETPodržani MMP-ovi
AppsFlyer
Čita event_type, app_id, appsflyer_id, af_sub1/af_sub2 za atribuciju
Adjust
Čita activity_kind (install, rejected_install, event), label i adid iz callback poziva, GET ili POST. Za prihod od kupovina dodaj placeholder revenue_float (ne revenue, koji je u centima) i currency
Branch
Čita webhook događaje (INSTALL, PURCHASE), ID-jeve uređaja u user_data i kreatora i objavu koje Chat33 dodaje u podatke linka
Tenjin
Čita campaign_id, site_id za atribuciju
Singular
Čita network, source za atribuciju
Podešavanje pametnog linka
Koristi korak Pošalji link za preuzimanje aplikacije u svojim automatizacijama. Šalje korisnike iPhone-a na App Store link, a korisnike Androida na Google Play link, i broji svaki dodir na tvojoj kontrolnoj tabli, po automatizaciji. Nalepi svoj MMP link za praćenje (OneLink, Adjust, Branch, Singular ili Tenjin) sa jednim nazivom kampanje po objavi i tvoj MMP prijavljuje instalacije po objavi. Za Chat33 influenserske kampanje, ID-jevi kontakta i influensera dodaju se u link automatski.
Dodaj korak za preuzimanje
U automatizaciji dodaj Pošalji link za preuzimanje aplikacije sa svojim MMP linkovima za praćenje
Podesi MMP
Podesi postback URL u AppsFlyeru, Adjustu, Branchu (webhook za događaj Install), Tenjinu ili Singularu
Prati instalacije
Dodiri po automatizaciji u Chat33, instalacije po kampanji u tvom MMP-u, ukupne instalacije na kontrolnoj tabli
Nemaš MMP? Koristi linkove kampanja prodavnica
Apple i Google besplatno broje instalacije po kampanji. Stavi naziv kampanje u svaki link prodavnice, jedan po objavi, i nalepi linkove u korak za preuzimanje. Instalacije se vide u App Store Connect (App Analytics, Sources, Campaigns) i Play Console (izveštaji o akviziciji po UTM kampanji), oko jedan dan kasnije i zbirno.
App Store: generiši ga u App Store Connect ili ga sastavi
https://apps.apple.com/app/apple-store/id<APP_ID>?pt=<PROVIDER_TOKEN>&ct=<campaign_name>&mt=8Google Play: UTM parametri idu unutar referrer, URL-enkodirane
https://play.google.com/store/apps/details?id=<PACKAGE>&referrer=utm_source%3Dchat33%26utm_medium%3Ddm%26utm_campaign%3D<campaign_name>Korak po korak: besplatno praćenje instalacija bez MMP-a.
Praćenje linkova
Prati klikove na linkove poslate kroz DM automatizacije
Kako radi
Kad u automatizacijama koristiš praćene linkove, Chat33 ih pakuje u redirect URL koji beleži klik pre prosleđivanja na odredište. ID kontakta se dodaje kao query parametar, da bi naredne stranice mogle da prepoznaju posetioca.
# Original URL in your flow:
https://yoursite.com/signup
# What gets sent to the user:
https://chat33.io/api/t?url=https://yoursite.com/signup&cid=cm1abc...&fid=flow123
# User is redirected to:
https://yoursite.com/signup?cid=cm1abc...&fid=flow123URL parametri koji se dodaju
| Parametar | Opis |
|---|---|
| cid | Chat33 ID kontakta |
| fid | ID automatizacije koja je generisala link |
| ch | ID kanala |
Savet: Kombinuj praćenje linkova sa pikselom za praćenje. Kad korisnik klikne na praćeni link i stigne na tvoj sajt, piksel automatski čita parametar cid i pripisuje sve naredne događaje tom kontaktu.
Generator UTM linkova za kampanje
Generiši URL-ove za praćenje sa UTM parametrima za Google Analytics
Savet: Koristi UTM linkove u porukama Chat33 automatizacija. U kombinaciji sa pikselom za praćenje videćeš ceo put od DM-a do konverzije u Google Analytics.
Linkovi kampanja za prodavnice aplikacija
Generiši linkove za preuzimanje sa praćenjem za Apple App Store i Google Play
Nalazi se u URL-u u App Store Connect: apps.apple.com/app/id[THIS_NUMBER]
Za Chat33 kampanje: Koristi ove linkove u DM automatizacijama, sa čvorom Pametni link. Chat33 automatski dodaje ID kontakta i ID influensera, da se instalacije pripišu tvojoj kampanji.
MMP integracija: Ako koristiš AppsFlyer, Adjust, Branch, Tenjin ili Singular, umesto ovih koristi njihove OneLink URL-ove za praćenje i podesi Chat33 postback URL na svojoj MMP kontrolnoj tabli. Pogledaj odeljak MMP postbackovi.
Treba ti pomoć oko integracije?
Naš tim može da ti pomogne da podesiš praćenje i izvučeš maksimum iz Chat33 alata za programere.