---
title: "Get Signing Request"
method: GET
path: "/signing-requests/{id}"
tags: ["Signing Requests"]
---

# Get Signing Request

`GET /signing-requests/{id}`

Retrieve a specific signing request by ID

## Path parameters

- `id` string, uuid, required

## Response `200`

Signing request retrieved successfully. Returns a detailed nested shape with status as an object and timestamps grouped together.

- SigningRequestDetail — Detailed signing request as returned by GET /signing-requests/{id} (nested shape with status object and timestamps)
  - `id` string, uuid, required — Unique identifier for the signing request
  - `name` string, required — Signing request name
  - `template_description` string, nullable — Description from the template
  - `companies_workspaces_id` string, uuid, required — Workspace ID this signing request belongs to
  - `document_url` string, uri — Pre-signed URL to the PDF document
  - `document_url_expires_at` string, date-time, nullable
  - `document_page_count` integer — Number of pages in the document
  - `expiration_hours` integer — Hours until signing request expires
  - `expires_at` string, date-time, nullable — ISO 8601 timestamp when the signing request expires. Computed from sent_on + expiration_hours. Null if not sent yet or no expiration_hours set.
  - `credit_cost` integer — Credits consumed when sent
  - `status` object, required — Status flags (multiple can be true for terminal states)
    - `sent` boolean
    - `finished` boolean
    - `cancelled` boolean
    - `declined` boolean
    - `expired` boolean
  - `timestamps` object — All relevant timestamps for the signing request lifecycle
    - `created_on` string, date-time
    - `sent_on` string, date-time, nullable
    - `finished_on` string, date-time, nullable
    - `cancelled_on` string, date-time, nullable
    - `declined_on` string, date-time, nullable
    - `last_changed_on` string, date-time
    - `last_signing_action_on` string, date-time, nullable
  - `settings` SigningRequestSettings — Settings returned by the signing request list and detail endpoints. Templates use the TemplateSettings schema (no identity fields).
    - `allow_download` boolean — Whether recipients can download the document
    - `attach_pdf_on_finish` boolean — Whether to attach PDF when signing is complete
    - `allow_editing_before_sending` boolean — Whether the signing request can be edited before sending
    - `use_signing_order` boolean — Whether signing order is enforced among recipients. When true, signers receive the document in sequence based on their order. When false, all signers receive the document simultaneously.
    - `hand_drawn_only` boolean — When enabled, signers can only hand-draw their signatures and cannot use typed/font-based signatures
    - `send_signing_email` boolean — Whether to send signing request notification emails to signers
    - `send_finish_email` boolean — Whether to send completion email when all signers finish
    - `send_expiration_email` boolean — Whether to send expiration notification email when request expires
    - `send_cancellation_email` boolean — Whether to send cancellation notification email when request is cancelled
    - `require_otp_verification` boolean, nullable — Whether signers must verify their email with a one-time code before accessing the document. null = inherit from workspace/company setting.
    - `disable_guided_navigation` boolean, nullable — Disable automatic scrolling to the next required field during signing. Inherits from workspace or company if not set.
    - `allow_presigning_download` boolean, nullable — Allow signers to download the original document before signing. Inherits from workspace or company setting when null.
    - `show_qr_code` boolean, nullable — Show a QR code on the signing page that lets signers continue on their phone. Inherits from workspace or company setting when null.
    - `identity_editable_fields` string[], nullable — Identity fields signers may edit before signing (e.g. ["name", "company"]). null = disabled. When set, a confirmation dialog lets signers edit the specified fields.
    - `notify_identity_change_email` boolean — Send an email notification when a signer changes their identity.
  - `use_signing_order` 0 | 1
  - `allow_download` 0 | 1
  - `allow_editing_before_sending` 0 | 1
  - `hand_drawn_only` 0 | 1
  - `attach_pdf_on_finish` 0 | 1
  - `certificate` object, nullable — Certificate generation status information
    - `generated` boolean — Whether the final certificate PDF has been generated
    - `generated_on` string, date-time, nullable — Timestamp when certificate was generated
    - `has_error` boolean — Whether there was an error generating the certificate
  - `final_document_download_url` string, uri, nullable — Signed URL to download the final signed document (PDF with certificate). URL expires after 1 hour.
  - `final_document_download_error` 'file_not_accessible' | 'null', nullable
  - `document_only_download_url` string, uri, nullable — Signed URL to download the document-only PDF. URL expires after 1 hour.
  - `document_only_download_error` 'file_not_accessible' | 'null', nullable
  - `certificate_only_download_url` string, uri, nullable — Signed URL to download the certificate-only PDF. URL expires after 1 hour.
  - `certificate_only_download_error` 'file_not_accessible' | 'null', nullable

## Other responses

- `401` — Unauthorized - Invalid or missing API key
- `404` — Not Found - Resource does not exist
- `429` — Too Many Requests - Rate limit exceeded

---

[API](https://skmtc.dev/firma/apis/firma-partner-api.md) · [All operations](https://skmtc.dev/firma/apis/firma-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/firma/firma-partner-api/revisions/5c03d6a9d080/schema)
