Version Summary
v1.31.0
Release type: Minor Release Download OpenAPI SpecOpt-in signing-request email language
New optionallanguage field on the signing-request create and update endpoints — POST /signing-requests, POST /signing-requests/create-and-send, and PATCH / PUT /signing-requests/{id}. Set it to one of en, es, it, pt, fr, de, el, ru, pl, and every signer-facing email for that signing request — invitation, reminders, OTP verification, completion and CC, expiry, cancellation, and decline — along with its date formatting, uses that language.
The field is nullable and additive: language controls the signer-facing emails for the whole request.
Migration Guide
No action required. The field is optional — omit it or sendnull and behavior is unchanged: emails fall back to the workspace language, then the company language, then en. Existing signing requests are unaffected.
v1.30.0
Release type: Minor Release Download OpenAPI SpecRetrieve signer marks as images
Four new read-only endpoints return a signer’s captured marks individually, separate from the signed PDF:GET /signing-requests/{id}/signers/{signer_id}/signature— the signer’s adopted signatureGET /signing-requests/{id}/signers/{signer_id}/initials— the signer’s adopted initialsGET /signing-requests/{id}/signers/{signer_id}/stamps/{field_id}— a stamp for a specific stamp fieldGET /signing-requests/{id}/signers/{signer_id}/files/{field_id}— a file the signer uploaded to a file field
data:image/png;base64,...), usable directly in an <img src>. The file endpoint returns a short-lived (300 second) pre-signed download URL. A signer adopts one signature and one initials, applied to all their fields of that type, so those endpoints take no field_id; stamps and files are per-field and require field_id (obtain field IDs from GET /signing-requests/{id}/fields).
By default a signer-ID frame is overlaid on returned images; pass include_frame=false for the bare mark. These endpoints are rate limited to 60 requests per minute. The legal validity of a signature rests on the sealed PDF and its completion certificate, not on a retrieved image.
Migration Guide
No breaking changes. These are new additive endpoints; existing integrations require no changes.v1.29.0
Release type: Minor Release Download OpenAPI SpecTwo-step document upload
A newPOST /documents endpoint enables uploading documents larger than the inline request size limit. Instead of sending a base64-encoded document in the request body, you can now:
- Call
POST /documentswith the file metadata to receive a presigned upload URL PUTthe raw file bytes directly to the upload URL (supports up to 50MB)- Pass the returned
document_idin yourPOST /signing-requestsorPOST /signing-requests/create-and-sendrequest
document field.
New request field: document_id
The POST /signing-requests/create-and-send endpoint now accepts document_id as an alternative to document and template_id. All three fields are mutually exclusive - provide exactly one.
Document size limit increase
The maximum document size has been increased from 20MB to 50MB when using the two-step upload flow.Migration Guide
No breaking changes. Existing integrations using inlinedocument or template_id continue to work unchanged. To upload larger documents, adopt the two-step flow via POST /documents.
v1.28.0
Release type: Minor Release Download OpenAPI SpecTypeScript SDK code samples
Every endpoint in the API reference now includes a copy-paste code sample for the official@firma-dev/sdk TypeScript client, showing the exact typed call for that operation. See the new TypeScript SDK guide to install the client and get started.
Reference surface changes
The following endpoints were removed from the API reference because they are not part of the documented partner API surface:Migration Guide
No changes are required for integrations using the partner API endpoints documented here. If you were referencing the embedded signing-request endpoints, use the Embeddables guides instead; the embedded editor continues to rely on those endpoints. If you were using the legacy/documents endpoints, migrate to the template (POST /templates) and signing request (POST /signing-requests) endpoints.
v1.27.0
Release type: Patch Release Download OpenAPI SpecSettings fields now documented in responses
This release documents settings fields that the API already returns. All changes are additive and backward-compatible — no API behavior changed, only the OpenAPI specification was updated to match what the endpoints already send.Signing request settings
The settings object returned by the signing request endpoints (POST /signing-requests, POST /signing-requests/create-and-send, GET /signing-requests, GET /signing-requests/{id}, PUT /signing-requests/{id}, PATCH /signing-requests/{id}) now documents four additional fields:
Template settings
The settings object returned by the template endpoints (POST /templates, PUT /templates/{id}, PATCH /templates/{id}, GET /templates, GET /templates/{id}, POST /templates/{id}/replace-document) now documents the show_qr_code field. Template settings cover the same options as signing request settings except the signer-identity fields (identity_editable_fields, notify_identity_change_email), which apply only to signing requests.
Cancel and resend responses
New schemas
Two new schemas split the settings shapes that differ across endpoints, so each response documents exactly the fields it returns:Migration Guide
No breaking changes. These are documentation-only additions describing fields the API already returns. Existing integrations are unaffected. If you parse settings objects, you can now rely on the documentedshow_qr_code, allow_presigning_download, identity_editable_fields, and notify_identity_change_email fields, and on emails_sent / recipients_failed in cancel and resend responses.
v1.26.0
Release type: Minor Release Download OpenAPI SpecWorkspace settings: four new fields
Four fields are now available onGET /workspace/{workspace_id}/settings and PUT /workspace/{workspace_id}/settings:
Button label overrides structure
common.finish, signing.approveAndFinish, signing.nextRequiredField, signing.saveAndFinishLater, signing.decline.confirm, signing.decline.title, signing.decline.cancel, signing.finishAnyway, signing.goBack.
Values are sanitized server-side (HTML stripped, max 200 characters). Empty or whitespace-only values are ignored.
v1.25.2
Release type: Patch Release Download OpenAPI SpecStricter validation for template field overrides
When creating a signing request from a template, any provided field that does not match a field in that template is now rejected with400 VALIDATION_ERROR instead of being silently ignored. Previously such a field was dropped and the request still succeeded, so a mistyped identifier meant the field simply never appeared on the document with no error.
A provided field matches a template field by template_field_id, variable_name, or variable_defined_name. The error names the offending field(s):
POST /signing-requests and POST /signing-requests/create-and-send.
Migration: ensure every field you send on a template-based create references an existing template field. If you were relying on extra/unmatched fields being ignored, remove them.
Case-insensitive field types
Fieldtype values are now normalized case-insensitively. "Initials", "Signature", "TextArea", etc. resolve to their canonical type (initial, signature, text_area) instead of being rejected as invalid. Lowercase values are unchanged.
v1.25.1
Release type: Patch Release Download OpenAPI SpecAccurate error responses for create-and-send
POST /signing-requests/create-and-send previously returned a generic 500 whenever the send step rejected a request, hiding the real reason. It now returns the client-actionable status (400, 402, or 422) with a machine-readable code and the relevant detail:
400VALIDATION_ERROR— request or send validation failed (e.g. a signer missing required information); the response includesvalidation_errors,field_errors, ordetailsidentifying what to fix.402INSUFFICIENT_CREDITS— not enough credits to send;current_creditsreports the balance.422RECIPIENT_EMAIL_SUPPRESSED(new) — a recipient’s email address is suppressed (previously bounced or marked as spam) and cannot be sent to.
500. When the send step fails, the partially-created signing request is rolled back, so no orphaned draft is left behind.
Migration guide: No action required for clients that already treat any non-2xx response as a failure. If you previously special-cased the opaque 500 from this endpoint, switch to branching on the HTTP status / code: 400 and 422 mean “fix the request, then retry,” 402 means “add credits.”
v1.25.0
Release type: Minor Release Download OpenAPI SpecEditor Brand Colors
The appearance settings now include five additional brand colors that theme the embedded editors (the template and signing-request editors you embed on your own pages):color_accent— accent color for highlights, active tabs, switches, and primary controls in the editor chrome.color_accent_fg— foreground (text/icon) color shown on accent surfaces.color_canvas— the document-canvas surround color behind the page.color_muted— muted surface color (separators, hover states, switch tracks).color_muted_fg— muted text color.
color_* fields:
GET/PUT /company/settingsandGET/PUT /workspace/{workspace_id}/settingsaccept and return all five new fields. Each is a nullable#rrggbbhex string;nullmeans inherit (workspace → company → Firma default).- The resolved
color_paletteobject returned in embedded-editor payloads now contains eleven keys (the six existing plusaccent,accent_fg,canvas,muted,muted_fg). When unset,muteddefaults to the resolvedcardcolor andmuted_fgis derived for readability, so the palette is always fully populated.
color_* fields (valid #rrggbb hex, or null to clear) to the company- or workspace-settings endpoint.
v1.24.0
Release type: Minor Release Download OpenAPI SpecWorkspace Test API Keys
Workspaces now expose a test-mode API key alongside the existing live key. Requests authenticated with a test key do not consume credits and produce test-flagged, watermarked signing requests.POST /workspacesnow provisions a live + test key pair and returns bothapi_key(live) and the newtest_api_keyfield.GET /workspaces/{id}andGET /workspacesnow return bothapi_keyandtest_api_key.POST /workspaces/{id}/api-key/regenerateand/api-key/expireaccept an optionalkey_type("live"or"test", default"live"). Regenerating one key type no longer affects the other.- Existing workspaces created via the API are backfilled with a test key.
api_key continue to work unchanged.
Migration guide: No action required. To use test mode, read test_api_key from any workspace create/get response and send it as the Authorization key for requests you want to run in test mode.
v1.23.0
Release type: Minor Release Download OpenAPI SpecSigner Terms
New Signer Terms endpoints let you manage custom signer consent statements at the company and workspace levels:GETendpoints list company and workspace signer termsPUTendpoints create or update per-language company and workspace signer termsDELETEendpoints remove company and workspace signer terms
Company Settings
NewGET /company/settings and PUT /company/settings endpoints expose company settings, including the terms acceptance gate.
Schema Changes
- Company settings schema: added
require_terms_acceptance(boolean) - Workspace settings schema: added
require_terms_acceptance(boolean, nullable). Usenullto inherit the company setting.
Migration Guide
No breaking changes. This release is additive, and no action is required for existing integrations.v1.22.1
Release type: Patch Release Download OpenAPI SpecEmail Domain Deletion
DELETE /company/domains/{id} and DELETE /workspace/{workspace_id}/domains/{id} now succeed when the target is the workspace’s primary domain or its only domain. Previously these returned 400 "Cannot delete primary domain". After deletion, outbound email falls back to the company default sender, or the platform default if none is set. To use a custom sending domain again, add and verify a new domain, then set it as primary.
Migration Guide
No breaking changes. The400 "Cannot delete primary domain" and “cannot delete the only domain” responses are removed from both DELETE domain endpoints; they now return 200 in those cases. Integrations that special-cased that 400 can drop the handling.
v1.22.0
Release type: Minor Release Download OpenAPI SpecDelete Signing Request Endpoint
NewDELETE /signing-requests/{id} endpoint for removing unsent (draft) signing requests. This endpoint only works on signing requests that have not been sent yet. For sent signing requests, use the existing cancel endpoint instead.
Response:
200withsigning_request_idanddeleted_onon success409 ALREADY_SENTif the signing request has been sent404if not found or already deleted
New Webhook Event
signing_request.deletedfires when a signing request is deleted via the API
Migration Guide
No breaking changes. The newDELETE method on /signing-requests/{id} is purely additive. Existing integrations are unaffected.
v1.21.1
Release type: Patch Release Download OpenAPI SpecWorkspace Webhook Management
ThePATCH /workspaces/{id} endpoint now supports two new fields for managing workspace-level webhooks via the API:
webhook_enabled(boolean) - Enable or disable workspace-level webhooks. When set totruefor the first time, a webhook secret is automatically generated.ignore_company_webhooks(boolean) - Iftrue, company-level webhooks will not fire for events in this workspace.
Schema Changes
- PATCH /workspaces/ request body: added
webhook_enabled(boolean, optional) andignore_company_webhooks(boolean, optional) - PATCH /workspaces/ response: now includes
webhook_enabled,webhook_secret,webhook_secret_rotated_at,webhook_secret_created_at, andignore_company_webhooks
Migration Guide
No breaking changes. Existing workspace webhook configurations are unaffected. UsePATCH /workspaces/{id} with webhook_enabled: true to enable workspace webhooks via API instead of the dashboard.
v1.21.0
Release type: Minor Release Download OpenAPI SpecNew Settings
email_local_part(string, nullable) - Customize the local-part (before the @) of outgoing signing emails when using a verified custom domain. Available at two levels:- Company settings (
GET/PATCH /company) - Sets the default for all workspaces. String with default"support". - Workspace settings (
GET/PUT /workspace/{id}/settings) - Overrides company default. Nullable string (null inherits from company).
- Company settings (
{email_local_part}@{your-custom-domain}. For example, setting email_local_part to "noreply" sends emails from noreply@yourdomain.com instead of support@yourdomain.com.
Validation: lowercase alphanumeric, dots, hyphens, and underscores. Must start and end with an alphanumeric character. 1-64 characters. Pattern: ^[a-z0-9]([a-z0-9._-]*[a-z0-9])?$
Schema Changes
- Company schema: added
email_local_part(string, default"support") - Workspace settings schema: added
email_local_part(string, nullable)
Migration Guide
No breaking changes. Existing configurations continue to send emails fromsupport@{domain} by default. Set email_local_part at the company or workspace level to customize the sender address.
v1.20.0
Release type: Minor ReleaseNew Settings
disable_guided_navigation(boolean, nullable) - Disable automatic scrolling to the next required field during signing. Available at four levels:- Company settings (
GET/PUT /company/settings) - Sets the default for all workspaces. Boolean (not nullable). - Workspace settings (
GET/PUT /workspace/{id}/settings) - Overrides company default. Boolean or null (null inherits from company). - Template (
POST/PATCH /templates) - Copied to signing requests created from this template. Boolean or null. - Signing request (
POST/PATCH /signing-requests) - Highest priority override. Boolean or null (null inherits from workspace/company).
- Company settings (
require_otp_verification: signing request level takes priority, then workspace, then company settings.
Schema Changes
- Company settings schema: added
disable_guided_navigation(boolean) - Workspace settings schema: added
disable_guided_navigation(boolean, nullable) - Template settings schema: added
disable_guided_navigation(boolean, nullable) - Signing request settings schema: added
disable_guided_navigation(boolean, nullable)
Migration Guide
No breaking changes. Existing signing requests and templates continue to work as before (auto-scroll enabled by default). To disable auto-scroll, setdisable_guided_navigation: true at the desired level.
Download OpenAPI Spec
v1.19.0
Release type: Minor ReleaseNew Endpoints
POST /company/logo- Upload a company logo image (PNG or JPEG, max 2MB). The logo appears on signing certificates and emails.DELETE /company/logo- Remove the company logo. Certificates fall back to the Firma default.POST /workspaces/{id}/logo- Upload a workspace-specific logo that overrides the company logo for that workspace.DELETE /workspaces/{id}/logo- Remove the workspace logo. Falls back to the company logo.
Schema Changes
- Workspace schema now includes
icon_url(string, nullable) - a publicly accessible URL to the workspace logo image - Company
icon_urlis now read-only in PATCH/PUT requests. Use the newPOST /company/logoendpoint to manage logos.
Migration Guide
- If you were setting
icon_urldirectly viaPATCH /companyorPATCH /workspaces/{id}, switch to the newPOST .../logoendpoints instead. Theicon_urlfield is no longer accepted in update request bodies. icon_urlin GET responses now returns a publicly accessible URL instead of an internal reference.
v1.18.0
Release date: May 5, 2026New Features
Identity Editable Fields
Signing requests now support per-field, per-signer identity editing. When configured, signers see a confirmation dialog before signing where they can review and edit specified identity fields (name, company, title, phone, address). New settings property:
Valid field keys:
name, company, title, phone, address
Per-recipient override via identity_editable_fields on the recipient object:
null- use request default[]- disabled for this signer["name", "company"]- custom fields for this signer
signing_request.recipient.identity_changed is now available as a standard webhook event. Subscribe to it in your webhook configuration to receive notifications when a signer modifies their identity during signing.
Editable Prefilled Data Fields
Prefilled data fields can now be optionally editable by signers. Previously, all fields withprefilled_data set were automatically locked as read-only. A new prefilled_editable property lets you control this behavior.
When prefilled_editable is true, the field value is still auto-populated from recipient data, but the signer can modify it during the signing process.
Available on:
- Template fields (
PATCH /templates/{id},PUT /templates/{id}) - Signing request fields (
POST /signing-requests,POST /signing-requests/create-and-send) - Field response objects (
GET /signing-requests/{id})
Field Value Source Validation
The API now validates that fields use only one value source at a time. Requests that combineread_only_value, prefilled_data, and explicit value on the same field will return a 400 VALIDATION_ERROR. This enforcement applies to:
POST /signing-requestsPOST /signing-requests/create-and-sendPATCH /templates/{id}(field creation and update)PUT /templates/{id}(field upsert)
Value Precedence
Whenprefilled_editable is true and both an explicit value and prefilled_data are set on a field, the explicit value takes precedence over the auto-populated recipient data.
Migration Guide
No breaking changes. New features are opt-in:- Identity editing is disabled by default (
identity_editable_fields: null). Set it to an array of field keys to enable. - Existing prefilled data fields remain locked (read-only) by default. Set
prefilled_editable: trueinformat_rulesto make them editable.
v1.17.0
Release date: April 30, 2026 Download OpenAPI SpecNew Features
Color Customization for Signing Experience
Six new nullable color fields allow you to customize the signing experience appearance at both company and workspace levels. Colors follow a 3-tier cascade: Firma defaults are used unless overridden at the company level, and company colors are used unless overridden at the workspace level. New fields on Company (GET /company, PUT /company, PATCH /company):
New fields on Workspace Settings (
GET /workspace/{workspace_id}/settings, PUT /workspace/{workspace_id}/settings):
The same six fields are available on workspace settings. Set a value to override the company default, or set null to inherit from the company.
ColorPalette Schema
A newColorPalette schema represents the resolved color palette applied to the signing experience. All values are hex color strings (#rrggbb).
Migration Guide
From v1.16.0 to v1.17.0: This is a non-breaking additive change. Existing integrations continue to work without modification.- All six color fields default to
null, which preserves the existing Firma default appearance. - To customize colors, set hex values on company settings (company-wide defaults) or workspace settings (per-workspace overrides).
- The color cascade is: Firma defaults -> Company overrides -> Workspace overrides. Each level only overrides fields that are explicitly set (non-null).
v1.16.0
Release date: April 27, 2026 Download OpenAPI SpecNew Features
Download Signing Request Document
A new endpoint retrieves a download URL for a signing request’s document. For completed signing requests, the URL points to the final signed PDF. For in-progress, cancelled, declined, or expired requests, the URL points to a partial snapshot PDF capturing the document state at the time of the last signer action. Endpoint:GET /signing-requests/{id}/download
Response fields:
Behavior by status:
Partial snapshots are generated on demand and cached. The first request may return
503 with a Retry-After header while the PDF is being generated — retry after the indicated interval.
URL expiry: The download_url is a pre-signed URL. Fetch the endpoint again after expires_at to get a fresh URL.
Partial Download Watermark Setting
A new workspace settingshow_partial_watermark controls whether partial PDF downloads include an “IN PROGRESS — NOT YET EXECUTED” diagonal watermark. Defaults to disabled. Can be set at the company level (default for all workspaces) or overridden per workspace.
Endpoint: PUT /workspace/{workspace_id}/settings
Migration Guide
From v1.15.3 to v1.16.0: This is a non-breaking additive change. Existing integrations continue to work without modification.- The download endpoint is purely opt-in. No existing behavior changes.
- Call
GET /signing-requests/{id}/download— handle503withRetry-Afteruntil the document is ready.
v1.15.3
Release date: April 27, 2026 Download OpenAPI SpecClean field aliases for GET /signing-requests//fields
The fields endpoint now returns clean, consistently-named fields alongside the existing database column names:
Additionally,
required, read_only, and date_signing_default now return booleans (true/false) instead of integers (0/1).
All deprecated fields remain in the response for backward compatibility and will be removed in a future major version.
Migration guide
Update your field parsing to use the new names. The deprecated names still work:v01.15.02
Release Date: April 23, 2026Download OpenAPI Spec
Bug Fixes
Create-and-Send Field Types Expanded
Thecreate-and-send endpoint’s fields schema was missing several field types that were already supported by the backend and available via anchor_tags. The following types have been added to the fields.type enum:
dropdown(withdropdown_optionsproperty)radio_buttonstext_areaurlfile
POST /signing-requests/create-and-send—fields[].typeenum
v01.15.01
Release Date: April 17, 2026Download OpenAPI Spec
Bug Fixes
Language Enum Updated
Added missingru (Russian) and pl (Polish) language codes to all language enum fields across the API. These languages were already supported by the platform but were missing from the OpenAPI specification, preventing API users from setting them via documented endpoints.
Affected endpoints:
PUT /workspace/{workspace_id}/settings—languagefieldPUT /companyandPATCH /company—languagefieldGET /email-templates/defaults—languagequery parameter
v01.15.00
Release Date: April 16, 2026Download OpenAPI Spec
New Features
Workspace-Scoped Webhooks
Webhooks can now be scoped to individual workspaces instead of applying company-wide. This allows different workspaces to have independent webhook configurations and signing secrets.workspace_idparameter on webhook creation — Pass an optionalworkspace_idwhen creating a webhook to scope it to a specific workspace. Omitting it creates a company-level webhook (existing behavior).workspace_idfilter on webhook listing — Filter the webhook list by workspace. When omitted, only company-level webhooks are returned.ignore_company_webhooksworkspace field — Workspaces can opt out of receiving company-level webhook events by setting this flag totrue.
Workspace Webhook Secret Management
Two new endpoints for managing workspace-level webhook signing secrets:POST /workspaces/{id}/webhooks/rotate-secret— Generates a new webhook signing secret for the workspace. The old secret remains valid for a 7-day grace period.GET /workspaces/{id}/webhooks/secret-status— Returns the status of the workspace webhook secret including creation date, rotation date, and grace period information.
Workspace Response Webhook Fields
The workspace GET response now includes webhook-related fields:webhook_enabled— Whether workspace-level webhooks are enabledwebhook_secret— The current webhook signing secretwebhook_secret_created_at— When the current secret was createdwebhook_secret_rotated_at— When the secret was last rotatedignore_company_webhooks— Whether the workspace ignores company-level webhook events
Changes
- Added optional
workspace_idparameter toPOST /webhooksandGET /webhooks - Added 5 new fields to the
Workspaceschema:webhook_enabled,webhook_secret,webhook_secret_created_at,webhook_secret_rotated_at,ignore_company_webhooks - Added 2 new endpoints:
POST /workspaces/{id}/webhooks/rotate-secret,GET /workspaces/{id}/webhooks/secret-status - SSRF protection applied to webhook URL validation
Migration Guide
From v01.14.00 to v01.15.00: This is a non-breaking additive change. Existing integrations continue to work without modification.- Company-level webhooks remain the default. The
workspace_idparameter is optional on both create and list endpoints. - Existing webhooks are unaffected. The new workspace fields on the workspace response default to
webhook_enabled: falseandignore_company_webhooks: false. - To adopt workspace webhooks, create a webhook with a
workspace_id, then use the workspace secret rotation endpoint to generate a signing secret for that workspace.
v01.14.00
Release Date: April 12, 2026Download OpenAPI Spec
New Features
Recipient Designations
Thedesignation field on signing request and template recipients now accepts three values: "Signer", "Approver", and "CC".
- Signer — Signs the document (existing behavior, remains the default)
- Approver — Approves the document using approval-specific fields. Approvers do not sign but must complete all assigned approval fields before the request can finish.
- CC — Receives a completed copy of the signed document. CC recipients cannot sign or have fields assigned to them.
Approval Field Types
Three new field types for Approver recipients:approval_signature— An approval stamp placed by the approverapproval_checkmark— An approval checkboxapproval_date— Auto-filled date when the approver approves
"Approver" designation.
CC Recipients
CC recipients are now supported across all create and update endpoints for both templates and signing requests. CC recipients appear in the recipient list but have no fields and do not participate in the signing or approval flow.Changes
- Expanded
designationenum from["Signer"]to["Signer", "Approver", "CC"]across 7 schemas - Added
approval_signature,approval_checkmark, andapproval_dateto field type enums across 10 schemas
Migration Guide
From v01.13.00 to v01.14.00: This is a non-breaking additive change. Existing integrations continue to work without modification.- New
designationvalues are opt-in. Omitting thedesignationfield defaults to"Signer", preserving existing behavior. - New field types are additive. All existing field type values remain valid and unchanged.
- If you integrate approval workflows, assign
"Approver"designation to the relevant recipients and use theapproval_*field types for their fields.
v01.13.00
Release Date: April 12, 2026Download OpenAPI Spec
New Features
Stamp Field Type
Newstamp field type for placing pre-configured image stamps or company seals on documents. Stamps are read-only PNG images set by the template or signing request creator, rendered at signing time with no signer interaction, and embedded in the final PDF.
Changes
- Added
stampto field type enums across all field-related schemas (templates, signing requests, create-and-send) - Updated field type descriptions to document stamp behavior
Migration Guide
From v01.12.01 to v01.13.00: This is a non-breaking additive change. Existing integrations are not affected.- If you create fields via the API, you can now use
"stamp"as a field type. Stamp fields should be set asread_only: truewith the stamp image as a PNG data URL inread_only_value. - Stamp fields are also supported in anchor tags. When using anchor tags, the stamp image should be provided via
read_only_valueas a PNG data URL.
v01.12.01
Release Date: April 2, 2026Download OpenAPI Spec
New Features
variable_defined_name on Field Responses
All API endpoints that return template or signing request fields now include a variable_defined_name property. This is the human-readable field_name from the custom field definition that the field is linked to.
Previously, fields linked to custom field definitions only exposed variable_name, which contains the internal identifier (e.g. custom_template_a1b2c3d4-...). The new variable_defined_name returns the name you originally defined (e.g. artist_name), making it straightforward to map fields in your integration without cross-referencing the custom fields endpoint.
Affected endpoints:
GET /templates(list and single)GET /templates/{id}/fieldsPOST /templates/{id}/replace-documentGET /signing-requests(list)GET /signing-requests/{id}/fieldsGET /documents(legacy)
variable_defined_name is null.
variable_defined_name as Input for Field Matching
When creating a signing request from a template via POST /signing-requests/create-and-send, you can now use variable_defined_name to target fields for overrides instead of the internal variable_name:
variable_name and variable_defined_name are accepted. variable_name takes precedence when both are provided.
No Breaking Changes
This is a non-breaking patch release. All existing API behavior is unchanged.v01.12.00
Release Date: March 26, 2026Download OpenAPI Spec
New Features
MCP Server Integration
Firma now supports the Model Context Protocol (MCP), allowing AI assistants like Claude to interact with the Firma API through natural language. The MCP server exposes Firma’s core API operations as tools that AI assistants can discover and call directly. Server URL:https://mcp.firma.dev/mcp
Authentication:
- API key authentication via the
Authorizationheader - OAuth 2.1 with PKCE for browser-based clients (Claude.ai, Claude Desktop)
- Workspaces — list, create, get, update
- Templates — full CRUD, duplicate, view fields/users/reminders
- Signing Requests — full CRUD, send, cancel, resend, audit trails
- Webhooks — full CRUD, test delivery
- Company — view and update company information
No Breaking Changes
This release adds no new API endpoints or schema changes. The OpenAPI specification is unchanged from v1.11.0.v01.11.00
Release Date: March 19, 2026Download OpenAPI Spec
New Features
File Upload Field Type
A newfile field type allows signers to upload file attachments. Supported across signing requests and templates.
- Signers can upload images (JPG, PNG) and/or PDF files depending on configuration
- Files are validated by magic bytes, not just file extension
- Maximum file size: 10MB
format_rules:
Anchor Tags for Automatic Field Placement
A newanchor_tags array on signing request creation enables automatic field placement using text markers embedded in PDF documents (e.g., {{SIGN_HERE}}). The anchor text is removed from the PDF after processing by default.
- Up to 100 anchor tags per request
- Only available for document-based creation (not template-based)
- Fields created from anchor tags are added alongside any manually specified fields
Example:
Field Background Color
All field types now support abackground_color property — a hex color string (e.g., #FFFDE7, #fff) useful for highlighting fields that need attention. Available on both standard fields and anchor tag definitions.
Schema Changes
New Schemas
Field / TemplateField / SigningRequestField
Field Type Enum
- Added
fileto the list of accepted field types
format_rules
- Now accepts
FileFormatRules(withacceptedFileTypes) in addition toDateFormatRulesand URL display text
Signing Request Creation
Breaking Changes
use_signing_order Default Changed
The use_signing_order setting default has changed from false to true. This means new signing requests will enforce signing order by default. When true, signers receive the document in sequence based on their order field. Set use_signing_order: false explicitly to preserve the previous behavior where all signers receive the document simultaneously.
Migration Guide
If you rely on the previous behavior where all signers receive documents simultaneously, explicitly setuse_signing_order: false when creating signing requests. Review any integration code that creates signing requests without specifying this field.
v01.10.00
Release Date: March 10, 2026Download OpenAPI Spec
New Features
Conditional Field Logic
Fields now support conditional rules for both required status and visibility. Two new nullable properties are available on field objects:required_conditions— When set, overrides the staticrequiredflag. The field is required only when the conditions evaluate to true based on other field values.visibility_conditions— When set, the field is hidden unless the conditions evaluate to true. Hidden fields are not validated on submission.
Supported operators:
is_filled, is_empty, equals, not_equals, contains, not_contains, greater_than, less_than, greater_than_or_equal, less_than_or_equal
Example — Make a field required only when another field is filled:
DOCX Document Support
All document upload endpoints now accept DOCX files in addition to PDF. DOCX files are automatically converted to PDF on upload. This applies to:- Template creation (
POST /templates) - Template document replacement (
POST /templates/{id}/replace-document) - Signing request creation (
POST /signing-requests) - Template/signing request updates (PUT and PATCH)
Audit Trail Endpoint
A new endpoint retrieves the complete audit trail for a signing request, combining admin actions (created, edited, sent, cancelled) and signer actions (viewed, signed, declined, downloaded). Events are sorted chronologically. Endpoint:GET /signing-requests/{id}/audit
Response fields:
Signature Frame Control
A newshow_signature_frame setting controls whether a visual frame with Signature ID is rendered around signatures in completed PDFs. Available at company, workspace, and signing request levels.
Values:
true— Show signature frame with Signature IDfalse— Hide signature framenull— Inherit from parent level
Force Remove Conditions on User Deletion
When deleting recipients whose fields are referenced by conditions in other fields, a newforce_remove_conditions boolean parameter controls behavior:
false(default) — The request is rejected with an error listing the dependent fieldstrue— Automatically removes the condition references and proceeds with deletion
Schema Changes
Field
New Schemas
SigningRequestSettings / WorkspaceSettings / Company
Template & Signing Request User Deletion
New Endpoints
Migration Guide
No breaking changes. All new features are additive:- Conditional field properties default to
null(no conditions) show_signature_framedefaults tonull(inherit, which is enabled by default)force_remove_conditionsdefaults tofalse(preserving existing rejection behavior)- DOCX support is transparent — existing PDF uploads continue to work unchanged
- The audit trail endpoint is purely additive
v01.09.00
Release Date: March 5, 2026Download OpenAPI Spec
New Features
OTP Email Verification
A newrequire_otp_verification setting allows you to require signers to verify their email address with a one-time code before accessing signing documents. This adds an extra layer of identity verification.
Where it’s available:
Values:
true— Require OTP verification before document accessfalse— Do not require OTP verificationnull— Inherit from parent level (workspace → company, signing request → workspace)
Replace Template Document
A new endpoint allows replacing a template’s PDF document while preserving all field placements. This is useful when you need to update a document (e.g., fixing a typo) without recreating all the field configurations. Endpoint:POST /templates/{id}/replace-document
Requirements:
- The replacement document must have the same page count as the original
- Page dimensions must match within 1pt tolerance
- Document must be provided as a base64-encoded PDF
Schema Changes
SigningRequestSettings
WorkspaceSettings
New Endpoints
Migration Guide
No breaking changes. Therequire_otp_verification field defaults to null (inherit), so existing behavior is unchanged. The replace document endpoint is purely additive.
v01.08.00
Release Date: March 3, 2026Download OpenAPI Spec
New Features
Email Templates API
A new Email Templates endpoint group allows you to customize the notification emails sent during the signing process. Templates can be configured at both company and workspace levels, with workspace-level templates overriding company-level defaults. Supported email types:
New endpoints:
Template hierarchy: Workspace templates → Company templates → Built-in defaults.
Templates support HTML bodies with placeholders like
{{signing_link}}, {{signer_name}}, etc. A warning is returned if the body does not contain {{signing_link}}.
Example:
Language Support
Newlanguage field added to both the Company and WorkspaceSettings schemas to support multi-language email templates.
Schema Changes
Timestamp Corrections
Timestamp field names have been corrected in the spec to match actual API responses:These are spec corrections only — the API responses have not changed. If your integration already handles the actual API response fields, no code changes are needed.
Company Schema
Template Schema (Expanded)
TheTemplate schema now includes inline recipients and fields when fetching a single template (GET /templates/{id}), reducing the need for separate API calls.
Signing Request Response Shapes
The monolithicSigningRequest schema has been split into endpoint-specific response shapes:
The list and create responses now include inline
recipients and fields arrays, and use standardized timestamp fields (created_date, sent_date, finished_date, etc.).
SigningRequestSettings
use_signing_order (boolean, default false) is now included in the settings object. Previously this was only available as a deprecated top-level integer field.
Reminder Schema
Webhook Schema
SendSigningRequestResponse (Corrected)
The spec now accurately reflects the actual response shape:WorkspaceSettings
v01.07.00
Release Date: February 25, 2026Download OpenAPI Spec
New Features
Hand-Drawn Only Signatures
A newhand_drawn_only setting allows you to require signers to hand-draw their signatures instead of using typed or font-based options.
Added to SigningRequestSettings schema:
This setting is available in all places where signing request settings are configured:
- Creating signing requests (
POST /signing-requests) - Creating and sending signing requests (
POST /signing-requests/create-and-send) - Comprehensive updates (
PUT /signing-requests/{id}) - Partial updates (
PATCH /signing-requests/{id}) - Template creation and updates
Schema Changes
Deprecated Legacy Settings Fields
TheSigningRequest schema now includes deprecated top-level integer fields that mirror the boolean settings object. These exist for backward compatibility and should not be used in new integrations:
Migration Guide
No breaking changes. Thehand_drawn_only setting defaults to false, preserving existing behavior. Deprecated top-level integer fields are purely additive.
v01.06.00
Release Date: February 12, 2026Download OpenAPI Spec
New Features
Split PDF Downloads
Completed signing requests now support downloading the signed document and audit trail certificate as separate files, in addition to the existing combined download. New fields onSigningRequest schema:
Notes:
- Only available when the split PDF feature has been applied to the signing request
- URLs expire after 1 hour — fetch the signing request again for a fresh URL
- Error fields return
"file_not_accessible"if the file path exists but the file is missing
Schema Changes
Field Type Normalization
Field type enums now accept both original and normalized forms across all schemas. The API normalizes inputs automatically:
Affected schemas:
Migration Guide
No breaking changes. Both old and new field type names are accepted. The split PDF download fields are purely additive.v01.05.00
Release Date: February 5, 2026Download OpenAPI Spec
New Features
Email Validation Warnings
Signing request endpoints now return non-blocking warnings when recipient email addresses have potentially invalid formats (e.g., unusual TLDs, missing dots). These warnings help identify potential delivery issues without failing the request. Affected Endpoints:
Example Response:
- Warnings are non-blocking — the request still succeeds
- Useful for flagging potential typos or invalid email domains
- Check the
warningsorwarningfield in the response to surface these to users
Migration Guide
No breaking changes. Email validation warnings are purely additive and do not affect existing integrations.v01.04.00
Release Date: January 31, 2026Download OpenAPI Spec
New Features
New Field Types
Three new field types have been added:
URL Field Details:
- Automatically set to
read_only: true - Use
read_only_valueto set the target URL - Use
format_rules.urlDisplayTextto customize the display text
PATCH Field Operations
Both Template and Signing Request PATCH endpoints now support single-field operations: Template PATCH (PATCH /templates/{id}):
- Can now update properties, a single user, OR a single field
- Include
fieldobject in request body - Include
field.idto update existing field, omit to create new
PATCH /signing-requests/{id}):
- Can now update properties, a single recipient, OR a single field
- Same field object structure as templates
Template User Matching for Recipients
When creating signing requests from templates, you can now usetemplate_user_id to explicitly match recipients to template users:
template_user_idis the preferred method for matchingorderremains available as a fallback
Schema Changes
Field Type Enum
Updated from:Recipient Schema
- Signing request creation now uses shared
Recipientschema reference - Added
template_user_idproperty for explicit template user matching
v01.03.00
Download OpenAPI SpecNew Features
Email Domains API
A complete new API category for configuring custom email domains for sending signing request emails: New Endpoints:GET /company/domains- List all company email domainsPOST /company/domains- Add a new email domainGET /company/domains/{id}- Get domain detailsDELETE /company/domains/{id}- Delete a domainPOST /company/domains/{id}/verify-ownership- Verify domain ownership via TXT recordPOST /company/domains/{id}/finalize- Complete domain setup with email providerPOST /company/domains/{id}/verify-dns- Verify SPF, DKIM, DMARC recordsPOST /company/domains/{id}/set-primary- Set primary sending domain
Domain- Email domain configuration with verification statusDomainDnsRecord- DNS record details for domain verification
Credit Cost Tracking
- Added
credit_costfield toTemplateschema - Number of credits consumed when sending - Added
credit_costfield toSigningRequestschema - Credits consumed when sent
Signing Request Declined Status
- Added
declinedtoSigningRequest.statusenum values - Added
date_declinedfield toSigningRequestschema
Schema Improvements
Template Fields
- Added
date_defaultfield for setting default date values (ISO 8601 format) - Enhanced
multi_group_iddescription: explains mutually exclusive field grouping for checkboxes/radio buttons - Added clarification that
page_numberis 1-indexed and must not exceed document page count
Signing Request Fields
- Enhanced
multi_group_iddescription with same improvements as template fields
v01.02.00
Download OpenAPI SpecEnhanced User Information
TemplateUser Schema Enhancements
Added comprehensive recipient information fields:first_name- Recipient first namelast_name- Recipient last namephone_number- Contact phone numberstreet_address- Street addresscity- Citystate_province- State or provincepostal_code- Postal/ZIP codecountry- Countrytitle- Job titlecompany- Company name
Ready-to-Send Indicators
New fields to help determine recipient readiness:required_fields- List of required recipient data fields based on template configurationmissing_fields- List of required fields that are currently emptyrequired_read_only_fields- Read-only fields needing pre-filled valuesready_to_send- Boolean indicating if recipient has all required data
SigningRequestUser Schema Enhancements
Same enhancements as TemplateUser, plus:declined_on- Timestamp when recipient declined to signdecline_reason- Reason provided by recipient for decliningcustom_fields- Custom field values for the recipienthas_valueproperty inrequired_read_only_fields- Indicates if read-only field has a value
Response Format Changes
Template users endpoint (GET /templates/{id}/users) now returns:
v01.01.00
Download OpenAPI SpecNew Endpoints
Template Management
Full CRUD support for templates:POST /templates- Create a new template with base64-encoded PDFPATCH /templates/{id}- Partial update (properties OR single user)PUT /templates/{id}- Comprehensive update (properties, users, fields, reminders)DELETE /templates/{id}- Soft delete a template
Template Sub-Resources
GET /templates/{id}/users- Get all template recipientsGET /templates/{id}/fields- Get all template fieldsGET /templates/{id}/reminders- Get all template reminders
API Key Management
New endpoints for workspace API key lifecycle:POST /workspaces/{id}/api-key/regenerate- Generate new API key with 24-hour grace periodPOST /workspaces/{id}/api-key/expire- Immediately expire pending keys
Enhanced Operations
Comprehensive Updates
The PUT endpoint for templates supports:template_properties- Update metadata and settingsusers- Upsert users (include id to update, omit to create)deleted_users- Delete users with field handling strategy (deleteorreassign)fields- Upsert fieldsreminders- Upsert reminders
v01.00.02
Download OpenAPI SpecNew Features
Custom Fields API
Added custom field definition management for workspaces, templates, and signing requests. New Tag:Custom Fields- Custom field definition management
WorkspaceCustomField
TemplateCustomField
SigningRequestCustomField
Schema Improvements
TemplateField Schema
Enhanced with clearer descriptions and additional properties:- Explicit
typeproperty with enum values positionobject with x, y, width, heightread_onlyandread_only_valuefor pre-filled fields
v01.00.01
Download OpenAPI SpecInitial Release
The initial release of the Firma Partner API with the following core features:API Tags / Categories
- Company - Company information and settings
- Workspaces - Workspace management operations
- Templates - Template management operations
- Signing Requests - Document signing request operations
- Webhooks - Webhook configuration and management
- JWT Management - JWT token generation and revocation
- Legacy - Deprecated endpoints for backward compatibility
Authentication
- API key authentication via
Authorizationheader - Optional Bearer prefix support
Rate Limiting
Tiered rate limits based on operation type:- Read operations (GET): 200 requests/minute
- Write operations (POST/PUT/PATCH/DELETE): 120 requests/minute
- Webhook CRUD: 60 requests/minute
- Webhook test: 10 requests/minute
- API key operations: 1 request/minute
- Secret rotation: 1 request/minute
Core Schemas
Company
id,company_name,account_owner,account_owner_emailwebsite,icon_url,credits(read-only)date_created,date_changed
Workspace
id,name,protected,api_keydate_created,date_changed
Template
id,name,descriptiondocument_url(pre-signed, expires)document_url_expires_atdate_created,date_changed
SigningRequest
id,name,descriptiondocument_url,document_url_expires_atdocument_page_count,status,expiration_hourssettings,template_id- Date fields:
date_created,date_sent,date_finished,date_cancelled,expires_at certificateobject with generation statusfinal_document_download_url,final_document_download_error
Recipient
- Core:
id,first_name,last_name,email,designation,order - Address:
street_address,city,state_province,postal_code,country - Professional:
phone_number,title,company custom_fieldsfor additional data- Temporary ID support for document-based creation
Field
id,type,position,page_number,requiredrecipient_id,variable_name- Type-specific:
dropdown_options,date_default,date_signing_default - Read-only:
read_only,read_only_value,prefilled_data - Formatting:
format_rules,validation_rules
Webhook
id,url,events,enableddate_created,date_changed
JWT Management
- Generate JWT for template embedding
- Generate JWT for signing request embedding
- Revoke JWT tokens
Migration Guide
Migrating from v01.00.01 to v01.00.02
- No breaking changes
- Custom Fields API available for use
Migrating from v01.00.02 to v01.01.00
- No breaking changes
- New template management endpoints available
- API key regeneration endpoints available
Migrating from v01.01.00 to v01.02.00
- No breaking changes
- Template and signing request users now include additional fields
ready_to_sendboolean available to check recipient readiness
Migrating from v01.02.00 to v01.03.00
- No breaking changes
- Email domain configuration available for custom sending domains
declinedstatus added to signing request status enum- Credit cost tracking available on templates and signing requests
Migrating from v01.03.00 to v01.04.00
- No breaking changes
radiofield type renamed toradio_buttons(both still accepted)- New field types available:
textarea,url - PATCH endpoints now support single-field operations
- Use
template_user_idfor explicit template user matching in signing requests
Migrating from v01.04.00 to v01.05.00
- No breaking changes
- Email validation warnings are purely additive
Migrating from v01.05.00 to v01.06.00
- No breaking changes
- Split PDF download URLs available on completed signing requests
- Field type inputs
initials/initialandtextarea/text_areaboth accepted with automatic normalization
Migrating from v01.06.00 to v01.07.00
- No breaking changes
- New
hand_drawn_onlysetting available in signing request settings (defaults tofalse) - Deprecated top-level integer settings fields now visible in
SigningRequestschema — usesettingsobject instead
Migrating from v01.07.00 to v01.08.00
- No breaking changes — schema field name corrections reflect actual API responses
- New Email Templates API for customizing signing notification emails
languagefield added toCompanyandWorkspaceSettings- Template schema expanded with inline
recipients,fields,settings,page_count,expiration_hours use_signing_orderadded toSigningRequestSettings- Webhook schema includes
description,consecutive_failures,auto_disabled_at - Signing request responses split into endpoint-specific shapes with inline data
Migrating from v01.08.00 to v01.09.00
- No breaking changes
- New
require_otp_verificationsetting available at company, workspace, and signing request levels - New
POST /templates/{id}/replace-documentendpoint for replacing template PDFs while preserving fields
Migrating from v01.09.00 to v01.10.00
- No breaking changes
- Conditional field logic available via
required_conditionsandvisibility_conditionson fields - DOCX files now accepted alongside PDF in all document upload endpoints
- New
GET /signing-requests/{id}/auditendpoint for retrieving audit trails - New
show_signature_framesetting at company, workspace, and signing request levels - New
force_remove_conditionsparameter on user deletion operations
Migrating from v01.10.00 to v01.11.00
- Breaking change:
use_signing_orderdefault changed fromfalsetotrue— explicitly setuse_signing_order: falseif you rely on simultaneous delivery - New
filefield type for signer file uploads - Anchor tags for automatic field placement from text markers in PDFs
background_colorproperty available on all field types
Migrating from v01.11.00 to v01.12.00
- No breaking changes
- MCP Server integration for AI assistant access to the Firma API
- No new API endpoints or schema changes — OpenAPI specification unchanged from v1.11.0
Migrating from v01.12.00 to v01.12.01
- No breaking changes
- New
variable_defined_namefield on all field responses — returns the human-readable custom field definition name alongside the internalvariable_name variable_defined_nameaccepted as input for field matching onPOST /signing-requests/create-and-send
Migrating from v01.15.03 to v01.16.00
- No breaking changes
- New
GET /signing-requests/{id}/downloadendpoint for retrieving a download URL for the signed document - Partial downloads available when
allow_partial_downloadis enabled in signing request settings
Migrating from v01.16.00 to v01.17.00
- No breaking changes
- Six new nullable color fields (
color_primary,color_primary_fg,color_background,color_foreground,color_card,color_border) on Company and Workspace Settings - New
ColorPaletteschema for resolved signing experience colors - Colors follow a 3-tier cascade: Firma defaults -> Company -> Workspace
Migrating from v1.19.0 to v1.20.0
- No breaking changes
- New
disable_guided_navigationsetting available at company, workspace, template, and signing request levels - Follows the same cascading pattern as
require_otp_verification: signing request -> workspace -> company (first non-null wins) - Defaults to
false(auto-scroll enabled), preserving existing behavior
Migrating from v1.20.0 to v1.21.0
- No breaking changes
- New
email_local_partsetting on Company (GET/PATCH /company) and Workspace Settings (GET/PUT /workspace/{id}/settings) - Workspace value takes priority over company value; default is
"support" - Only applies when a verified custom domain is configured