API
Không có endpoint riêng tư. Thậm chí không dành cho giao diện.
Hầu hết sản phẩm có hai API: API được tài liệu hóa mà họ cung cấp cho bạn, và API thú vị mà chính màn hình của họ dùng. API thứ hai luôn tốt hơn, và bạn không bao giờ được phép chạm vào. Ở đây chỉ có một, và giao diện là một client của nó như bất kỳ thứ gì khác — đó là một ràng buộc đối với chúng tôi, và là lý do mọi thứ bạn muốn xây dựng đều khả thi.
Quy tắc đó thực sự tốn gì
Nó có nghĩa là một màn hình đôi khi phải chờ API đúng, thay vì đi vòng qua nó để lấy một trường tiện lợi. Ngày mà một màn hình cần thứ gì đó API công khai không cung cấp được chính là ngày API sai, và cách sửa là ở API.
Phần thưởng là ba client rất khác nhau hầu như không tốn thêm gì. Máy chủ MCP là một client. Một ô dash-b là một client. Kịch bản của riêng bạn là một client. Không cái nào là công dân hạng hai phải đi vòng qua một bề mặt được thiết kế cho người khác, vì không có bề mặt nào khác để phải xếp sau.
Có tài liệu, và được kiểm chứng
OpenAPI được tạo tại /docs và mọi route đều có một bài kiểm tra chính là ví dụ trong tài liệu. Tài liệu viết tách rời khỏi mã sẽ lệch trong vòng một tháng; tài liệu làm bản dựng thất bại khi sai thì không.
Đăng nhập
Tài khoản castomo của bạn, qua luồng mã ủy quyền với PKCE — cùng tài khoản bạn dùng cho dash-b và các sản phẩm khác trong họ. Một trang không có máy chủ riêng vẫn chạy luồng đó rất tốt; đó chính là điều luồng được thiết kế để làm. Cho công việc máy-đến-máy, một khóa API theo phạm vi dự án.
- 1Người dùng
/v1/contacts·/lists·/segments·/tags·/imports - 2Nội dung
/v1/creatives, với xác thực, xem trước và kết xuất cho từng mục tiêu - 3Tự động hóa
/v1/funnels·/funnels/:id/versions·/runs·/simulate - 4Phát sóng
/v1/campaigns, với đối tượng, hiện thực hóa, lên lịch và gửi là các bước riêng biệt - 5Sự kiện vào
/v1/events— sự kiện của ứng dụng của riêng bạn, làm trình kích hoạt - 6Gửi đi
/sender-identities·/domains·/apps·/webhooks - 7Số liệu
/v1/reports/*, và/track/*trên máy chủ theo dõi
OpenAPI tại /docs/mcp trên cùng một tiến trình
Quy ước
Cùng hình dáng với mọi dịch vụ castomo khác
Điều này quan trọng hơn nghe có vẻ vậy. Nếu bạn đã gọi một trong những dịch vụ này, bạn đã biết cách cái này trả lời, báo lỗi và phân trang.
Một phong bì lỗi duy nhất
Mọi lỗi đều có cùng hình dáng, một mã ổn định và một thông điệp dành cho con người. Không route nào tự chế cách thể hiện sự khó chịu riêng.
Phân trang bằng con trỏ
Không dùng offset. Một danh sách thay đổi trong khi bạn đang duyệt sẽ không âm thầm bỏ sót hay lặp dòng, điều mà phân trang offset làm một cách lặng lẽ và liên tục.
Khóa idempotency
Trên mọi route thay đổi dữ liệu. Thử lại một yêu cầu bạn không chắc đã đến và nhận cùng câu trả lời thay vì một liên hệ thứ hai, một chiến dịch thứ hai hay một lần gửi thứ hai.
Giới hạn theo dự án
Một token trỏ tới một tenant và một dự án, cả hai. Bảo mật cấp dòng được thực thi ngay trong cơ sở dữ liệu, không phải bằng việc nhớ thêm một điều kiện.
Webhooks ra
Đã ký, thử lại với backoff và được gửi ít nhất một lần — nên endpoint của bạn cũng cần idempotent. Các event dùng đúng bộ từ vựng mà báo cáo sử dụng.
Xóa và xuất dữ liệu
Một liên hệ có thể được xuất hoặc xóa qua API, và một yêu cầu xóa sẽ đến mọi dịch vụ anh em đang giữ bản sao, qua kênh nội bộ riêng của họ.

Mọi thứ giao diện làm được, một POST cũng làm được.
Event mới là phần thú vị
Mọi thứ khác trên trang này chỉ là phần hạ tầng bạn vẫn thường thấy. POST /v1/events là tuyến thay đổi mục đích của sản phẩm.
Ứng dụng của bạn đã biết những điều không công cụ marketing nào quan sát được: ai hoàn tất onboarding, ai mời một đồng nghiệp, ai chạm giới hạn, ai xuất dữ liệu của họ vào chiều Chủ nhật. Gửi chúng dưới dạng event với token của riêng bạn, và mỗi event trở thành một trigger, một điều kiện và một phân khúc.
Phần còn lại xuất phát từ mô hình liên hệ. Event chỉ được thêm vào, không bao giờ sửa; chúng là nhật ký mà toàn bộ sản phẩm dựa vào. Một phễu kích hoạt bởi event bạn tự định nghĩa không phải là một tích hợp — nó là cùng cơ chế mà message_opened dùng, chỉ khác tên bên trong.
- 1Bạn gửi nó
POST /v1/events— một tên, một liên hệ, một payload, một khóa idempotency. - 2Nó được ghi nhậnĐược thêm vào nhật ký của liên hệ. Không gì khác cần biết nó tồn tại.
- 3Một phễu bắt đầuBất kỳ phễu nào có điểm vào trùng tên event đó, cho mọi liên hệ đủ điều kiện theo tiêu chí vào của phễu.
- 4Các phễu khác rẽ nhánh theo nó"Event này có xảy ra trong 14 ngày qua không" là một điều kiện phân khúc bình thường.
- iVà nó kết thúc các lượt chạyMột nút mục tiêu trùng tên event sẽ dừng một chuỗi ngay khoảnh khắc người đó làm việc đó.
Từ vựng của bạnToken của bạn
Những giới hạn đáng biết trước khi bạn xây dựng
ClickSomo lưu ba định danh về bạn — một tenant, một dự án và một người dùng, dưới dạng id mờ — và không gì khác. Không mật khẩu, không hồ sơ, không thẻ, không hóa đơn. Giới hạn gói đến dưới dạng con số: bao nhiêu liên hệ, bao nhiêu lượt gửi, bao nhiêu lượt tạo. Từ vựng thanh toán không vượt qua ranh giới đó theo cả hai chiều.
Liên hệ của bạn là của bạn. Bạn là bên kiểm soát dữ liệu; chúng tôi là bên xử lý. Không có tuyến nào để một sản phẩm khác trong họ đọc hoặc ghi danh sách liên hệ của bạn, và không có kênh nhập liệu nào cho nó dùng.
Nếu bạn đang cân nhắc nghiêm túc: hãy đọc /docs trước khi đọc thêm bất kỳ phần nào khác của trang web này. API là mô tả trung thực về những gì sản phẩm làm, và mọi tuyên bố trên các trang này đều tương ứng với một tuyến hoặc một loại nút bạn có thể tìm thấy ở đó. Khi schema thay đổi, các trang này thay đổi theo.