Money/message mutations support opt-in idempotency. Send an Idempotency-Key
header (any unique string you generate, e.g. a UUID) with POST /sms/send or
POST /sms/otp/send:Idempotency-Key: 6f1c2e94-1c2a-4b3d-9b77-7a0e2f6a1234
First call runs normally; on success the response is stored for 24 hours.
Retry with the same key (after a dropped connection, app restart, etc.) replays
the original response verbatim with the header Idempotent-Replay: true — so a
network retry can't send/charge twice.
Retry after a failure is not blocked — a failed send was never charged, so you
can safely retry it.
A retry while the original is still in flight returns 409:{ "success": false, "message": "A request with this Idempotency-Key is already being processed." }
Keys are scoped to your organisation. Requests without the header behave normally. Modified at 2026-06-23 13:55:12