API reference
Send qualified signature OTP
/api/v4/sign/qualified/otp
Send the one-time code required by POST /api/v4/sign/qualified.
channel is email, sms, or whatsapp. email always identifies the signer and must match signer.email on the signature call.
Email uses the same fields as POST /api/notifications/email: subject (max 255) and body (HTML), plus optional attachments (max 10, each with filename and content_base64).
SMS and WhatsApp use the same fields as POST /api/notifications/sms: phone_number (E.164, starts with +) and message (max 255 once the code is inserted).
Write {{otp_code}} where the generated code should appear. {{expires_minutes}} is optional. dev_otp_code is only present when the server is configured to return it.
Path parameters
This endpoint has no path parameters.
Query parameters
This endpoint has no query parameters.
Request body
| Field | Type | Description |
|---|---|---|
channel Required | string | email, sms, or whatsapp.e.g. "email" |
email Required | string | Signer email. Binds the code and must match signer.email on the signature call. For channel=email the message is sent here.e.g. "awa.kone@example.com" |
subject | string | Email subject (max 255). Required when channel is email.e.g. "Votre code de signature" |
body | string | Email HTML body. Required when channel is email. Must contain {{otp_code}}.e.g. "<p>Votre code est {{otp_code}}.</p>" |
attachments | array | Optional email attachments (max 10). Same shape as POST /api/notifications/email. |
phone_number | string | E.164 number. Required when channel is sms or whatsapp.e.g. "+2250700000000" |
message | string | SMS or WhatsApp text (max 255 after the code is inserted). Must contain {{otp_code}}.e.g. "Votre code est {{otp_code}}" |
Responses
| Status | Meaning |
|---|---|
| 200 | Code sent |
| 401 | Missing or invalid Bearer token. |