API-et
Det finst inga privat endepunkt. Ikkje eingong for grensesnittet.
Dei fleste produkt har to API: det dokumenterte du blir tilbydd, og det interessante som deira eigne skjermar brukar. Det andre er alltid betre, og du får aldri lov til det. Her finst det eitt, og grensesnittet er ein klient av det som alt anna — noko som er ei avgrensing for oss, og grunnen til at alt du vil byggja er mogleg.
Kva regelen faktisk kostar
Det betyr at ein skjerm av og til må venta på at API-et blir rett, i staden for å gå utanom det for eit praktisk felt. Dagen ein skjerm treng noko det offentlege API-et ikkje kan gje, er dagen API-et er gale, og løysinga er API-et.
Utbetalinga er at tre svært ulike klientar nesten ikkje kostar ekstra. MCP-tenaren er ein klient. Ei dash-b-flise er ein klient. Ditt eige skript er ein klient. Ingen av dei er andreklasses borgarar som jobbar rundt eit flate designa for nokon andre, for det finst ikkje noko anna flate å vera nummer to til.
Dokumentert, og utprøvd
OpenAPI blir generert på /docs, og kvar rute har ein test som er dømet i dokumentasjonen. Dokumentasjon som blir skrive separat frå koden glir innom på ein månad; dokumentasjon som feilar byggjet når ho er galen, gjer ikkje det.
Innlogging
Castomo-kontoen din, over autorisasjonskodeflyten med PKCE — same kontoen du brukar for dash-b og resten av familien. Ei side utan eigen tenar køyrer den flyten utmerkt; det er akkurat det flyten var designa for. For maskin-til-maskin-arbeid, ein prosjektomfattande API-nøkkel.
- 1Folk
/v1/contacts·/lists·/segments·/tags·/imports - 2Innhald
/v1/creatives, med validering, førehandsvising og rendering per mål - 3Automatisering
/v1/funnels·/funnels/:id/versions·/runs·/simulate - 4Kringkasting
/v1/campaigns, med målgruppe, materialisering, planlegging og utsending som eigne steg - 5Hendingar inn
/v1/events— hendingane frå di eige applikasjon, som utløysarar - 6Levering
/sender-identities·/domains·/apps·/webhooks - 7Tal
/v1/reports/*, og/track/*på sporingstenaren
OpenAPI på /docs/mcp på same prosess
Konvensjonar
Same form som alle andre castomo-tenester
Noko som betyr meir enn det høyrast ut som. Om du alt kallar ein av desse, veit du alt korleis denne svarar, feilar og paginerer.
Eitt feilkonvolutt
Kvar feil har same form, ein stabil kode og ei melding meint for eit menneske. Ingen rute finn opp si eiga måte å vera misnøgd på.
Cursor-paginering
Ikkje offsettar. Ei liste som endrar seg medan du går gjennom ho hoppar eller gjentar rader i det stille, noko offset-paginering gjer stille og konstant.
Idempotensnøklar
På kvar muterande rute. Prøv eit førespurnad du ikkje er sikker på kom fram på nytt, og få same svar i staden for ein ny kontakt, ein ny kampanje eller ei ny utsending.
Avgrensa til eit prosjekt
Eit token adresserer éi leietakar og éi prosjekt, begge. Radnivåsikring blir handheva i databasen sjølv, ikkje ved å hugsa å leggja til ei klausul.
Webhooks ut
Signerte, prøvd på nytt med backoff og levert minst éin gong — så endepunktet ditt bør vere idempotent òg. Hendingane brukar same vokabularet som rapportane.
Sletting og eksport
Ein kontakt kan eksporterast eller slettast gjennom API-et, og ei sletting når alle søstertenestene som heldt ei kopi, via familien sin eigen interne kanal.

Alt grensesnittet kan gjere, kan ein POST gjere.
Hendingane er den interessante delen
Alt anna på denne sida er røyr du ville forventa. POST /v1/events er ruta som endrar kva produktet er til for.
Applikasjonen din veit allereie ting ingen marknadsføringsverktøy kan observere: kven som fullførte onboarding, kven som inviterte ein kollega, kven som ramma ein grense, kven som eksporterte dataa sine ein søndag ettermiddag. Post dei som hendingar med din eigen token, og kvar ein blir ein utløysar, ein vilkår og eit segment.
Resten følgjer av kontaktmodellen. Hendingar blir lagt til, aldri redigerte; dei er loggen heile produktet heng på. Ein trakt som utløysast av ei hending du har definert, er ingen integrasjon — det er same mekanismen som message_opened brukar, med eit anna namn i.
- 1Du postar den
POST /v1/events— eit namn, ein kontakt, ein nyttelast, ein idempotensnøkkel. - 2Den kjem framLagt til i kontaktens logg. Ingenting anna treng vite at den finst.
- 3Ein trakt startarKvar trakt der inngangen nemner den hendinga, for alle kontaktar som kvalifiserer under inngangsspesifikasjonen.
- 4Andre trakter forgreinar seg på den«Har denne hendinga skjedd dei siste 14 dagane» er eit vanleg segmentpredikat.
- iOg den avsluttar køyringarEin målnode som nemner same hendinga stoppar ein sekvens i det augneblikket personen gjer greia.
Vokabularet dittTokenet ditt
Grenser du bør kjenne til før du byggjer
ClickSomo lagrar tre identifikatorar om deg — ein tenant, eit prosjekt og ein brukar, som opake id-ar — og ingenting anna. Ikkje noko passord, ingen profil, ingen kort, ingen faktura. Plangrensene kjem som tal: kor mange kontaktar, kor mange utsendingar, kor mange genereringar. Betalingsvokabular kryssar ikkje den linja i nokon retning.
Kontaktane dine er dine. Du er dataansvarleg; vi er databehandlar. Det finst ingen rute der eit anna produkt i familien kan lesa eller skriva kontaktlista di, og ingen inntakskanal for det.
Vurderer du dette på alvor: les /docs før du les meir av denne nettstaden. API-et er den ærlege skildringa av kva produktet gjer, og kvart påstand på desse sidene svarar til ei rute eller ein nodetype du finn der. Når skjemaet endrar seg, endrar desse sidene seg.