clickSomo

API:t

Det finns ingen privat endpoint. Inte ens för gränssnittet.

De flesta produkter har två API:er: det dokumenterade du erbjuds, och det intressanta som deras egna skärmar använder. Det andra är alltid bättre, och du får aldrig komma nära det. Här finns ett, och gränssnittet är en klient till det som allt annat — vilket är en begränsning för oss, och anledningen till att allt du vill bygga är möjligt.

Vad den regeln faktiskt kostar

Det betyder att en skärm ibland måste vänta på att API:t blir rätt, i stället för att gå runt det för ett bekvämt fält. Den dag en skärm behöver något det publika API:t inte kan ge är den dag API:t är fel, och lösningen är API:t.

Vinsten är att tre väldigt olika klienter nästan inte kostar något extra. MCP-servern är en klient. En dash-b-panel är en klient. Ditt eget skript är en klient. Ingen av dem är andraklassmedborgare som jobbar runt en yta designad för någon annan, för det finns ingen annan yta att vara sekundär till.

Dokumenterat, och använt

OpenAPI genereras på /docs och varje rutt har ett test som är exemplet i dokumentationen. Dokumentation som skrivs separat från koden driver iväg inom en månad; dokumentation som misslyckar bygget när den är fel gör inte det.

Inloggning

Ditt castomo-konto, via authorization code-flödet med PKCE — samma konto du använder för dash-b och resten av familjen. En sida utan egen server kör det flödet alldeles utmärkt; det är vad flödet var designat för. För maskin-till-maskin-arbete, en projektspecifik API-nyckel.

Ytanapi.clicksomo.com
  • 1Personer/v1/contacts · /lists · /segments · /tags · /imports
  • 2Innehåll/v1/creatives, med validering, förhandsvisning och render per mål
  • 3Automatisering/v1/funnels · /funnels/:id/versions · /runs · /simulate
  • 4Sändning/v1/campaigns, med målgrupp, materialisering, schemaläggning och utskick som separata steg
  • 5Händelser in/v1/events — din egen applikations händelser, som utlösare
  • 6Leverans/sender-identities · /domains · /apps · /webhooks
  • 7Siffror/v1/reports/*, och /track/* på spårningsvärden

OpenAPI på /docs/mcp på samma process

Konventioner

Samma form som alla andra castomo-tjänster

Vilket spelar större roll än det låter. Om du redan anropar en av dessa vet du redan hur den här svarar, misslyckas och paginerar.

Ett felkuvert

Varje fel har samma form, en stabil kod och ett meddelande avsett för en människa. Ingen rutt hittar på sitt eget sätt att vara missnöjd.

Cursor-paginering

Inte offset. En lista som ändras medan du går den hoppar inte tyst över eller upprepar rader, vilket offset-paginering gör tyst och ständigt.

Idempotensnycklar

På varje muterande rutt. Upprepa en förfrågan du inte är säker på landade och få samma svar i stället för en andra kontakt, en andra kampanj eller ett andra utskick.

Avgränsat till ett projekt

En token adresserar både en tenant och ett projekt. Säkerhet på radnivå tillämpas i själva databasen, inte genom att komma ihåg att lägga till en villkorsklausul.

Webhooks ut

Signerade, försöks igen med backoff och levererade minst en gång — så din endpoint bör också vara idempotent. Händelserna använder samma vokabulär som rapporterna.

Radering och export

En kontakt kan exporteras eller raderas via API:t, och en radering når varje systerjänst som har en kopia, via familjens egna interna kanal.

Allt som gränssnittet kan göra kan ett POST göra.

Händelserna är den intressanta delen

Allt annat på den här sidan är rörmokeri du kan förvänta dig. POST /v1/events är rutten som förändrar vad produkten är till för.

Din applikation vet redan saker som inget marknadsföringsverktyg kan observera: vem som avslutade onboarding, vem som bjöd in en kollega, vem som nådde en gräns, vem som exporterade sina data en söndagseftermiddag. Posta dem som händelser med din egen token, och var och en blir en utlösare, ett villkor och ett segment.

Resten följer av kontaktmodellen. Händelser läggs till, redigeras aldrig; de är loggen som hela produkten hänger på. En tratt som triggas av en händelse du definierat är ingen integration — det är samma mekanism som message_opened använder, med ett annat namn i.

Din händelse blir en trattapi_event
  • 1Du postar denPOST /v1/events — ett namn, en kontakt, en payload, en idempotensnyckel.
  • 2Den landarLäggs till i kontaktens logg. Inget annat behöver veta att den finns.
  • 3En tratt startarVarje tratt vars inträde namnger den händelsen, för varje kontakt som kvalificerar enligt dess inträdesspecifikation.
  • 4Andra trattar förgrenar sig på den"Har den här händelsen inträffat de senaste 14 dagarna" är ett vanligt segmentpredikat.
  • iOch den avslutar körningarEn målnod som namnger samma händelse stoppar en sekund i samma ögonblick som personen gör saken.

Din vokabulärDin token

Gränser värda att känna till innan du bygger

ClickSomo lagrar tre identifierare om dig — en tenant, ett projekt och en användare, som opaka id:n — och inget annat. Inget lösenord, ingen profil, inget kort, ingen faktura. Planbegränsningar kommer som siffror: hur många kontakter, hur många utskick, hur många genereringar. Betalningsvokabulär passerar inte den linjen i någon riktning.

Dina kontakter är dina. Du är personuppgiftsansvarig; vi är personuppgiftsbiträdet. Det finns ingen väg genom vilken en annan produkt i familjen kan läsa eller skriva din kontaktlista, och ingen inmatningskanal för någon att använda.

Om du utvärderar det här på allvar: läs /docs innan du läser mer på den här webbplatsen. API:t är den ärliga beskrivningen av vad produkten gör, och varje påstående på de här sidorna motsvarar en rutt eller en nodtyp du hittar där. När schemat ändras ändras de här sidorna.