Developer portal · API v1

Make your support stack work as one.

Connect Sajama One to your own tools with a workspace-scoped API, signed event webhooks, and a Node.js SDK preview. Start with the surface that fits the job.

Workspace-bound keys Revocable scopes Signed webhooks
Your server → Sajama One

List conversations

curl "https://sajamaone.com/api/v1/conversations?limit=50" \
  -H "X-API-Key: YOUR_READ_KEY"
conversations:readopaque cursornext page
Keep keys on your serverJSON over HTTPS

Integration surfaces

Choose the right way to connect.

Use the API for deliberate reads and replies, webhooks for changes as they happen, or the Node.js preview to get started with less boilerplate.

01 · API

Read and reply

Use scoped workspace keys to page through conversations or send a text reply from your server.

  • Cursor-paginated reads
  • Async, idempotent text replies
Explore read and reply
02 · Events

React to changes

Receive conversation and message events at your HTTPS endpoint, with signatures you can verify.

  • HMAC-SHA256 signatures
  • At-least-once delivery
Explore react to changes
03 · Node.js

Start with the SDK preview

Use the repository client for API reads, text replies, and webhook signature verification.

  • Dependency-free preview
  • Not yet published to npm
Explore start with the sdk preview

Conversations API

Read the queue. Send a reply.

Keys belong to one workspace and carry only the scopes you grant. Reads use stable cursor pagination; text replies enter a durable, asynchronous delivery queue.

Separate read and write scopes

Use conversations:read and messages:write only where needed.

Tenant-bound by design

Conversation access is checked against the workspace that issued the key.

01 / Read a pageGET
curl "https://sajamaone.com/api/v1/conversations?limit=50" \
  -H "X-API-Key: YOUR_READ_KEY"
Limit: 1–100 · default 50 · pass nextCursor as cursor
02 / Send a text replyPOST
curl -X POST "https://sajamaone.com/api/v1/conversations/CONVERSATION_ID/messages" \
  -H "X-API-Key: YOUR_WRITE_KEY" \
  -H "Idempotency-Key: YOUR_UNIQUE_REQUEST_ID" \
  -H "Content-Type: application/json" \
  -d '{"text":"Thanks for getting in touch."}'
Returns 202 Accepted while delivery runs. Reuse the same idempotency key to check the request; do not blindly retry an uncertain channel result.

Outbound webhooks

Events, delivered to your endpoint.

Subscribe from workspace settings and receive supported events over HTTPS. Verify each signature against the exact raw request body before processing it.

See the Node.js verification helper

Available event types

2 events
conversation.created

JSON event with a stable delivery ID and timestamp.

message.created

JSON event with a stable delivery ID and timestamp.

Signature

HMAC-SHA256 over timestamp and raw body.

Delivery model

Retries with backoff; at-least-once, so deduplicate by delivery ID.

Node.js SDK preview

Less setup for the common paths.

The source package covers conversation reads, idempotent text replies, and timestamp-bound webhook verification. It is available in the repository, but is not yet published to npm.

getConversations()sendMessage()verifyWebhookSignature()
View SDK source

Know the current scope

Built to be useful. Honest about its edges.

Available today

  • Conversation reads and plain-text replies
  • Signed outbound event webhooks
  • Workspace-scoped, revocable API keys

Not in the public API yet

  • Browser-side widget runtime API
  • Native Zapier app or connector
  • Attachments, message editing, or deletion

Start building

Bring your first integration to life.

Create a scoped key in your workspace, then make your first server-side request.