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.
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.
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.
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.
Use POST /v1/templates to register a transactional or promotional template with typed variables. Review usually completes within one business day.
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.
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);
32+ endpoints across business identity, templates, sending, wallet, campaigns, webhooks, usage, and quality. Here are the ones you’ll touch first.
| Resource | Method | Path | Purpose |
|---|---|---|---|
| Business | POST | /v1/business/register | Register a new business account |
| API keys | POST | /v1/keys | Create a scoped API key |
| Templates | POST | /v1/templates | Submit a message template for review |
| Send | POST | /v1/business/send | Send a templated message |
| Batch send | POST | /v1/business/batch | Queue a bulk send / campaign |
| Status | GET | /v1/messages | List message delivery status and lifecycle data |
| Wallet | GET | /v1/wallet | Get current balance and recent ledger entries |
| Usage | GET | /v1/usage | Per-day usage report with quality score |
| Webhooks | POST | /v1/webhooks | Configure a webhook URL with secret |
Need the full OpenAPI spec, a Postman collection, or a sandbox key? Email developers@tody.in.
Sandbox keys with 100 credits, sample templates, and webhook URL ready in 24 hours.