Ody developer docs
Text, call, buy numbers, register 10DLC, and run the Astra AI receptionist from your own code — or hand the whole workspace to an AI assistant over MCP. Everything you do here lands in the same account your team uses in the app.
curl https://api.ody.co/v1/api/messages \
-H "Authorization: Bearer ody_test_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1042-shipped" \
-d '{"to":"+15125550123","body":"Your order shipped!"}'import { Ody } from "@ody/sdk";
const ody = new Ody(process.env.ODY_API_KEY!);
await ody.messages.send({
to: "+15125550123",
body: "Your order shipped!",
idempotencyKey: "order-1042-shipped",
});from ody import Ody
client = Ody("ody_test_...")
client.messages.send(
to="+15125550123",
body="Your order shipped!",
idempotency_key="order-1042-shipped",
){
"mcpServers": {
"ody": {
"url": "https://api.ody.co/v1/mcp",
"headers": { "Authorization": "Bearer ody_test_…" }
}
}
}Five surfaces, one permission model: every call acts as the workspace member who created the key.
What each developer surface does, your first API call, keys, scopes, and test mode.
Contacts, conversations, messages, calls, numbers, 10DLC, your AI agent, and webhooks over HTTPS.
Get pushed every new message, call outcome, and contact change — signed per Standard Webhooks.
Plug your Ody workspace into Claude, ChatGPT, Cursor, or any Model Context Protocol client.
End-to-end recipes: your first text, a full AI phone line from code, a live SMS agent.
Zero-dependency TypeScript and Python clients with pagination, typed errors, and webhook verification.
Describe a phone-system change in plain words; Ody plans it, you approve it, Ody builds it.