Skip to main content

Files

Upload PDFs, PNGs, and JPEGs to `/files`, then reference them from agreements and themes.


Upload before you attach​

Before you can add a file to an agreement or theme, upload it to your archive.

  • One place for your files: The archive stores the files you upload, so you can find them again.
  • File ID: The upload response includes a file ID. Use that ID when you create or update an agreement or theme.

Lookup keys​

Attach a lookup key to a file when you want to find it later without looking up the file ID. That helps once you have a lot of files.


Supported file types:​

  • PDFs: Required for agreements, either as the main document to be signed, or an attachment.
  • PNGs & JPEGs: For logos and icons in themes.

Size limit: 15 MB​

Uploads are capped at 15 MB.


Files are immutable​

Once uploaded, a file's content cannot be changed. You can still delete the file. Copies already used in an agreement or theme are kept.


What stays fixed​

  • No edits after upload: You cannot change a file after it has been uploaded. The content stays as it was.
  • Same content wherever it is used: An agreement or theme keeps the content from the moment you attached the file.

Cloning on use​

  • A clone is made: When you use a file in an agreement or theme, we create a clone. The original in your archive stays as it was.
  • Deleting the original: Deleting a file from your archive does not affect its clones in agreements or themes.

Multipart uploads​

Uploading to /files sends the file as multipart/form-data. That is common in HTTP file transfers, and it can be a bit tricky in server-to-server calls. The format can carry a file together with ordinary fields.


Server-to-server uploads​

When uploading from server to server:

  • Headers: Set Content-Type to multipart/form-data.
  • Boundary: HTTP libraries usually set the boundary for you. You have to set it yourself if you build the request by hand.
  • Binary data: Read the file as binary and send those bytes.

Before you ship​

  1. Use a library: axios and node-fetch both handle multipart data.
  2. Test the upload: Try it in a test environment before you deploy.
  3. Stay within the limits: Use a supported format, and keep the file under 15 MB.

If an upload fails and these checks don't explain it, contact support.