wav1
DashboardOpenAPI document
POST/v1/otp/resend

Send a one-time password again

Sends the same code again and extends its expiry, under a cooldown and a per-OTP send ceiling. The code your user may already have received stays valid. Note the message body is the gateway default, not the template you passed to POST /v1/otp/send — a template is not stored, so pass it on every send if the wording matters to you.

AuthenticationDevice token

Request

shell
curl -X POST https://api.sapa.tokoaplikasi.id/v1/otp/resend \
  -H "Authorization: Bearer $WA_TOKEN"

Body

FieldTypeDescription
otpIdrequired
string

The otpId to send again. The same code is re-sent and its expiry is extended; a new code is not generated.

Response

200 — Accepted. The same code is on its way again and `expiresAt` has moved forward.

json
{
  "status": true,
  "otpId": "",
  "expiresAt": "2026-09-04T09:12:03Z",
  "messageId": ""
}
FieldTypeDescription
status
true

Always true on a successful request.

otpId
string

The id of this one-time password. Pass it back to POST /v1/otp/verify — verification is by id, never by phone number.

expiresAt
string

When the code stops being accepted, ISO 8601. A resend moves this forward.

messageId
string

The message carrying the code. Follow it with GET /v1/messages/{id} or the message.status webhook to tell "never delivered" apart from "typed wrong".

Failure modes

Every failure answers with the same envelope: { "status": false, "reason": "…" }. Match on reason, never on the status alone — the full vocabulary is on the Errors page.

FieldTypeDescription
400
error

The one-time password is no longer pending, or the device is not connected.

401
error

The token is missing, malformed or revoked.

403
error

An account token was used; resending needs the device token.

404
error

No one-time password with that id belongs to this device.

429
error

Still inside the 60-second cooldown, or this code has already been sent the maximum number of times. Wait the seconds in retryAfter, or send a new code.