Skip to main content
POST
/
templates
Create Template
curl --request POST \
  --url https://api.firma.dev/functions/v1/signing-request-api/templates \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Employment Contract Template",
  "document": "JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291c...",
  "description": "Standard employment contract for new hires",
  "expiration_hours": 168,
  "settings": {
    "allow_editing_before_sending": false,
    "attach_pdf_on_finish": true,
    "allow_download": true
  }
}
'
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "description": "<string>",
  "document_url": "<string>",
  "document_url_expires_at": "2023-11-07T05:31:56Z",
  "credit_cost": 1,
  "date_created": "2023-11-07T05:31:56Z",
  "date_changed": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://docs.firma.dev/llms.txt

Use this file to discover all available pages before exploring further.

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
name
string
required

Template name

Maximum string length: 255
Example:

"Employment Contract Template"

document
string<byte>
required

Base64-encoded PDF document. Maximum size: 20MB. The API will automatically extract the page count from the document.

Example:

"JVBERi0xLjQKJeLjz9MKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291c..."

description
string

Template description

Example:

"Standard employment contract for new hires"

expiration_hours
integer
default:168

Hours until signing request expires

Example:

168

settings
object

Response

Template created successfully

id
string<uuid>

Unique identifier for the template

name
string

Template name

Maximum string length: 255
description
string | null

Template description

document_url
string<uri>

Pre-signed URL to the PDF document. This is a time-limited signed URL for secure access - see document_url_expires_at for expiration time. Initial URLs are valid for 7 days; refreshed URLs are valid for 1 hour. Request a new template retrieval to get a fresh URL if expired.

document_url_expires_at
string<date-time> | null

ISO 8601 timestamp when the document_url will expire. After this time, the URL will return an access denied error. Fetch the template again to receive a fresh signed URL.

credit_cost
integer
default:1

Number of credits consumed when a signing request is sent from this template. Minimum value is 1.

Required range: x >= 1
date_created
string<date-time>

Template creation timestamp

date_changed
string<date-time>

Template last update timestamp