Steps
- Create or select a template
- Create a signing request referencing the template
- Add recipients and define roles and signing order
- Optionally embed the signing view or send email invites
Example (high level)
Create a signing request from a template (API)
Endpoint: POST /templates/template_id/create-signing-requestExample curl (create request from template):
Document
resource including id
(the signing_request_id) and document_url
where appropriate.
Create a signing request (server example) — Node (fetch)
Create a signing request (server example) — Python (requests)
Sending (email invites)
Once you have a signing request ID, you can call POST /signing-requests/signing_request_id/send to send emails to all recipients. Optionally include acustom_message
in the body.
Example:
Embedding the signing view
The public signing UI is available at the pattern:https://app.firma.dev/signing/{signing_request_user_id}
Notes:
- The
signing_request_user_id
is typically returned as part of therecipients
object or as a per-recipient token; check the response from GET /signing-requests/id for recipient-level signing links or tokens. - If the API returns a direct
document_url
orembed_url
, use that. If not, generate an ephemeral signing link server-side and return it to the frontend.
Example — fetch signing details and render iframe
Edge cases & tips
- If you have multiple signers, ensure
order
is set whenuse_signing_order
is true on the template/document. - For audit and compliance, download the final PDF via GET /signing-requests/signing_request_id/download after completion.
- Use webhooks (see the Webhooks guide) to react to signing events instead of polling.