POSThttps://core-api.heysadie.ai/whatsapp/onboarding-sessions/{id}/resend-code
id success data status otpAttempts metadata timestamp version path error code message details fieldResend verification code
Resend the WhatsApp registration/verification call for a `verifying` session. Meta re-triggers the automated voice call that reads the code; Sadie captures it exactly as in the normal flow. The session is unchanged (stays `verifying`) and `otpAttempts` reflects the durable per-session request_code budget consumed so far. Errors: - `409 WHATSAPP_RESEND_NOT_ALLOWED` — the session is not `verifying`, or the number is not yet attached. - `429 WHATSAPP_RESEND_TOO_SOON` — a verification call was requested within the last 60 seconds; `details.retryAfterSeconds` gives the remaining cooldown. The session STAYS `verifying` and no attempt budget is consumed. - `409 WHATSAPP_OTP_ATTEMPTS_EXHAUSTED` — the per-session request_code budget is spent (the session is left `verifying`, not failed). - `429 WHATSAPP_OTP_REQUEST_LIMIT` — Meta's registration/request_code rate limit; `details.retryAfterHours` gives the cooldown. The session STAYS `verifying`. - `502 WHATSAPP_RESEND_FAILED` — a non-rate-limit Graph/network failure (retryable). - `404` — cross-tenant / unknown id (anti-enumeration).
Try it in the API ExplorerExample request
curl -X POST "https://core-api.heysadie.ai/whatsapp/onboarding-sessions/ONBOARDING_SESSION_ID/resend-code" \
-H "Authorization: ApiKey YOUR_API_KEY"Authentication
Authenticate with an API key in the Authorization header using the ApiKey scheme — see Authentication for how keys work and where to get them.
AuthorizationstringrequiredAPI key in the ApiKey scheme: ApiKey YOUR_API_KEY. Tenant keys authorize their own tenant; organization keys can act on any tenant in the organization.
X-Tenant-Idstring (uuid)optionalRequired when authenticating with an organization key — selects the tenant the request acts on. Omit with tenant keys.
Request
Path parameters
idstringrequiredThe resource's UUID.
Responses
successbooleanrequireddataobjectoptionalShow 2 child properties
statusstringrequiredAlways `verifying` on success (the session is unchanged).
otpAttemptsnumberoptionalThe durable request_code attempt count after this resend reserved a slot (capped at the per-session budget).
metadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional400
successbooleanrequirederrorobjectoptionalShow 3 child properties
codeenumrequired"VALIDATION_ERROR"messagestringrequireddetailsobject[]optionalShow 2 item properties
fieldstringrequiredmessagestringrequiredmetadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional401
successbooleanrequirederrorobjectoptionalShow 2 child properties
codeenumrequired"UNAUTHORIZED"messagestringrequiredmetadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional403
successbooleanrequirederrorobjectoptionalShow 2 child properties
codeenumrequired"FORBIDDEN"messagestringrequiredmetadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional404
successbooleanrequirederrorobjectoptionalShow 2 child properties
codeenumrequired"RESOURCE_NOT_FOUND"messagestringrequiredmetadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional500
successbooleanrequirederrorobjectoptionalShow 2 child properties
codeenumrequired"INTERNAL_SERVER_ERROR"messagestringrequiredmetadataobjectoptionalShow 3 child properties
timestampstringrequiredversionstringrequiredpathstringoptional