Skip to main content
To create a Box Sign request you need a file you want signed, a destination folder for the signed document, a signing log, and at least one signer. Use this page for every option you set when you create a request.
Creating a request is asynchronous. Check the request status before you treat the request as sent, and handle conversion or sending errors.

Choose a document type

How you create the request depends on whether Box Sign already knows where to place signatures and other fields.

Files

Each Box Sign request begins with a file that needs to be signed. If the file does not already exist in Box, it must be uploaded in a separate API call, before you create the request. Multiple files can be signed in one request. The file ID of the first file in a request is specified in the source_files body parameter.
The requester must have download permissions to the file in Box. Review the collaboration levels to ensure this requirement is met.
Supported file types include: All file types are converted to .pdf for the signature process. This converted document is stored in the parent_folder after the request is sent. The final signed document is always a .pdf, regardless of the original file type. As each signer completes the request, Box Sign adds a new file version. File size limits are determined by your account type. See the uploads guide for more information.

Parent folder

The folder ID specified in the parent_folder body parameter determines the destination of the final signed document and signing log. This folder cannot be the All Files or root level, which is represented by folder ID 0.

Document preparation

Preparing a document before you send a Box Sign request lets you add date, text, checkbox, and signature placeholders for signers. You can do this in the prepare UI or with tags in the document. If you skip preparation, signers receive an unprepared document and can place signatures and fields themselves. You can still turn unprepared document features on or off in the request. Set is_document_preparation_needed to true to get a prepare_url in the response. Open that URL in a browser to place fields and send the request. Until someone visits prepare_url, the request stays in the created status. Once someone visits prepare_url, the request status changes to sent. For unstructured files, always set is_document_preparation_needed to true so the requester can place fields before the signer receives the request. Structured documents and templates already define field placement, so you can skip the preparation step.
Prefill tags created in a template with the Box web app cannot be accessed through the API.
Prepare options

Signers

Each signer must have a role (signer, approver, or final_copy_reader) and can have a signing order. For what each role can do, how ordering works, and a multi-signer example, see Multiple signers and signing order. Signers do not need a Box account. Invite them by email address, not by Box’s user_id.
Box Sign sends signing emails only to the addresses you provide. For Box users, that does not include email aliases unless you specify them. Confirm that every signer email is valid.

Signer verification

To require a CAC/PIV smart card, SMS, Box login, or a password before a signer can sign, see Verify signer identity.

Signer language

Set language on a signer to force emails and the signing page to that language, regardless of the signer’s Box account or browser. If you omit language, Box Sign uses the signer’s Box account language when they are logged in, or English when they are not. Use a supported code from the language codes page, for example en, nl, fr, de, es, or ja. An unsupported code returns a 400 Bad Request error. If the signer has an account, they can change their language in their account settings.

In-person signatures

To collect a signature on the requester’s device, set is_in_person to true and see In-person signing.

Signature properties and prefill tags

Signature properties are the fields a signer can interact with. Use prefill_tags with document_tag_id to populate signature properties when you create the request. Signers can still change prefilled values they own. For more information, see Signature properties and prefill tags. When you use a template, keep signer order in the POST body the same as the order on the template so the correct person gets each field.
For listing templates, tag IDs, and a full walkthrough, see Create a sign request with a template.

Redirects

Set redirect_url and declined_redirect_url to send signers to a custom page after they sign or decline. You can set these URLs on the request for each signer, and override them on individual signers. If you omit both, Box Sign uses the default completion page.
The default completion page tells signers that a limited-time link to the finalized copy is emailed to them, and that a copy is available in Box if they have an account. A custom redirect URL does not include that message.
Custom completion pages after sign or decline

Email and notifications

To customize Box Sign email, send the signing link yourself, or embed the client, see How signers get the request.

Request expiration

Set days_valid to expire the request after that many days. After expiration, the request status is expired and remaining signers cannot complete it.

Request flow

Set request_flow to cfr11 for a 21 CFR Part 11 (GxP) request, or standard for the default flow. See 21 CFR Part 11 requests.

Request status

Creating a request is asynchronous, so the response returns a status that changes as the file converts, signers are notified, and the document is completed. For what each value means and which actions each one allows, see Box Sign request status.
Last modified on September 18, 2026