Get every answer signers typed as JSON, not retyped from a PDF
A signed application holds data you need elsewhere: the applicant's address, their start date, the plan they ticked. Retyping it from the PDF is slow and error-prone. SignMaster keeps every value as data, and hands it over as JSON in three ways, depending on whether you want it in bulk, on request or the moment it's signed.
Updated November 5, 2026 · 2 min read
On this page
Three ways to get JSON
| Responses download | REST API | Webhooks | |
|---|---|---|---|
| What you get | Every envelope from one template | One envelope, or every response to a template | Each envelope as it's signed |
| How | Download JSON on the template's Responses tab | GET requests with an API key | SignMaster posts to your URL |
| Code needed | None | Yes | None with Zapier, Make or n8n |
| Plans | Solo, Crew and Company | Crew and Company | Crew and Company |
A download for a whole template
Open a template and choose Responses. Filter by status, dates or a bulk send, then press Download JSON. The file has a columns list, with each column's key, label, field type and role, and a rows list with one entry per envelope: its id, title, status, when it was sent and completed, which bulk send it came from, how it was created (sent, bulk, public link or API), the people on it, and a values object keyed by column. Labels shared by two roles get the role added to the key, so two Address fields stay apart.
You need the Export data permission to download, and every download is recorded on the envelopes it covers. Prefer a spreadsheet? Download CSV has the same rows with a column per label.
The REST API, on request
- GET /api/v1/envelopes/{id}/data returns one envelope's fields: each with its label, type, page, file, the recipient's name and email, the value and when it was filled.
- GET /api/v1/templates/{id}/responses returns the same rows as the Responses download, a page at a time, with a next_cursor to fetch the next page and filters for status, dates and bulk send.
- Both need a key with the envelopes:read scope, created in Settings › Developers. See the API overview.
Webhooks, the moment it's signed
When one signer finishes (recipient.completed) or the whole envelope does (envelope.completed), a webhook carries data.fields, a list with each field's id, label, type, value, owner and whether the signer or the sender filled it, plus data.fields_by_label, a simple label-to-value map that no-code tools handle easily. Setup is on the webhooks page.
Labels make clean data
- Label every field you'll want out. An unlabeled text box has nothing to be called in your JSON.
- Use the same label on every template for the same thing, like Start date, so one integration reads them all.
- Use the right field type. A date field gives a real date and a number field a real number, where a text box would give whatever was typed.
Signature and initials images are never included. Upload fields come through as the file name, and in webhooks as a name with a short-lived download link.
Questions? Answers.
Can I export one envelope's data without the API?
Yes, as CSV: choose Export data on the envelope. For JSON without code, use the template's Responses download.
Are signatures in the JSON?
No. Signature, initials and similar fields never appear as images. The data holds what people typed, ticked and chose.
What if two signers fill the same label?
Responses keep them apart by adding the role to the key, and webhooks add the role or the person's name to the label.
Do envelopes from public links appear?
Yes. The Responses download includes envelopes from public links, bulk sends, the API and regular sends, with a source on each.
