Skip to main content
POST
/
signing-requests
curl --request POST \
--url https://api.firma.dev/functions/v1/signing-request-api/signing-requests \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Employment Contract - John Doe",
"description": "New hire employment agreement",
"document": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC...",
"expiration_hours": 168,
"settings": {
"use_signing_order": false,
"allow_download": true,
"attach_pdf_on_finish": true
},
"recipients": [
{
"first_name": "John",
"last_name": "Doe",
"email": "john@example.com",
"designation": "Signer",
"order": 1
}
],
"fields": [
{
"type": "signature",
"position": {
"x": 10,
"y": 80,
"width": 30,
"height": 10
},
"page_number": 1,
"required": true
}
]
}'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "description": "<string>",
  "document_url": "<string>",
  "document_page_count": 2,
  "status": "not_sent",
  "expiration_hours": 168,
  "settings": {
    "use_signing_order": true,
    "allow_download": true,
    "attach_pdf_on_finish": true,
    "allow_editing_before_sending": false
  },
  "template_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "date_created": "2023-11-07T05:31:56Z",
  "date_sent": "2023-11-07T05:31:56Z",
  "date_finished": "2023-11-07T05:31:56Z",
  "date_cancelled": "2023-11-07T05:31:56Z",
  "expires_at": "2023-11-07T05:31:56Z"
}

Authorizations

Authorization
string
header
required

API key for authentication. Use your API key directly without any prefix (e.g., 'your-api-key'). Bearer prefix is optional but not required.

Body

application/json
  • Option 1
  • Option 2

Document-based creation - upload a PDF document

name
string
required

Name for the signing request

Maximum length: 255
document
string<byte>
required

Base64-encoded PDF document. Page count will be automatically extracted. Maximum size: 20MB.

description
string

Optional description

expiration_hours
integer
default:168

Hours until expiration (default: 168 = 7 days)

Required range: x >= 1
settings
object

Signing request settings (allow_editing_before_sending will be set to true automatically)

recipients
object[]

Recipients for this signing request

fields
object[]

Fields to be completed in the document

reminders
object[]

Reminders to send before expiration

Response

Signing request created successfully

id
string<uuid>

Unique identifier for the signing request

name
string

Signing request name

Maximum length: 255
description
string | null

Signing request description

document_url
string<uri>

URL to the PDF document

document_page_count
integer

Number of pages in the document

Required range: x >= 1
status
enum<string>

Current status of the signing request

Available options:
not_sent,
in_progress,
finished,
cancelled,
deleted,
expired
expiration_hours
integer
default:168

Hours until signing request expires (default: 168 = 7 days)

Required range: x >= 1
settings
object
template_id
string<uuid> | null

ID of template used to create this signing request

date_created
string<date-time>

Signing request creation timestamp

date_sent
string<date-time> | null

Timestamp when the signing request was sent

date_finished
string<date-time> | null

Timestamp when all signatures were completed

date_cancelled
string<date-time> | null

Timestamp when signing request was cancelled

expires_at
string<date-time> | null

Expiration timestamp