Pacts
Get a pact
One pact in full: recipients and their progress, fields with their values, the event log and download links.
There are no webhooks yet, so this is how you follow a pact: poll it, and stop when status is no longer sent. Signing links are private and only included when you ask for them.
Authorization
AuthorizationstringheaderrequiredBearer followed by your API key: Bearer sgk_…. The key also works in an X-Api-Key header. See Authentication.Path parameters
uidstringpathrequiredThe pact's 8-character id. Not case-sensitive.
Query parameters
include_linksbooleanquerydefault: falseAdd
signing_url to the signer whose turn it is. Give that link only to them: anyone with it can sign as that person.Response
200 OKThe pact object.
uidstringThe pact's id: 8 letters and digits.
titlestringShown to signers and in emails (150 characters at most).
statusstringSee Pact lifecycle.
One of
draft sent sealed declined voided lapsedmessagestring | nullYour note in the invitation email.
page_countintegerPages in the document.
created_bystringWhere it was created: the dashboard, the API or the MCP server.
One of
web api mcpcurrent_signerinteger | nullThe
order of the signer whose turn it is while the pact is sent; otherwise null.date_createdstring (date-time)When the draft was created.
date_sentstring (date-time) | nullWhen it was sent.
date_lapsesstring (date-time) | nullWhen it lapses if it is not sealed first.
date_sealedstring (date-time) | nullWhen the last signer signed.
date_updatedstring (date-time)When anything about it last changed.
documents_chargedinteger | nullDocuments it used when it was sent.
null on a draft.documents_costinteger | nullWhat sending this draft will use: one document per 3 signers, rounded up. Only set on a draft.
sent_sha256stringSHA-256 (lowercase hex) of the PDF as sent. The sigil records it too.
signed_sha256string | nullSHA-256 of the signed PDF, once sealed.
recipientsarray of objectsSigners in order, then CCs.
ShowHide recipient attributes
orderintegerPosition, starting at 1. Signers come first, numbered in the order you gave them; CCs follow.
rolestringSigners sign in order; a CC gets the finished copy.
One of
signer ccnamestringThe recipient's name.
emailstringThe recipient's address, lowercased.
statusstringWhere this recipient is.
One of
pending viewed signed declineddate_viewedstring (date-time) | nullWhen they first opened their signing link.
date_signedstring (date-time) | nullWhen they signed.
typed_namestring | nullThe full name they typed when signing.
decline_reasonstring | nullTheir reason, if they declined.
signing_urlstringThe private link for the signer whose turn it is. Anyone with it can sign as that person, so only give it to them.
Only with
include_links=1, and only on the waiting signer.linksobjectWhere to get the files.
fieldsarray of objectsThe pact's own copy of the fields, with values as signers fill them in.
Single-pact responses only.
ShowHide field attributes
idinteger | nullThe field's id on a pact.
null on a template.recipientintegerThe signer the field belongs to: the number in its glyph (
\s2\ → 2), or the signer it was given to in the website's field editor.typestringWhat the signer provides.
One of
signature initials name date text checkboxpageintegerThe page it is on, starting at 1.
xnumberDistance from the page's left edge, in PDF points (1/72 inch).
ynumberDistance from the top of the page to the box's bottom edge, in points: the glyph's text baseline. Signatures stand on that line.
widthnumberThe box's width in points: set by the field type for a glyph, as drawn for a field placed by hand on the website.
heightnumberThe box's height in points: set by the field type for a glyph, as drawn for a field placed by hand on the website.
labelstring | nullThe label from the glyph, such as
Company in \t1:Company\, or the one typed in the field editor.requiredbooleanfalse when the glyph ends in ! (\t1:Phone!\, \c1!\), or when the field was made optional in the field editor.valuestring | nullWhat was filled in, once that signer has signed: text as typed,
"1" or "0" for a checkbox, the typed name for name, and the signing date (MM/dd/yyyy, UTC) for date. Signatures and initials are images on the PDF, so they stay null.eventsarray of objectsThe audit trail, oldest first.
Single-pact responses only.
ShowHide event attributes
eventstringWhat happened.
One of
created fields sent emailed email_failed viewed consented signed declined sealed copy_emailed copy_email_failed voided reissuedatstring (date-time)When it happened.
bystring | nullWho did it: your email address, or the signer's.
null for what the system does on its own, such as sealing.tostring | nullWho an email went to, for
emailed, email_failed, reissued, copy_emailed and copy_email_failed.notestring | nullDetail, such as
signer 2, the consent version, or the reason given for voiding or declining.Errors
| Status | When |
|---|---|
| 401 Unauthorized | The API key is missing, wrong or revoked. |
| 403 Forbidden | The account's plan does not include API access (Pro and Business do). |
| 404 Not Found | No pact with that id belongs to your account. |
Every error body is { "error": "message" }. See Errors.