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

HeaderRequiredValueDescription
AuthorizationYesBearer <token>API key, server OTP key, or public OTP token depending on endpoint.
Content-TypeYesapplication/jsonAll POST requests expect JSON payloads.

Request body

FieldTypeRequiredDescription
emailstringYesRecipient email to verify.
subjectstringNoVerification email subject.
verificationLinestringNoInstruction text line.
expiresInSecondsnumberNoExpiry window.
otpDigitsnumberNoCode 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

StatusCodeWhen
403SCOPE_REQUIREDserver_otp scope missing.
429RATE_LIMITEDVerification rate exceeded.

Implementation notes

  • Preferred for account-signup verification and backend identity checks.