Response
200 with status: "pending". Delivery is asynchronous.
GET /v1/sms/{id} or wait for sms.sent / sms.delivered / sms.failed / sms.blocked.
Status path: pending → sent → delivered, or failed, or blocked. The GET response also carries a timeline of each hop with a reason and a refund flag; see Delivery timeline.
OTP bodies
OTP messages are composed by Robase (workspace language, orlanguage on the send). You do not pass a message on POST /v1/otp/send.
Not in this API
There is notemplate_id, no scheduled send, and no /v1/sms/batch. Loop with idempotency keys if you need many destinations.