Verify (2FA)
PindoVerify sends a PIN to a user's phone and validates that they received it, supporting two-factor authentication, passwordless sign-in, and number validation.
Generate a PIN
POST/v1/sms/verify
Send a PIN to a phone number under your brand name.
| Field | Type | Description |
|---|---|---|
| brandrequired | string | Your brand name, shown to the user in the PIN message. |
| numberrequired | string | Recipient in international format, e.g. +250781234567. |
curl -X POST \
https://api.pindo.io/v1/sms/verify \
-H 'Authorization: Bearer your-token' \
-H 'Content-Type: application/json' \
-d '{
"brand": "PindoTest",
"number": "+250781234567"
}'On success, you'll receive a request_id. Hold on to it to check the code later.
{
"message": "success",
"network": "63510",
"remaining_balance": 487.49,
"request_id": 4
}Verify a PIN
POST/v1/sms/verify/check
Submit the code your user entered along with the request_id from the previous step.
| Field | Type | Description |
|---|---|---|
| coderequired | string | The PIN the user entered. |
| request_idrequired | integer | The id returned when the PIN was generated. |
curl -X POST \
https://api.pindo.io/v1/sms/verify/check \
-H 'Authorization: Bearer your-token' \
-H 'Content-Type: application/json' \
-d '{ "code": "752623", "request_id": 4 }'{
"message": "success",
"remaining_balance": 487.49,
"request_id": 4
}Status & cancel
Check the current state of a verification with GET /v1/sms/verify/status/:request_id, or cancel one in progress with PUT /v1/sms/verify/cancel/:request_id.
curl -X GET \
https://api.pindo.io/v1/sms/verify/status/:request_id \
-H 'Authorization: Bearer your-token'Try it
Interactive PlaygroundGenerate a PIN then verify it — two-step flow
→
cURL
curl -X POST \
https://api.pindo.io/v1/sms/verify \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"brand": "PindoTest",
"number": "+250781234567"
}'