Integration

Every answer as JSON, three ways

Everything signers type into a SignMaster contract is data you can take elsewhere. When you want it as JSON rather than locked in a PDF, there are three routes: a download from the app, the REST API and webhooks.

Updated November 5, 2026 · 2 min read

On this page
  1. Which route fits
  2. 1. Download from the Responses tab
  3. 2. Call the REST API
  4. 3. Receive webhooks
  5. What's never included
  6. An example
  7. Questions

Which route fits

RouteBest forPlan
Responses downloadA one-off or monthly pull of every answer to a templateEvery paid plan
REST APIYour own code fetching answers on a schedule or on demandCrew and Company
WebhooksReceiving each answer the moment someone signsCrew and Company
Ways to get signer answers as JSON

1. Download from the Responses tab

Open a template and its Responses tab: each envelope sent from the template is a row, and each labeled field a column. Filter by status, dates or bulk send, then download JSON. The file holds a columns list, where each column has a key, label, type and role, and a rows list with each envelope's id, title, status, sent and completed times, recipients and a values object keyed by column.

Downloading needs the Export data permission, and each download is recorded on the envelopes it covers, so you can always see who took the data out.

2. Call the REST API

Two endpoints return signer answers, both needing an API key with the envelopes:read scope:

  • GET /api/v1/templates/:id/responses returns the same columns and rows as the download, a page at a time, with next_cursor, filterable by status, from, to and bulk_send_id.
  • GET /api/v1/envelopes/:id/data returns one envelope's fields, each with its label, type, page, recipient, value and the time it was filled. An applied signature reads as the text [signature], never an image.

3. Receive webhooks

Subscribe to recipient.completed or envelope.completed and SignMaster pushes the answers to you as they happen. data.fields lists each field with its id, label, type, value, recipient_id and whether the signer or the sender filled it in. data.fields_by_label gives the same values keyed by label, which is easiest to map. Webhooks covers events, signature checks and retries.

What's never included

  • Images of signatures, initials or drawings. JSON carries what people typed and chose, not their handwriting.
  • Uploaded files themselves. The Responses download shows each file's name, and webhooks send the name with a link that expires after 24 hours.
  • Envelopes from another workspace. Keys and downloads only ever see your own company's data.

An example

A pest control company sends its service agreement to every customer with bulk send. Each Friday, a short script calls the responses endpoint with status set to completed and from set to the previous Friday, then loads the new rows into its scheduling system: service address, preferred day and gate code, exactly as customers typed them.

Questions? Answers.

Do I need the API to get JSON?

No. On any paid plan, a template's Responses tab downloads as JSON. The API and webhooks, on Crew and Company, are for pulling answers automatically.

Are numbers and checkboxes typed values?

Values are text, formatted the way the app shows them, so convert numbers and dates in your own code. Webhooks send a checkbox as the text true or false.

Can I get the signed PDF too?

Yes. GET /api/v1/envelopes/:id/signed-pdf redirects to a download link that lasts 10 minutes, or returns it as JSON with format=json. envelope.completed webhooks include a link that lasts 24 hours.

Your next contract,
signed today.

Start free in any browser and send your first document.