Tody Android beta is open · Join early access
Developers

Build with Tody’s Business Messaging API

A pragmatic REST API for production messaging. Sample code in cURL, Python, Node, and PHP. Idempotency, rate-limits, signed webhooks, and a versioning policy you can rely on.

Quickstart

From signup to first message in three steps

The flow is the same whether you’re shipping a single OTP or a school-wide reminder campaign. Request a sandbox key, register a template, send your first message.

1

Get a sandbox key

Email developers@tody.in or use the contact form. You’ll receive a sandbox key, sample template, and 100 free credits in under 24 hours.

2

Register a template

Use POST /v1/templates to register a transactional or promotional template with typed variables. Review usually completes within one business day.

3

Send your first message

Call POST /v1/business/send with the approved template_code and recipient.tachy_user_id. You’ll receive a message_id and a webhook on delivery.

Code samples

Copy-paste in the language you already use

No proprietary SDKs. Any HTTP client works. Same JSON payload across languages.

# curl
curl -X POST https://api.tody.in/v1/business/send \
  -H "Authorization: Bearer tchy_live_XXX" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": { "tachy_user_id": 12345, "name": "Riya Sharma" },
    "template_code": "order_shipped",
    "variables": { "order_id": "98765" },
    "idempotency_key": "order_98765"
  }'
# Python (requests)
import requests
r = requests.post(
  "https://api.tody.in/v1/business/send",
  headers={
    "Authorization": "Bearer tchy_live_XXX",
  },
  json={
    "recipient": { "tachy_user_id": 12345, "name": "Riya Sharma" },
    "template_code": "order_shipped",
    "variables": { "order_id": "98765" },
    "idempotency_key": "order_98765",
  },
)
print(r.json())
// Node.js (fetch)
const res = await fetch(
  "https://api.tody.in/v1/business/send", {
    method: "POST",
    headers: {
      "Authorization": "Bearer tchy_live_XXX",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      recipient: { tachy_user_id: 12345, name: "Riya Sharma" },
      template_code: "order_shipped",
      variables: { order_id: "98765" },
      idempotency_key: "order_98765",
    }),
  });
console.log(await res.json());
// PHP (cURL)
$ch = curl_init("https://api.tody.in/v1/business/send");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer tchy_live_XXX",
    "Content-Type: application/json",
  ],
  CURLOPT_POSTFIELDS => json_encode([
    "recipient" => ["tachy_user_id" => 12345, "name" => "Riya Sharma"],
    "template_code" => "order_shipped",
    "variables" => ["order_id" => "98765"],
    "idempotency_key" => "order_98765",
  ]),
]);
echo curl_exec($ch);
Endpoints

Core endpoints at a glance

32+ endpoints across business identity, templates, sending, wallet, campaigns, webhooks, usage, and quality. Here are the ones you’ll touch first.

ResourceMethodPathPurpose
BusinessPOST/v1/business/registerRegister a new business account
API keysPOST/v1/keysCreate a scoped API key
TemplatesPOST/v1/templatesSubmit a message template for review
SendPOST/v1/business/sendSend a templated message
Batch sendPOST/v1/business/batchQueue a bulk send / campaign
StatusGET/v1/messagesList message delivery status and lifecycle data
WalletGET/v1/walletGet current balance and recent ledger entries
UsageGET/v1/usagePer-day usage report with quality score
WebhooksPOST/v1/webhooksConfigure a webhook URL with secret
Developer FAQ

API questions developers send before integrating

Need the full OpenAPI spec, a Postman collection, or a sandbox key? Email developers@tody.in.

Send your API key in the Authorization header as Bearer YOUR_KEY. Each environment has separate keys (sandbox / production). Keys are stored hashed and shown only once at creation.
Errors return JSON with code, message, and request_id. HTTP status codes follow REST conventions (4xx for client errors, 5xx for server errors). Validation errors include field-level detail.
Tody targets 99.9% uptime on the Business API. Enterprise plans include a contractual SLA with credits for any breach.
Yes. We publish an OpenAPI 3.0 spec for the Business API on request. Import it into Postman, Insomnia, or a code generator of your choice.

Get a sandbox key today

Sandbox keys with 100 credits, sample templates, and webhook URL ready in 24 hours.