By default, Lumin sends signers an email with a link to complete their signature. Embedded signing lets you bypass or supplement that email flow — you generate a signing link via the API and present it inside your own web app, mobile app, or customer portal. When to use embedded signing:Documentation Index
Fetch the complete documentation index at: https://developers.luminpdf.com/llms.txt
Use this file to discover all available pages before exploring further.
- You want signers to sign without leaving your product.
- Your users are already authenticated in your app and you want a seamless in-context experience.
- You need to control exactly when and how the signing prompt is presented.
- You want to combine embedded signing with email delivery — the two approaches can be used together.
How it works
Send the document for signing as usual using
POST /signature_request/send. You do not need to disable email notifications — embedded signing works alongside email delivery.curl -X POST https://api.luminpdf.com/v1/signature_request/send \
-H "Authorization: API-key <your-key>" \
-H "Content-Type: application/json" \
-d '{
"title": "Rental Agreement",
"file_url": "https://example.com/rental-agreement.pdf",
"expires_at": 1927510980694,
"signing_type": "SAME_TIME",
"signers": [
{ "email_address": "[email protected]", "name": "Alex Tenant" }
]
}'
{
"signature_request": {
"signature_request_id": "696d007913f3b8...",
"created_at": "1768751225657",
"status": "WAITING_FOR_PROCESSING"
}
}
Call
POST /signature_request/{id}/signing-link with the signer’s email address to get a unique, time-limited signing URL for that signer.curl -X POST https://api.luminpdf.com/v1/signature_request/696d007913f3b8.../signing-link \
-H "Authorization: API-key <your-key>" \
-H "Content-Type: application/json" \
-d '{
"signer_email": "[email protected]"
}'
{
"view_url": "https://sign.luminpdf.com/auth?mode=view-contract&token=8647b08b...",
"signer_email": "[email protected]",
"status": "NEED_TO_SIGN"
}
Signer status values
Thestatus field in the signing-link response reflects the signer’s current state at the time of the request.
| Status | Meaning |
|---|---|
NEED_TO_SIGN | The signer has not yet signed. The view_url is ready to use. |
WAITING_FOR_OTHERS | Ordered signing is in use and it is not yet this signer’s turn. |
APPROVED | The signer has already completed signing. |
REJECTED | The signer declined to sign. |
WAITING_FOR_PROCESSING | The request is still being prepared. Retry after a short delay. |
FAILED | A processing error occurred. Check the signature request details for reason. |
You can call the signing-link endpoint for a signer whose status is
APPROVED
— it will still return a view_url so the signer can review the completed
document.Generating links for multiple signers
Call the endpoint once per signer, passing each signer’s email address. Each call returns an independentview_url.
Email delivery and embedded signing together
Embedded signing does not suppress Lumin’s email notifications. If you want both:- Leave email delivery on — signers can choose to sign via email or via your embedded link.
- If you want to handle the experience entirely within your app, inform signers through your own messaging and rely on the signing link rather than the Lumin email.