### Get Account Credentials Example Source: https://developers.signwell.com/reference/getme This example shows a successful response (200) when retrieving account information using an API key. It includes details about the user, account, and workspace. ```json { "id": "0a41459c-be07-4bc6-9d0f-dd7956845ac0", "role": "owner", "archived": false, "user": { "id": "8fe64930-a7b3-45b4-b507-02dd3784dde8", "name": "Stealy", "email": "127_stealy@cummings-donnelly.example", "has_google_registration": false, "first_name": "Stealy" }, "account": { "id": "163d3daa-fa76-46d1-991c-6ff3933fdf4b", "name": "Kautzer-Schuster", "plan_tier": "free", "active_templates": 0, "can_create_template": true, "can_create_tracking_document": true, "can_create_completion_document": true, "active_users": [ { "id": "8fe64930-a7b3-45b4-b507-02dd3784dde8", "name": "Stealy", "email": "127_stealy@cummings-donnelly.example", "has_google_registration": false } ] }, "workspace": { "id": "163d3daa-fa76-46d1-991c-6ff3933fdf4b", "name": "Kautzer-Schuster", "plan_tier": "free", "active_templates": 0, "can_create_template": true, "can_create_tracking_document": true, "can_create_completion_document": true, "active_users": [ { "id": "8fe64930-a7b3-45b4-b507-02dd3784dde8", "name": "Stealy", "email": "127_stealy@cummings-donnelly.example", "has_google_registration": false } ] }, "contact": { "id": "a599c778-db74-48cc-b9a8-5d997493ca50", "email": "127_stealy@cummings-donnelly.example", "name": "Stealy", "company_name": "Ziemann Group", "phone_number": "839-661-4664", "alt_phone_number": "592 152 2374", "website": "http://jones.test/wendi_dicki", "initials": "ST", "archived": false } } ``` -------------------------------- ### Get API Application Example Source: https://developers.signwell.com/reference/getapiapplication This example demonstrates a successful response when retrieving details for a specific API Application. It includes the application's ID, name, owner information, and preferences. ```json { "id": "280286f3-e31e-461f-8119-c9647c7d6a68", "callback_urls": [], "created_at": "2026-04-27T14:06:44Z", "name": "Alphazap", "updated_at": "2026-04-27T14:06:44Z", "owner": { "id": "837eefa5-e83c-40ac-b06f-d3e731ba0083", "account_id": "9488b35e-177f-4f02-b76e-d09f9ba48bfa", "name": "Eyeholes Man", "email": "117.man.eyeholes@ziemann.example" }, "preferences": { "button_text_color": "B4B4BB", "buttons_border_radius": 9, "custom_logo_file": "/Users/cpetersen/RubymineProjects/docsketch/tmp/test_files/files_number/api_application_preferences/000/000/003/original.png", "link_text_color": "DDDDFD", "primary_color": "F9AAAA" } } ``` -------------------------------- ### Making a Request Source: https://developers.signwell.com/reference/getting-started-with-your-api-1 This example demonstrates how to make a basic GET request to the SignWell API using cURL. It includes the base URL and the required authentication header. ```APIDOC ## GET /me ### Description Retrieves information about the authenticated user. ### Method GET ### Endpoint https://www.signwell.com/api/v1/me ### Parameters #### Headers - **X-Api-Key** (string) - Required - Your API key for authentication. ### Request Example ```bash curl https://www.signwell.com/api/v1/me -H 'X-Api-Key: "yourtoken"' ``` ### Response #### Success Response (200) Details about the user associated with the API key. #### Response Example ```json { "example": "response body" } ``` ``` -------------------------------- ### Get Bulk Send Example Source: https://developers.signwell.com/reference/getbulksend Retrieves detailed information about a specific Bulk Send operation by its ID. Requires an API key for authentication. ```json { "openapi": "3.0.1", "info": { "title": "SignWell Developer API", "description": "API for creating, managing, and tracking electronic signature workflows.", "version": "v1", "termsOfService": "https://www.signwell.com/terms/", "contact": { "email": "support@signwell.com" } }, "tags": [ { "name": "Bulk Send", "description": "Send a document to multiple recipients in batch using templates." } ], "paths": { "/api/v1/bulk_sends/{id}": { "get": { "summary": "Get Bulk Send", "description": "Returns information about the Bulk Send.", "parameters": [ { "name": "id", "in": "path", "schema": { "$ref": "#/components/schemas/BulkSendId" }, "required": true } ], "tags": [ "Bulk Send" ], "security": [ { "api_key": [] } ], "operationId": "getBulkSend", "responses": { "200": { "description": "successful", "content": { "application/json": { "example": { "id": "21caa36e-3d2f-406a-a9b1-c3de3ec34ce2", "name": "Gorgoroth", "api_application_id": null, "documents_count": 0, "documents_completed": 0, "documents_not_completed": 0, "created_at": "2026-04-27T14:06:47Z", "user_id": null, "status": "Created", "templates": [ { "id": "dc5c58d1-58d1-4dbf-a156-38fb537d3ce8", "name": "horizon-marine/qui.pdf" } ] }, "schema": { "$ref": "#/components/schemas/BulkSendResponse" } } } }, "401": { "description": "unauthorized", "content": { "application/json": { "example": { "message": "Missing or invalid authorization key", "meta": { "error": "api_key_unauthorized_error", "message": "Not valid authorization token", "messages": [ "Not valid authorization token" ] } }, "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "not found", "content": { "application/json": { "example": { "message": "Not found", "meta": { "error": "record_not_found", "message": "Couldn't find the bulk_send requested", "messages": [ "Couldn't find the bulk_send requested" ] } }, "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "429": { "description": "rate limit exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RateLimitErrorResponse" } } } } } } } }, "components": { "securitySchemes": { "api_key": { "type": "apiKey", "name": "X-Api-Key", "in": "header" } }, "schemas": { "BulkSendId": { "type": "string", "format": "uuid", "description": "Unique identifier for a bulk send." }, "BulkSendResponse": { "type": "object", "description": "Bulk send details", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "api_application_id": { "type": "string", "format": "uuid", "nullable": true }, "documents_count": { "type": "integer" }, "documents_completed": { "type": "integer" }, "documents_not_completed": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "user_id": { "type": "string", "format": "uuid", "nullable": true }, "status": { "type": "string" }, "templates": { "type": "array" } } } } } } ``` -------------------------------- ### API Application Not Found Example Source: https://developers.signwell.com/reference/getapiapplication This example shows the response when an API Application with the specified ID cannot be found. It includes an error message and meta-information detailing the 'record_not_found' error. ```json { "message": "Not found", "meta": { "error": "record_not_found", "message": "Couldn't find the api_application requested", "messages": [ "Couldn't find the api_application requested" ] } } ``` -------------------------------- ### Unauthorized Response Example Source: https://developers.signwell.com/reference/getme This example shows the response (401) when the provided API key is missing or invalid. It indicates an authorization error. ```json { "message": "Missing or invalid authorization key", "meta": { "error": "api_key_unauthorized_error", "message": "Not valid authorization token", "messages": [ "Not valid authorization token" ] } } ``` -------------------------------- ### Document Template Update Response Example Source: https://developers.signwell.com/reference/updatetemplate Example of a successful response when updating a document template. It includes details about the template's fields, signing order, and attachment requests. ```json { "name": "minister_premium/tempora.mp4", "required": true, "url": "https://www.signwell.com/document_attachments/DyNyJnE4QlTrPQEadBD0TNYOe49/?access=675991dd-9f1b-4913-9138-62260723ca17" } ] }, { "id": "2", "name": "Illustrious She-Thing Skull 14", "subject": null, "message": null, "signing_order": 2, "passcode_delivery": { "enabled": false, "methods": null, "expire_after_access": false }, "attachment_requests": [] } ], "checkbox_groups": [ { "id": "247800c2-588f-4f06-b2ba-ac4908da9d4d", "group_name": null, "recipient_id": null, "checkbox_ids": [ "CheckBox_69" ], "validation": null, "required": false } ] }, "schema": { "$ref": "#/components/schemas/DocumentTemplateResponse" } } } }, "400": { "description": "bad request", "content": { "application/json": { "example": { "errors": { "message": "The request contains invalid key values.", "invalid_keys": [ "name" ] } }, "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "422": { "description": "unprocessable entity", "content": { "application/json": { "example": { "errors": { "decline_redirect_url": [ "is not a valid URL" ], "redirect_url": [ "is not a valid URL" ], "expires_in": [ "must be less than or equal to 365" ], "metadata": [ "The key/value pairs must not exceed 50", "Check the following keys: [qgtxtpsnyxjwzvbzhnmrjziscxsmgcugpqanuygve], length needs to be less than 40 characters", "Check the value of the following keys: [ke50], length needs to be less than 500 characters and must be a string" ], "api_application_id": [ "The provided API application id is invalid" ], "message": [ "is too long (maximum is 4000 characters)" ] } }, "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "429": { "description": "rate limit exceeded", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RateLimitErrorResponse" } } } } }, "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentTemplateUpdateRequest" } } }, "required": true } } } }, "components": { "securitySchemes": { "api_key": { "type": "apiKey", "name": "X-Api-Key", "in": "header" } }, "schemas": { "FieldType": { "type": "string", "enum": [ "initials", "signature", "checkbox", "date", "select", "text", "dropdown", "autofill_company", "autofill_email", "autofill_first_name", "autofill_last_name", "autofill_name", "autofill_phone", "autofill_title", "autofill_date_signed" ], "description": "Type of signing field" }, "TextValidation": { "type": "string", "enum": [ "no_text_validation", "numbers", "letters", "email_address", "us_phone_number", "us_zip_code", "us_ssn", ``` -------------------------------- ### Unprocessable Entity Error Example Source: https://developers.signwell.com/reference/updateauthentication This example demonstrates the response structure for an 'unprocessable entity' error, often related to invalid or unsupported values in the request, such as delivery methods. ```json { "errors": { "recipients[0].passcode_delivery.methods": [ "contains unsupported delivery methods" ] } } ``` -------------------------------- ### Make a GET Request to the API Source: https://developers.signwell.com/reference/getting-started-with-your-api-1 Use this cURL command to make a GET request to the API's 'me' endpoint. Replace 'yourtoken' with your actual API key. Ensure you include the 'X-Api-Key' header for authentication. ```bash curl https://www.signwell.com/api/v1/me -H 'X-Api-Key: "yourtoken"' ``` -------------------------------- ### Rate Limit Exceeded Response Example Source: https://developers.signwell.com/reference/getme This example shows the response (429) when the API rate limit has been exceeded. The response body will contain schema details for a rate limit error. ```json { "schema": { "$ref": "#/components/schemas/RateLimitErrorResponse" } } ``` -------------------------------- ### Error Response Example Source: https://developers.signwell.com/reference/getbulksendcsvtemplate Illustrates the structure of error responses, including unauthorized access and rate limiting. These responses provide details about the error encountered. ```json { "message": "Missing or invalid authorization key", "meta": { "error": "api_key_unauthorized_error", "message": "Not valid authorization token", "messages": [ "Not valid authorization token" ] } } ``` ```json { "message": "Not found", "meta": { "error": "record_not_found", "message": "Couldn't find the template requested", "messages": [ "Couldn't find the template requested" ] } } ``` -------------------------------- ### Bad Request Error Example Source: https://developers.signwell.com/reference/updateauthentication This example shows the structure of a 'bad request' error response, typically indicating invalid input data such as incorrect delivery methods for recipients. ```json { "errors": { "recipients": [ "must be a non-empty array" ] } } ``` -------------------------------- ### API Key Authentication Header Source: https://developers.signwell.com/reference/getting-started-with-your-api-1 This is an example of the API key format required for authentication. You should include this in the 'X-Api-Key' header when making requests to the SignWell API. ```text X-Api-Key: "abc123abc123abc123abc123abc123" ``` -------------------------------- ### Test Mode Source: https://developers.signwell.com/reference/getting-started-with-your-api-1 This example shows how to enable test mode for API requests that involve chargeable resources. Test mode allows for development without incurring actual charges. ```APIDOC ## Test Mode ### Description Enable test mode for development purposes on chargeable resources by including the `test_mode` attribute in your request body. ### Request Body - **test_mode** (boolean) - Optional - Set to `true` to enable test mode. ### Example ```json { "test_mode": true, "...other_fields": "..." } ``` ``` -------------------------------- ### Update Recipients Source: https://developers.signwell.com/reference/updaterecipients Updates one or more recipients on a document that has already been sent. Only recipients who have not started signing may be updated. Recipient IDs must be retrieved from the Get Document response. Allowed document statuses: sent, viewed, pending, bounced. For non-embedded documents, updated recipients will receive a new notification email. For embedded signing documents, email behavior follows each recipient's send_email setting. ```APIDOC ## PATCH /api/v1/documents/{id}/recipients ### Description Updates one or more recipients on a document that has already been sent. Only recipients who have not started signing may be updated. Recipient IDs must be retrieved from the Get Document response. Allowed document statuses: sent, viewed, pending, bounced. For non-embedded documents, updated recipients will receive a new notification email. For embedded signing documents, email behavior follows each recipient's send_email setting. ### Method PATCH ### Endpoint /api/v1/documents/{id}/recipients ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the document to update recipients for. #### Request Body - **recipients** (array) - Required - A list of recipients to update. - **id** (string) - Required - The ID of the recipient to update. - **email_address** (string) - Optional - The new email address for the recipient. - **name** (string) - Optional - The new name for the recipient. - **signing_order** (integer) - Optional - The new signing order for the recipient. ### Response #### Success Response (200) - **id** (string) - The ID of the document. - **archived** (boolean) - Indicates if the document is archived. - **created_at** (string) - The date and time the document was created. - **decline_message** (string) - The message provided if the document was declined. - **embedded_edit_url** (string) - The URL for embedded editing. - **error_message** (string) - An error message if any occurred. - **embedded_preview_url** (string) - The URL for embedded preview. - **language** (string) - The language of the document. - **name** (string) - The name of the document. - **requester_email_address** (string) - The email address of the requester. - **status** (string) - The current status of the document. - **test_mode** (boolean) - Indicates if the document is in test mode. - **updated_at** (string) - The date and time the document was last updated. - **allow_decline** (boolean) - Indicates if declining is allowed. - **allow_reassign** (boolean) - Indicates if reassigning is allowed. - **api_application_id** (string) - The ID of the API application. - **custom_requester_email** (string) - The custom email address for the requester. - **custom_requester_name** (string) - The custom name for the requester. - **decline_redirect_url** (string) - The URL to redirect to upon decline. - **embedded_signing** (boolean) - Indicates if embedded signing is enabled. - **expires_in** (integer) - The number of days until the document expires. - **metadata** (object) - Additional metadata for the document. - **redirect_url** (string) - The URL to redirect to after signing. - **reminders** (boolean) - Indicates if reminders are enabled. - **apply_signing_order** (boolean) - Indicates if signing order should be applied. - **message** (string) - The message included with the document. - **subject** (string) - The subject of the document. - **labels** (array) - A list of labels associated with the document. - **id** (string) - The ID of the label. - **name** (string) - The name of the label. - **fields** (array) - A list of fields in the document. - **api_id** (string) - The API ID of the field. - **height** (string) - The height of the field. - **page** (integer) - The page number of the field. - **required** (boolean) - Indicates if the field is required. - **type** (string) - The type of the field. - **value** (string) - The value of the field. - **width** (string) - The width of the field. - **x** (number) - The x-coordinate of the field. - **y** (number) - The y-coordinate of the field. - **name** (string) - The name of the field. - **recipient_id** (string) - The ID of the recipient assigned to the field. - **signing_elements_group_id** (string) - The ID of the signing elements group. #### Response Example ```json { "id": "67145d8d-81a6-49f3-b073-75d48cb9e85c", "archived": false, "created_at": "2026-04-27T14:06:25Z", "decline_message": null, "embedded_edit_url": null, "error_message": null, "embedded_preview_url": "https://www.signwell.com/preview/document/67145d8d-81a6-49f3-b073-75d48cb9e85c/", "language": "en", "name": "widen_authority/dolor.json", "requester_email_address": "scary_terry_21@walsh-kessler.test", "status": "Sent", "test_mode": false, "updated_at": "2026-04-27T14:06:26Z", "allow_decline": true, "allow_reassign": true, "api_application_id": null, "custom_requester_email": "nicholas_daniel@beatty-purdy.example", "custom_requester_name": "Sheev Palpatine", "decline_redirect_url": "http://witting.test/cornell.heller", "embedded_signing": false, "expires_in": 10, "metadata": { "et": "expedita", "iste": "temporibus" }, "redirect_url": "http://mayer.example/roberto", "reminders": false, "apply_signing_order": false, "message": "
Hey there,
Please review and complete this document. You can click on the document below to get started.
", "subject": "Please complete widen_authority/dolor.json", "labels": [ { "id": "f42dceea-edbf-4a51-8df8-9cf9fdc5da5f", "name": "Rosemary Legros" }, { "id": "115e998b-e4e5-480b-8a4a-befb06981167", "name": "Ola Fay" } ], "fields": [ [ { "api_id": "CheckBox_14", "height": "13.0", "page": 1, "required": true, "type": "checkbox", "value": null, "width": "13.0", "x": 1.1, "y": 1.1, "name": null, "recipient_id": null, "signing_elements_group_id": "873d4527-b838-4ef5-993c-0947a07ae5cc" }, { "api_id": "CheckBox_15", "height": "13.0", "page": 1, "required": true, "type": "checkbox", "value": null, "width": "13.0", "x": 1.1, "y": 1.1, "name": null, "recipient_id": null }, { "api_id": "Signature_13", "height": "32.0", "page": 1, "required": true, "type": "signature", "value": null, "width": "100.0", "x": 1.1, "y": 1.1, "name": null, "recipient_id": null } ] ] } ``` ``` -------------------------------- ### Get Bulk Send CSV Template Source: https://developers.signwell.com/reference/getbulksendcsvtemplate Fetches a CSV template that corresponds to the provided document template IDs. CSV templates are blank CSV files that have columns containing required and optional data that can be sent when creating a bulk send. Fields can be referenced by the field label. Example: [placeholder name]_[field label] could be something like customer_address or signer_company_name (if 'Customer' and 'Signer' were placeholder names for templates set up in SignWell). ```APIDOC ## GET /api/v1/bulk_sends/csv_template ### Description Fetches a CSV template that corresponds to the provided document template IDs. CSV templates are blank CSV files that have columns containing required and optional data that can be sent when creating a bulk send. Fields can be referenced by the field label. Example: [placeholder name]_[field label] could be something like customer_address or signer_company_name (if 'Customer' and 'Signer' were placeholder names for templates set up in SignWell). ### Method GET ### Endpoint /api/v1/bulk_sends/csv_template ### Parameters #### Query Parameters - **template_ids[]** (array) - Required - The IDs of the document templates for which to generate the CSV template. - **base64** (boolean) - Optional - When true, returns the CSV as a base64-encoded string in a JSON response instead of a binary file download. ### Response #### Success Response (200) - **application/octet-stream**: A binary file containing the CSV template. - **application/json**: A JSON object containing the base64-encoded CSV content if the `base64` query parameter is set to true. #### Response Example (JSON with base64 flag) { "data": "ZG9jdW1lbnRfc2VuZGVyX2VtYWlsLGRvY3VtZW50X3NlbmRlcl9uYW1lCmNoaWVmLjE1NC5saWdodGhvdXNlQHF1aXR6b24udGVzdCxMaWdodGhvdXNlIENoaWVmCg==" } #### Error Handling - **401**: Unauthorized. Missing or invalid authorization key. - **404**: Not Found. The requested template could not be found. - **429**: Rate limit exceeded. ``` -------------------------------- ### Initialize and Open SignWell Embed Source: https://developers.signwell.com/reference/embedded-iframe Use this JavaScript code to create a SignWell embed instance and open the signing iFrame. Configure event handlers for completion and closure. ```javascript var signWellEmbed = new SignWellEmbed({ url: '[embedded_signing_url here]', events: { completed: e => { console.log('completed event: ', e) //document successfully signed/completed }, closed: e => { console.log('closed event: ', e) //SignWell iFrame closed } } }) signWellEmbed.open() ``` -------------------------------- ### Create Document from Template Source: https://developers.signwell.com/reference/createdocumentfromtemplate Creates and optionally sends a new document for signing. If `draft` is set to true the document will not be sent. ```APIDOC ## POST /api/v1/document_templates/documents ### Description Creates and optionally sends a new document for signing. If `draft` is set to true the document will not be sent. ### Method POST ### Endpoint /api/v1/document_templates/documents ### Parameters ### Request Body - **template_ids** (array) - Required - List of template IDs to use for creating the document. - **draft** (boolean) - Optional - If true, the document will not be sent. - **message** (string) - Optional - The message body for the email. - **subject** (string) - Optional - The subject line for the email. - **requester_email_address** (string) - Required - The email address of the requester. - **custom_requester_name** (string) - Optional - The name of the requester. - **custom_requester_email** (string) - Optional - The email address of the requester. - **embedded_signing** (boolean) - Optional - Whether to enable embedded signing. - **expires_in** (integer) - Optional - Number of days until the document expires. - **redirect_url** (string) - Optional - URL to redirect to after signing. - **decline_redirect_url** (string) - Optional - URL to redirect to after declining. - **allow_decline** (boolean) - Optional - Whether to allow declining. - **allow_reassign** (boolean) - Optional - Whether to allow reassigning. - **reminders** (boolean) - Optional - Whether to enable reminders. - **apply_signing_order** (boolean) - Optional - Whether to apply signing order. - **metadata** (object) - Optional - Key-value pairs for metadata. - **fields** (array) - Optional - List of fields to pre-fill. ### Request Example ```json { "template_ids": ["97694e28-e77b-4bb9-9627-eb9ae282a439"], "requester_email_address": "requester@domain.com", "message": "Please sign this document.", "subject": "Document for Signature", "draft": false, "embedded_signing": false, "expires_in": 7, "redirect_url": "https://www.example.com/signed", "decline_redirect_url": "https://www.example.com/declined", "allow_decline": true, "allow_reassign": true, "reminders": true, "apply_signing_order": false, "metadata": { "order_id": "12345" }, "fields": [ { "api_id": "TextField_1", "value": "John Doe" } ] } ``` ### Response #### Success Response (201) - **id** (string) - The unique identifier of the document. - **archived** (boolean) - Whether the document is archived. - **created_at** (string) - The timestamp when the document was created. - **decline_message** (string) - The message provided if the document was declined. - **embedded_edit_url** (string) - URL for editing the document in an embedded context. - **error_message** (string) - An error message if the creation failed. - **embedded_preview_url** (string) - URL for previewing the document in an embedded context. - **language** (string) - The language of the document. - **name** (string) - The name of the document. - **requester_email_address** (string) - The email address of the requester. - **status** (string) - The current status of the document. - **test_mode** (boolean) - Whether the document was created in test mode. - **updated_at** (string) - The timestamp when the document was last updated. - **template_ids** (array) - List of template IDs used. - **allow_decline** (boolean) - Whether declining is allowed. - **allow_reassign** (boolean) - Whether reassigning is allowed. - **api_application_id** (string) - The ID of the API application. - **custom_requester_email** (string) - The custom email address of the requester. - **custom_requester_name** (string) - The custom name of the requester. - **decline_redirect_url** (string) - The URL to redirect to after declining. - **embedded_signing** (boolean) - Whether embedded signing is enabled. - **expires_in** (integer) - The number of days until the document expires. - **metadata** (object) - Metadata associated with the document. - **redirect_url** (string) - The URL to redirect to after signing. - **reminders** (boolean) - Whether reminders are enabled. - **apply_signing_order** (boolean) - Whether signing order is applied. - **message** (string) - The message body of the email. - **subject** (string) - The subject line of the email. - **labels** (array) - Labels associated with the document. - **fields** (array) - Fields within the document. #### Response Example ```json { "id": "fee76eaf-cc86-48b4-a7e5-285784de24b5", "archived": false, "created_at": "2026-04-27T14:06:22Z", "decline_message": null, "embedded_edit_url": "https://www.signwell.com/edit/document/283f4678-a709-4d09-8511-9fb9f5e54a80/", "error_message": null, "embedded_preview_url": null, "language": "en", "name": "Agreement", "requester_email_address": "requester@domain.com", "status": "Created", "test_mode": false, "updated_at": "2026-04-27T14:06:22Z", "template_ids": [ "97694e28-e77b-4bb9-9627-eb9ae282a439", "c5acafbf-d616-4486-aaa5-80cf4110a1b5" ], "allow_decline": true, "allow_reassign": true, "api_application_id": null, "custom_requester_email": "requester@domain.com", "custom_requester_name": "Requester", "decline_redirect_url": "https://www.domain.com/decline_path/", "embedded_signing": false, "expires_in": 365, "metadata": { "key1": "value1", "key2": "value2" }, "redirect_url": "https://www.domain.com/redirect_path/", "reminders": true, "apply_signing_order": false, "message": "Normal Body", "subject": "Normal subject", "labels": [], "fields": [ { "api_id": "Signature_1", "height": "19.0", "page": 1, "required": true, "type": "signature", "value": "", "width": "86.0", "x": 1.1, "y": 1.1, "recipient_id": "document_sender" }, { "api_id": "TextField_1", "height": "19.0", "page": 1, "required": true, "type": "text", "value": "a_valid_email@domain.com", "width": "86.0", "x": 1.1, "y": 1.1, "fixed_width": false, "label": "", "validation": "no_text_validation", "recipient_id": "recipient_1" }, { "api_id": "DateField_1", "height": "19.0", "page": 1, "required": true, "type": "date", "value": "05/06/2021", "width": "86.0", "x": 1.1, "y": 1.1, "date_format": "MM/DD/YYYY", "formula": "", "lock_sign_date": false, "recipient_id": "recipient_1" }, { "api_id": "DateField_2", "height": "19.0", "page": 1, "required": true, "type": "date", "value": null, "width": "86.0", "x": 1.1, "y": 1.1 } ] } ``` ``` -------------------------------- ### Create Document from Template Source: https://developers.signwell.com/reference/createdocumentfromtemplate Creates a new document instance based on a specified template. This operation allows for detailed configuration of recipients, signing preferences, and associated metadata. ```APIDOC ## POST /documents/from-template ### Description Creates a new document from a template, allowing customization of recipients, signing options, and metadata. ### Method POST ### Endpoint /documents/from-template ### Parameters #### Request Body - **recipients** (array) - Required - A list of recipients for the document. - **allow_decline** (boolean) - Optional - Whether to allow recipients the option to decline signing a document. If multiple signers are involved in a document, any single recipient can cancel the entire document signing process by declining to sign. - **allow_reassign** (boolean) - Optional - Allows a signer to reassign the document to another person. Defaults to true. - **decline_redirect_url** (string) - Optional - A URL that recipients are redirected to if the document is declined. - **language** (string) - Optional - Sets the language for all recipients on the document. Accepted languages: English, Français, Español, Deutsch, Polski, Português, Dansk, Nederlands, Italiano, Русский, Svenska, العربية, Ελληνικά, Türkçe, Slovenčina. Defaults to English. Language should be sent in ISO 639-1 format: en, fr, es, de, pl, pt, da, nl, it, ru, sv, ar, el, tr, sk. - **metadata** (object) - Optional - Optional key-value data that can be associated with the document. If set, will be available every time the document data is returned. - **template_fields** (object) - Optional - Fields to populate from the template. - **files** (object) - Optional - Additional files to attach to the document. - **fields** (object) - Optional - Additional fields for the document. - **attachment_requests** (object) - Optional - Requests for attachments from recipients. - **copied_contacts** (object) - Optional - Contacts to CC on the document. - **labels** (object) - Optional - Labels to apply to the document. - **checkbox_groups** (object) - Optional - Checkbox groups for the document. ### Response #### Success Response (200) - **test_mode** (boolean) - Indicates if the document is in test mode. - **id** (string) - The unique identifier for the created document. - **template_id** (string) - The ID of the template used to create the document. - **template_ids** (array of strings) - List of template IDs associated with the document. - **api_application_id** (string) - The ID of the API application that created the document. - **requester_email_address** (string) - The email address of the document requester. - **custom_requester_name** (string) - Custom name for the document requester. - **custom_requester_email** (string) - Custom email for the document requester. - **name** (string) - The name of the document. - **subject** (string) - The subject line of the document email. - **message** (string) - The message body of the document email. - **metadata** (object) - Metadata associated with the document. - **created_at** (string) - The date and time the document was created. - **updated_at** (string) - The date and time the document was last updated. - **recipients** (array of objects) - List of recipients for the document, each with properties like id, name, email, role, message, subject, send_email, send_email_delay, and signing_order. ```