API'en
Der er intet privat endpoint. Ikke engang til selve interfacet.
De fleste produkter har to API'er: det dokumenterede, du bliver tilbudt, og det interessante, som deres egne skærme bruger. Det andet er altid bedre, og du kommer aldrig i nærheden af det. Her findes der kun ét, og interfacet er en klient af det som alt andet — det er en begrænsning for os, og grunden til, at alt, hvad du vil bygge, er muligt.
Hvad den regel faktisk koster
Det betyder, at en skærm af og til må vente på, at API'en bliver rigtig, i stedet for at gå uden om den for et bekvemt felt. Den dag en skærm har brug for noget, det offentlige API ikke kan give, er den dag API'en tager fejl, og løsningen er API'en.
Gevinsten er, at tre meget forskellige klienter næsten ikke koster ekstra. MCP-serveren er en klient. En dash-b-flise er en klient. Dit eget script er en klient. Ingen af dem er andenrangs borgere, der arbejder uden om en flade designet til en anden, for der er ingen anden flade at være nummer to til.
Dokumenteret og afprøvet
OpenAPI genereres på /docs, og hver rute har en test, der er eksemplet i dokumentationen. Dokumentation, der skrives separat fra koden, driver væk inden for en måned; dokumentation, der får buildet til at fejle, når den tager fejl, gør ikke.
Log ind
Din castomo-konto, via authorization code flow med PKCE — samme konto, du bruger til dash-b og resten af familien. En side uden egen server kører det flow helt fint; det er, hvad flowet er designet til. Til maskine-til-maskine-arbejde: en projektafgrænset API-nøgle.
- 1Folk
/v1/contacts·/lists·/segments·/tags·/imports - 2Indhold
/v1/creatives, med validering, preview og render pr. mål - 3Automatisering
/v1/funnels·/funnels/:id/versions·/runs·/simulate - 4Radio
/v1/campaigns, med målgruppe, materialisering, planlægning og afsendelse som adskilte trin - 5Events ind
/v1/events— din egen applikations events, som triggers - 6Levering
/sender-identities·/domains·/apps·/webhooks - 7Tal
/v1/reports/*og/track/*på tracking-hosten
OpenAPI på /docs/mcp på samme proces
Konventioner
Samme form som alle andre castomo-tjenester
Hvilket betyder mere, end det lyder. Hvis du allerede kalder en af disse, ved du allerede, hvordan denne svarer, fejler og paginerer.
Én fejlkonvolut
Hver fejl har samme form, en stabil kode og en besked beregnet på et menneske. Ingen rute opfinder sin egen måde at være utilfreds på.
Cursor-paginering
Ikke offsets. En liste, der ændrer sig, mens du gennemløber den, springer ikke lydløst rækker over eller gentager dem, hvilket offset-paginering gør stille og roligt hele tiden.
Idempotensnøgler
På alle ruter, der ændrer data. Prøv en forespørgsel igen, hvis du er i tvivl om, hvorvidt den landede, og få det samme svar frem for en anden kontakt, en anden kampagne eller en anden udsendelse.
Afgrænset til et projekt
Et token peger på én tenant og ét projekt, begge dele. Sikkerhed på rækkeniveau håndhæves i selve databasen, ikke ved at huske at tilføje en klausul.
Webhooks ud
Signerede, forsøgt igen med backoff og leveret mindst én gang — så dit endpoint bør også være idempotent. Begivenhederne bruger samme ordforråd som rapporterne.
Sletning og eksport
En kontakt kan eksporteres eller slettes via API'et, og en sletning når frem til alle søstertjenester, der har en kopi, via familiens egen interne kanal.

Alt, hvad interfacet kan, kan en POST gøre.
Begivenhederne er det interessante
Alt andet på denne side er rørværk, du ville forvente. POST /v1/events er ruten, der ændrer, hvad produktet handler om.
Din applikation ved allerede ting, intet marketingværktøj kan observere: hvem der gennemførte onboarding, hvem der inviterede en kollega, hvem der ramte en grænse, hvem der eksporterede deres data en søndag eftermiddag. Send dem som begivenheder med dit eget token, og hver enkelt bliver en trigger, en betingelse og et segment.
Resten følger af kontaktmodellen. Begivenheder tilføjes, redigeres aldrig; det er loggen, hele produktet hænger på. En tragt, der udløses af en begivenhed, du har defineret, er ikke en integration — det er samme mekanisme, som message_opened bruger, bare med et andet navn i.
- 1Du sender den
POST /v1/events— et navn, en kontakt, en payload, en idempotensnøgle. - 2Den landerTilføjet til kontaktens log. Intet andet behøver vide, at den findes.
- 3En tragt starterEnhver tragt, hvis indgang nævner den begivenhed, for enhver kontakt, der opfylder dens indgangskriterier.
- 4Andre tragte forgrener sig på den"Har denne begivenhed fundet sted inden for de seneste 14 dage" er et almindeligt segmentprædikat.
- iOg den afslutter forløbEn målsknude, der nævner samme begivenhed, stopper en sekvens i det øjeblik, personen gør tingen.
Dit ordforrådDit token
Grænser, du bør kende, før du bygger
ClickSomo gemmer tre identifikatorer om dig — en tenant, et projekt og en bruger, som uigennemsigtige id'er — og intet andet. Ingen adgangskode, ingen profil, intet kort, ingen faktura. Planbegrænsninger kommer som tal: hvor mange kontakter, hvor mange udsendelser, hvor mange genereringer. Betalingsterminologi krydser ikke den linje i nogen retning.
Dine kontakter er dine. Du er dataansvarlig; vi er databehandler. Der findes ingen rute, hvorved et andet produkt i familien kan læse eller skrive din kontaktliste, og ingen indgangskanal, som et kan bruge.
Hvis du overvejer dette seriøst: læs /docs, før du læser mere af dette website. API'et er den ærlige beskrivelse af, hvad produktet gør, og ethvert udsagn på disse sider svarer til en rute eller en knudetype, du kan finde der. Når skemaet ændres, ændres disse sider.