Cadence

Docs

Onboard in minutes. Get a sandbox key, open an agent-initiated conversation over RCS, and let SMS fallback and compliance be handled for you.

FOR AI AGENTS

Reading this as an agent?

Follow cadencercs.com/llms.txt — a machine-readable spec of the API and the self-onboarding flow. You can get a sandbox key and send a conversation without a human in the loop. Or connect the Cadence MCP server and call the get_started tool.

1. Get a sandbox key (instant)

No sales call, no compliance wait. A sandbox key simulates RCS delivery + SMS fallback end-to-end so you can integrate immediately.

curl -X POST https://cadence-api-tlx9.onrender.com/v1/signup
# → { "api_key": "sk_sandbox_…", "kind": "sandbox" }

API base URL: https://cadence-api-tlx9.onrender.com — the SDK targets it by default.

2. Open a conversation

Your agent speaks first (RCS is agent-initiated), and you pass the opt-in provenance you collected.

import { Messaging } from "@cadence/sdk";

const { apiKey } = await Messaging.signup();  // or reuse your key
const m = new Messaging({ apiKey });

const convo = await m.open({
  to: "+15551234567", agentId: "reminders", brandId: "clinic_42",
  useCase: "transactional",
  optin: { method: "appointment_booking", capturedAt },
  opening: {
    text: "Your 3pm is confirmed. Reschedule?",
    suggestions: ["Reschedule", "Cancel appt", "All good"],
    smsFallbackText: "Your 3pm is confirmed. Reply 1 reschedule, 2 cancel, 3 all good.", // required with rich content
  },
});

convo.onFellback(() => /* RCS → SMS: re-render rich UI as text */);
convo.onReply(async (intent) => {
  await convo.send({ text: await agent.respond(intent) });
});

Will your brand pass carrier review?

Before you submit for RCS or 10DLC approval, run the free RCS Readiness Check — it validates your domain age, privacy policy, messaging terms, opt-in page, and brand/entity consistency, and generates the compliant copy you're missing. A clean submission clears in ~4–5 business days; one rejection costs 2–4 weeks.

3. Go live

When you're ready to send to real phones, onboard your brand (we handle the 10DLC / RCS carrier compliance) and swap your sk_sandbox_ key for a sk_live_ key. Same code.

API reference

EndpointWhat it does
POST /v1/signupInstant sandbox API key
POST /v1/conversationsOpen an agent-initiated conversation (opt-in required)
POST /v1/conversations/{id}/messagesSend the next turn (auto-degrades to SMS text)
GET /v1/conversations/{id}State, channel, trust level, turn count
GET /v1/conversations/{id}/messagesMessage history with per-message channel (shows the RCS→SMS fallback)
POST /v1/conversations/{id}/closeClose a conversation
GET /v1/events?agentId=…SSE stream of replies + RCS→SMS flips

Constraints: agent-initiated only · opt-in required per recipient · rich content must include smsFallbackText · chip labels can't collide with carrier keywords (STOP/HELP/CANCEL).

Field notes

MCP server

Connect the Cadence MCP server in Claude, Cursor, or any MCP client. Tools: get_started, open_conversation, send, get_conversation, close_conversation. Call get_started first.

Cadence is a service of Salus, Inc. · Platform Terms · Privacy · Consumer messaging terms