POST /v1/otp/verify
تایید رمز یکبار مصرف
بررسی کد وارد شده توسط کاربر و تبدیل verification به وضعیت تایید شده.
خلاصه endpoint
POSThttps://api.navidaa.ir/v1/otp/verify
همان API key که ارسال را ساخته باید برای verify استفاده شود. پاسخ ۲۰۰ فقط یعنی تلاش بررسی شده است؛ نتیجه واقعی با verified و reason مشخص می شود.
درخواست
| فیلد | وضعیت | توضیح |
|---|---|---|
verification_id | ضروری | UUID برگشتی از ارسال. |
code | ضروری | کد عددی ۴ تا ۸ رقمی که کاربر وارد کرده است. |
نتیجه ها
| reason | verified | معنا |
|---|---|---|
ok | true | کد درست است و verification تایید شده است. |
invalid_code | false | کد اشتباه است. در جریان زنده API عمومی، همین تلاش اشتباه fallback های بعدی را لغو می کند. |
expired | false | مهلت verification تمام شده است. |
locked | false | بعد از ۵ تلاش اشتباه، session قفل شده است. |
already_verified | false | این verification قبلا با موفقیت مصرف شده است. |
خطاها
| HTTP | کد | زمان رخ دادن | رفتار پیشنهادی |
|---|---|---|---|
| 404 | not_found | شناسه verification برای این حساب پیدا نشده است. | شناسه برگشتی از send و کلید API همان حساب بررسی شود. |
| 422 | validation_error | verification_id UUID معتبر نیست یا code عددی ۴ تا ۸ رقمی نیست. | قبل از ارسال، مقدارها در فرم یا سرویس اعتبارسنجی شوند. |
| 401 | unauthenticated | کلید API نامعتبر، حذف شده یا منقضی است. | کلید فعال همان حساب استفاده شود. |
| 403 | test_key_not_allowed | کلید تست روی endpoint live استفاده شده است. | برای کلید تست از مسیرهای سندباکس استفاده شود. |
نمونه کد
import requests
result = requests.post(
"https://api.navidaa.ir/v1/otp/verify",
headers={
"Authorization": "Bearer navidaa_xxx",
"Content-Type": "application/json",
},
json={
"verification_id": "550e8400-e29b-41d4-a716-446655440000",
"code": "123456",
},
timeout=10,
).json()
if result["verified"]:
print("user verified")
else:
print("not verified:", result["reason"])