Developers

Ship a message in three lines

api v1
  • 01Idempotency keys on every write
  • 02Signed webhooks with replay protection
  • 03Least-cost routing resolved per send
One API · curlPOST /v1/messages
# send an SMS
curl -X POST api.tayapro.cloud/v1/messages \
  -H "Authorization: Bearer sk_live_•••" \
  -d to="+12025550148" \
  -d body="Your code is 8291"
← 201 Created
{
  "id": "msg_9f21c",
  "status": "queued",
  "carrier": "atlas-1",
  "cost": 0.0079
}

Reference

Live endpoints

bearer tk_live_…
EndpointPermissionWhat it does
POST /v1/messagesmessages:sendSend a text; routing picks the carrier
GET /v1/messageslogs:readRecent inbound and outbound messages
POST /v1/callscalls:writePlace a call with your own answer URL
GET /v1/callslogs:readCall history with duration and status
GET /v1/numbersnumbers:readYour numbers, or ?available=true to search
POST /v1/numbersnumbers:writeBuy a number and wire its webhooks
POST /v1/verifyverify:writeSend a one-time passcode
POST /v1/verify/checkverify:checkCheck a passcode
GET /v1/messages/:idlogs:readLive status straight from the network
GET /v1/calls/:idlogs:readLive call state, duration and result

Authenticate with Authorization: Bearer and a key created in your console. Webhook deliveries carry x-tayapro-signature: t=<unix>,v1=<hex>, an HMAC-SHA256 of <t>.<raw body> using your endpoint secret.

Libraries

Ready-made clients

download

JavaScript / TypeScript

download
import Tayapro from "./tayapro.js";
const taya = new Tayapro({ apiKey: "tk_live_…" });
await taya.messages.create({ to: "+12025550123", body: "Your appointment is confirmed." });

Python

download
from tayapro import Tayapro
taya = Tayapro(api_key="tk_live_…")
taya.messages.create(to="+12025550123", body="Your appointment is confirmed.")

Both clients retry safely, raise typed errors and verify webhook signatures for you.

Coming from Twilio? Your existing calls work unchanged — read the Twilio-compatible reference and migration guide.