Documentation version: Latest (v1)
API endpoint
Send email verification code
Server key protected email verification flow with hosted verify URL in response.
POST/api/v1/email-verification/send
Auth: Bearer API key with server_otp scope
Required headers
| Header | Required | Value | Description |
|---|---|---|---|
| Authorization | Yes | Bearer <token> | API key, server OTP key, or public OTP token depending on endpoint. |
| Content-Type | Yes | application/json | All POST requests expect JSON payloads. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Recipient email to verify. | |
| subject | string | No | Verification email subject. |
| verificationLine | string | No | Instruction text line. |
| expiresInSeconds | number | No | Expiry window. |
| otpDigits | number | No | Code length 4-10. |
Code examples (all supported languages)
Snippets use placeholder tokens. Replace them with real credentials from your dashboard.
curl -X POST "https://risumail.risu.in/api/v1/email-verification/send" \
-H "Authorization: Bearer YOUR_SERVER_OTP_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com","expiresInSeconds":900}'Response schema
Canonical schema inferred from the documented success payload. Copy this block when generating typed clients.
{
"type": "object",
"required": [
"success",
"data"
],
"properties": {
"success": {
"type": "boolean"
},
"data": {
"type": "object",
"required": [
"sessionId",
"expiresAt",
"email",
"sent",
"hostedVerifyUrl"
],
"properties": {
"sessionId": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"email": {
"type": "string"
},
"sent": {
"type": "boolean"
},
"hostedVerifyUrl": {
"type": "string"
}
}
}
}
}Success response example
{
"success": true,
"data": {
"sessionId": "ev_01J...",
"expiresAt": "2026-04-19T11:54:00.000Z",
"email": "user@example.com",
"sent": true,
"hostedVerifyUrl": "https://app.example.com/verify-email?sessionId=ev_01J..."
}
}Common error cases
| Status | Code | When |
|---|---|---|
| 403 | SCOPE_REQUIRED | server_otp scope missing. |
| 429 | RATE_LIMITED | Verification rate exceeded. |
Implementation notes
- Preferred for account-signup verification and backend identity checks.