{
"code": "unauthenticated",
"detail": "Missing or malformed Authorization header"
}
{
"code": "contract-credits-exhausted",
"detail": "no contract can be sent because workflow 'merchant-onboarding' has no contract credits left (200 used); contact us to add more"
}
{
"code": "environment-mismatch",
"detail": "workflow 'merchant-onboarding' is production and this request is for uat"
}
{
"code": "verification-not-found",
"detail": "version 3 of this verification's workflow offers no contract workflow 'dealer-agreement'"
}
{
"code": "verification-not-signable",
"detail": "a contract of this contract workflow is already out with its signers; withdraw it to send another"
}
{
"code": "contract-refused",
"detail": "value 'credit_limit': required; value 'gstin': filled from the verification, so the sender cannot set it"
}
{
"code": "workflow-misconfigured",
"detail": "the agreement could not be sent"
}
{
"code": "esign-unavailable",
"detail": "Signzy could not be reached, so nothing was sent; try again"
}
Contracts
Send a contract
Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on.
The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification’s offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409.
One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification.
On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with.
Each send uses a contract credit whether or not the contract is signed, and restarts the verification’s retention window. Your note and the stamp paper are kept with the contract as sent.
Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.
POST
/
verifications
/
{verification_id}
/
contracts
Send a contract
curl --request POST \
--url https://api.verify.privue.ai/verifications/{verification_id}/contracts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contract_workflow": "dealer-agreement",
"note": "Credit limit as agreed with the regional head",
"values": {
"credit_limit": "5,00,000",
"start_date": "2026-11-01"
}
}
'
{
"code": "unauthenticated",
"detail": "Missing or malformed Authorization header"
}
{
"code": "contract-credits-exhausted",
"detail": "no contract can be sent because workflow 'merchant-onboarding' has no contract credits left (200 used); contact us to add more"
}
{
"code": "environment-mismatch",
"detail": "workflow 'merchant-onboarding' is production and this request is for uat"
}
{
"code": "verification-not-found",
"detail": "version 3 of this verification's workflow offers no contract workflow 'dealer-agreement'"
}
{
"code": "verification-not-signable",
"detail": "a contract of this contract workflow is already out with its signers; withdraw it to send another"
}
{
"code": "contract-refused",
"detail": "value 'credit_limit': required; value 'gstin': filled from the verification, so the sender cannot set it"
}
{
"code": "workflow-misconfigured",
"detail": "the agreement could not be sent"
}
{
"code": "esign-unavailable",
"detail": "Signzy could not be reached, so nothing was sent; try again"
}
Authorizations
Authorization
string
header
required
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
verification_id
string<uuid>
required
Body
application/json
What sending a contract takes: which one, the values you set, and a note of your own.
contract_workflow
string
required
The contract workflow to send, one of those the verification's version offers.
Maximum string length: 64
Pattern: ^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$
values
Values · object
A value for each variable the offer leaves to you, by its name in open: every one of them, except on a contract filled from a form, which needs only those its form requires and one of each group its preview names in required_one_of. A value of nothing but spaces counts as not given. One named in dates is a date as YYYY-MM-DD, which the contract prints as 12 April 2100. The verification fills in the rest, and naming one of those is refused.
Show child attributes
note
string | null
Your own words about this contract, for whoever reads it after you. Fixed once sent, and deleted with everything the user provided once the verification expires or you purge it.
Required string length: 1 - 1000
stamp_paper
StampPaperUpload · object | null
The stamp paper the contract goes out with, on a verification whose version has features.stamp_paper on, and refused on any other. The contract opens with it as its first page, turned the way up it is viewed, fitted to an A4 page, and marked with what it goes with, in the wording and at the place your workflow is set up with.
Leave it out to send again the stamp paper the last contract of this contract workflow on the verification went with, which the preview's stamp_paper.last_sent names. A stamp paper is good for one contract, so a file identical to one that went with any signed contract of yours is refused, given again or left out, including once that contract's verification has expired or been purged.
Show child attributes
Response
The contract already out, as this send asked again.
One contract sent on a verification, as it stands.
id
string<uuid>
required
The contract's id.
verification_id
string<uuid>
required
The verification it was sent on.
run
integer
required
Which run of the verification it was sent on: 1 for the first, one more after each reset. A run is signed on its own contracts alone, so one sent before a reset counts for nothing after it.
Required range: x >= 1
contract_workflow
string
required
The contract workflow it was drawn up from.
name
string
required
What its signers were sent it called.
status
enum<string>
required
pending while it is with its signers; withdrawing once you asked for it back, until it is taken back, which waits while a signer is part way through signing and in which time it can still be signed; signed once every signer has signed and its signed document is kept; expired once its signing links ran out first; failed once a signer ran out of attempts at the Aadhaar checks; withdrawn once it was taken back. Every status but pending and withdrawing is final.
Available options:
pending,
withdrawing,
signed,
withdrawn,
expired,
failed
sent_at
string<date-time>
required
When it was sent.
expires_at
string<date-time>
required
When its signing links stop working, if it is not signed first.
withdrawal_asked_at
string<date-time> | null
required
When it was asked to be withdrawn: by you, by rejecting or resetting its verification, or by its verification expiring. Null where it never was. A contract asked to be withdrawn can still end signed, where its signers finished first.
settled_at
string<date-time> | null
required
When it reached its final status. Null while it is out.
values
Values · object | null
required
Every value of its template, as sent: the ones the verification filled in and the ones you set. A contract drawn from a form records each input it was filled with: text as given, an address on one line, and anything else, such as a number, its nominees or a yes or no, as JSON. Null once the verification has expired.
Show child attributes
note
string | null
required
Your note, as sent. Null where you wrote none, and once the verification has expired.
signers
ContractSignerRecord · object[] | null
required
Everyone who signs it, in the order they sign. Null once the verification has expired.
Show child attributes
stamp_paper
StampPaperRecord · object | null
required
The stamp paper it went with, as you sent it, held for you to download. Null on a workflow without stamp paper, and once the verification has expired.
Show child attributes
sent_document
KeptFileRecord · object | null
required
The contract as it went to its signers, held for you to download, with the hash to check a download against. Null until the contract is first read, which follows the send within moments and at most a few minutes, and once the verification has expired.
Show child attributes
signed_files
SignedFilesRecord · object | null
required
Its signed document and audit certificate, held for you to download, each with the hash to check a download against. Null until it is signed, and once the verification has expired.
Show child attributes
callback
CallbackRecord · object | null
required
How the callback its final status owes you ended: contract.signed, contract.expired, contract.failed or contract.withdrawn. Null until it settles, and on every contract of a workflow with no callback endpoint registered.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Privue","description":"Documentation for Privue's verification products.","colors":{"primary":"#3027A0","light":"#8B8DF0","dark":"#231C7C"},"logo":"https://privue.ai/privue-logo.png","favicon":"https://mintcdn.com/privue/XnmwAq62FbFhXH41/favicon.png?fit=max\u0026auto=format\u0026n=XnmwAq62FbFhXH41\u0026q=85\u0026s=d1ef1ca1e8cc3cfd6f2a787e1d08df4e","api":{"examples":{"languages":["curl","python","javascript"]}},"appearance":{"default":"light"},"background":{"color":{"light":"#FCFCFC","dark":"#121212"}},"navbar":{"primary":{"type":"button","label":"Contact us","href":"https://privue.ai/contact"}},"footer":{"socials":{"website":"https://privue.ai"}},"fonts":{"family":"Open Sans"},"icons":{"library":"lucide"},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"contextual":{"options":["copy"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"privue","hasAudioNarration":false,"actualSubdomain":"privue","customDomains":["docs.privue.ai"],"gitSource":{"type":"github","owner":"privue-core","repo":"foundation","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af6e83507e6a796f0fd5042","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API reference","count":60},{"language":"default","tag":"Verify with Privue","count":50},{"language":"default","tag":"API Suite","count":35},{"language":"default","tag":"Guides","count":23},{"language":"default","tag":"Checks","count":15},{"language":"default","tag":"Verifications","count":9},{"language":"default","tag":"Contracts","count":8},{"language":"default","tag":"DigiLocker","count":8},{"language":"default","tag":"Get started","count":6},{"language":"default","tag":"Run a verification","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--privue-100: #eeeeff;--privue-200: #d0cdf3;--privue-300: #b4b6f8;--privue-400: #8b8df0;--privue-500: #6a6ce4;--privue-600: #504fd0;--privue-700: #3027a0;--privue-800: #231c7c;--privue-900: #17135a;--pv-background: #fcfcfc;--pv-background-lighter: #f5f5f5;--pv-card: #ffffff;--pv-foreground: #171717;--pv-foreground-secondary: #525252;--pv-foreground-lighter: #707070;--pv-border: oklch(92.2% 0 0);--pv-accent: var(--privue-700);--pv-accent-hover: var(--privue-800);--pv-accent-wash: rgb(48 39 160 / 0.05);--pv-accent-tint-border: var(--privue-200);--pv-accent-solid: var(--privue-700);--pv-accent-solid-hover: var(--privue-600);--pv-radius-lg: 10px;--pv-radius-md: 8px;--pv-radius-sm: 4px;--pv-shadow-floating: 0 16px 32px -12px rgb(15 23 42 / 0.1);--pv-red-bg: #fef2f2;--pv-red-border: #fecaca;--pv-red-fg: #b91c1c;--pv-amber-bg: #fffbeb;--pv-amber-border: #fde68a;--pv-amber-fg: #b45309;--pv-green-bg: #f0fdf4;--pv-green-border: #bbf7d0;--pv-green-fg: #15803d}.dark{--pv-background: #121212;--pv-background-lighter: #171717;--pv-card: #171717;--pv-foreground: #fafafa;--pv-foreground-secondary: #a3a3a3;--pv-foreground-lighter: #8a8a8a;--pv-border: oklch(100% 0 0 / 0.1);--pv-accent: var(--privue-400);--pv-accent-hover: var(--privue-300);--pv-accent-wash: rgb(139 141 240 / 0.1);--pv-accent-tint-border: rgb(139 141 240 / 0.25);--pv-accent-solid: var(--privue-600);--pv-accent-solid-hover: var(--privue-500);--pv-red-bg: rgb(153 27 27 / 0.15);--pv-red-border: rgb(248 113 113 / 0.3);--pv-red-fg: #fca5a5;--pv-amber-bg: rgb(146 64 14 / 0.15);--pv-amber-border: rgb(251 191 36 / 0.3);--pv-amber-fg: #fcd34d;--pv-green-bg: rgb(22 101 52 / 0.15);--pv-green-border: rgb(74 222 128 / 0.3);--pv-green-fg: #86efac}#page-title{font-weight:600!important;letter-spacing:-0.025em!important;color:var(--pv-foreground)!important}#content-area h2{font-weight:600!important;letter-spacing:-0.025em!important;color:var(--pv-foreground)!important}#content-area h3,#content-area h4,#content-area h5,#content-area h6{font-weight:600!important;letter-spacing:-0.0125em!important;color:var(--pv-foreground)!important}#content-area strong,#content-area b,#content-area th{font-weight:600!important}.mdx-content p,.mdx-content li{color:var(--pv-foreground-secondary)}.hyphens-auto,p.whitespace-pre-line,p.whitespace-pre-line *,[class*=\"overflow-wrap-anywhere\"],[class*=\"overflow-wrap-anywhere\"] *,#header .prose>*{hyphens:none!important}p.whitespace-pre-line,p.whitespace-pre-line *,[class*=\"overflow-wrap-anywhere\"],[class*=\"overflow-wrap-anywhere\"] *,#header .prose>*{overflow-wrap:break-word!important;word-break:normal!important}#content-area .eyebrow{font-size:11px!important;font-weight:600!important;letter-spacing:0.22em!important;text-transform:uppercase!important;color:var(--pv-accent)!important}#content-area table{font-variant-numeric:tabular-nums}.card,.callout,.code-block,.code-block .code-block-background,#content-area details,#content-area table,#content-area img{border-radius:var(--pv-radius-lg)!important}.card{background-color:var(--pv-card)!important;border-color:var(--pv-border)!important;box-shadow:none!important;transition:border-color 0.2s ease, box-shadow 0.2s ease}.card:hover{box-shadow:0 1px 2px 0 rgb(15 23 42 / 0.05)!important}.code-block{border-color:var(--pv-border)!important;box-shadow:none!important}.code-block .code-block-background,.code-group .code-block-background,.dark .code-block .code-block-background,.dark .code-group .code-block-background{background-color:var(--pv-background-lighter)!important}.code-block-fade-overlay{background-image:linear-gradient(\n to right,\n transparent 0,\n color-mix(in srgb, var(--pv-background-lighter) 50%, transparent) 25px,\n var(--pv-background-lighter) 60px\n )!important}#panel,[role=\"dialog\"],[role=\"menu\"],[role=\"listbox\"],#localization-select-content,#multi-view-dropdown{border-radius:var(--pv-radius-lg)!important;box-shadow:var(--pv-shadow-floating)!important}.callout{--pv-callout-bg: var(--pv-background-lighter);--pv-callout-border: var(--pv-border);--pv-callout-icon: var(--pv-foreground-lighter);--pv-callout-text: var(--pv-foreground-secondary);background-color:var(--pv-callout-bg)!important;border-color:var(--pv-callout-border)!important}.callout svg{color:var(--pv-callout-icon)!important}.callout [data-component-part=\"callout-content\"]{color:var(--pv-callout-text)!important}.callout.bg-yellow-50{--pv-callout-bg: var(--pv-amber-bg);--pv-callout-border: var(--pv-amber-border);--pv-callout-icon: var(--pv-amber-fg);--pv-callout-text: var(--pv-amber-fg)}.callout.bg-red-50{--pv-callout-bg: var(--pv-red-bg);--pv-callout-border: var(--pv-red-border);--pv-callout-icon: var(--pv-red-fg);--pv-callout-text: var(--pv-red-fg)}.callout.bg-green-50{--pv-callout-bg: var(--pv-green-bg);--pv-callout-border: var(--pv-green-border);--pv-callout-icon: var(--pv-green-fg);--pv-callout-text: var(--pv-green-fg)}.mdx-content a.link{color:var(--pv-accent)!important;border-bottom:0!important;text-decoration-line:underline!important;text-decoration-thickness:1px!important;text-underline-offset:2px!important}.mdx-content a.link:hover{color:var(--pv-accent-hover)!important}.callout a.link{color:currentColor!important}#navbar{border-color:var(--pv-border)!important;box-shadow:none!important}#sidebar a,#table-of-contents a{border-radius:var(--pv-radius-md)!important;color:var(--pv-foreground-lighter)!important;transition:color 0.2s ease, background-color 0.2s ease}#sidebar a:hover,#table-of-contents a:hover{color:var(--pv-foreground)!important}#sidebar a[class*=\"bg-primary\"]{background-color:var(--pv-accent-wash)!important;color:var(--pv-accent)!important}#topbar-cta-button a,#topbar-cta-button button,#topbar-cta-button a>span[class*=\"bg-primary\"]{border-radius:var(--pv-radius-md)!important;font-weight:500!important;box-shadow:none!important}#topbar-cta-button a>span[class*=\"bg-primary\"]{background-color:var(--pv-accent-solid)!important;transition:background-color 0.2s ease}#topbar-cta-button a:hover>span[class*=\"bg-primary\"]{background-color:var(--pv-accent-solid-hover)!important;opacity:1!important}#pagination a{border-radius:var(--pv-radius-lg)!important;border-color:var(--pv-border)!important;box-shadow:none!important}#footer{border-color:var(--pv-border)!important}#header .prose>p:not(:first-child){font-size:1rem!important;line-height:1.5!important}#request-example,#response-example,#api-playground-input,.code-group{border-radius:var(--pv-radius-lg)!important;border-color:var(--pv-border)!important;box-shadow:none!important}.code-group,.dark .code-group{background-color:var(--pv-background-lighter)!important}.border-standard{border-color:var(--pv-border)!important}#endpoints-menu-trigger,.tryit-button{border-radius:var(--pv-radius-md)!important}.tryit-button{background-color:var(--pv-accent-solid)!important;color:#ffffff!important;font-weight:500!important}.tryit-button:hover{background-color:var(--pv-accent-solid-hover)!important;opacity:1!important}#content-area input,#content-area select,#content-area textarea,#search-input,#chat-assistant-textarea{border-radius:var(--pv-radius-md)!important}:root{--pv-icon-arrow-down: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14'/%3E%3Cpath d='m19 12-7 7-7-7'/%3E%3C/svg%3E\");--pv-icon-arrow-left: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7'/%3E%3Cpath d='M19 12H5'/%3E%3C/svg%3E\");--pv-icon-arrow-right: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='m12 5 7 7-7 7'/%3E%3C/svg%3E\");--pv-icon-arrow-up: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 7-7 7 7'/%3E%3Cpath d='M12 19V5'/%3E%3C/svg%3E\");--pv-icon-check: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E\");--pv-icon-chevron-right: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E\");--pv-icon-chevrons-up-down: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5'/%3E%3Cpath d='m7 9 5-5 5 5'/%3E%3C/svg%3E\");--pv-icon-circle-alert: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' x2='12' y1='8' y2='12'/%3E%3Cline x1='12' x2='12.01' y1='16' y2='16'/%3E%3C/svg%3E\");--pv-icon-circle-check: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E\");--pv-icon-copy: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E\");--pv-icon-ellipsis-vertical: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='12' cy='5' r='1'/%3E%3Ccircle cx='12' cy='19' r='1'/%3E%3C/svg%3E\");--pv-icon-globe: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20'/%3E%3Cpath d='M2 12h20'/%3E%3C/svg%3E\");--pv-icon-hash: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='4' x2='20' y1='9' y2='9'/%3E%3Cline x1='4' x2='20' y1='15' y2='15'/%3E%3Cline x1='10' x2='8' y1='3' y2='21'/%3E%3Cline x1='16' x2='14' y1='3' y2='21'/%3E%3C/svg%3E\");--pv-icon-info: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E\");--pv-icon-list: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 5h.01'/%3E%3Cpath d='M3 12h.01'/%3E%3Cpath d='M3 19h.01'/%3E%3Cpath d='M8 5h13'/%3E%3Cpath d='M8 12h13'/%3E%3Cpath d='M8 19h13'/%3E%3C/svg%3E\");--pv-icon-maximize: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3H5a2 2 0 0 0-2 2v3'/%3E%3Cpath d='M21 8V5a2 2 0 0 0-2-2h-3'/%3E%3Cpath d='M3 16v3a2 2 0 0 0 2 2h3'/%3E%3Cpath d='M16 21h3a2 2 0 0 0 2-2v-3'/%3E%3C/svg%3E\");--pv-icon-monitor: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='14' x='2' y='3' rx='2'/%3E%3Cline x1='8' x2='16' y1='21' y2='21'/%3E%3Cline x1='12' x2='12' y1='17' y2='21'/%3E%3C/svg%3E\");--pv-icon-moon: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401'/%3E%3C/svg%3E\");--pv-icon-rotate-ccw: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E\");--pv-icon-sparkles: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z'/%3E%3Cpath d='M20 2v4'/%3E%3Cpath d='M22 4h-4'/%3E%3Ccircle cx='4' cy='20' r='2'/%3E%3C/svg%3E\");--pv-icon-x: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18'/%3E%3Cpath d='m6 6 12 12'/%3E%3C/svg%3E\");--pv-icon-paperclip: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551'/%3E%3C/svg%3E\");--pv-icon-maximize-2: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='m21 3-7 7'/%3E%3Cpath d='m3 21 7-7'/%3E%3Cpath d='M9 21H3v-6'/%3E%3C/svg%3E\");--pv-icon-search: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21 21-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/svg%3E\");--pv-icon-sun: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2'/%3E%3Cpath d='M12 20v2'/%3E%3Cpath d='m4.93 4.93 1.41 1.41'/%3E%3Cpath d='m17.66 17.66 1.41 1.41'/%3E%3Cpath d='M2 12h2'/%3E%3Cpath d='M20 12h2'/%3E%3Cpath d='m6.34 17.66-1.41 1.41'/%3E%3Cpath d='m19.07 4.93-1.41 1.41'/%3E%3C/svg%3E\");--pv-icon-triangle-alert: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E\");--pv-icon-zoom-in: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' x2='16.65' y1='21' y2='16.65'/%3E%3Cline x1='11' x2='11' y1='8' y2='14'/%3E%3Cline x1='8' x2='14' y1='11' y2='11'/%3E%3C/svg%3E\");--pv-icon-zoom-out: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' x2='16.65' y1='21' y2='16.65'/%3E%3Cline x1='8' x2='14' y1='11' y2='11'/%3E%3C/svg%3E\")}[aria-label=\"Open search\"] svg>*,#theme-preference-menu-trigger svg>*,#theme-preference-menu-item-system svg.size-4>*,#theme-preference-menu-item-light svg.size-4>*,#theme-preference-menu-item-dark svg.size-4>*,[aria-label=\"Copy the contents from the code block\"] svg>*,[aria-label=\"Copy\"] svg>*,#page-context-menu-button svg>*,[aria-label=\"Navigate to header\"] svg>*,[aria-label=\"More actions\"] svg>*,#footer a svg>*,[data-component-part=\"products-selector-trigger\"] svg.size-3>*,#topbar-cta-button a svg>*,[data-component-part=\"pagination-chevron\"] svg>*,[aria-label=\"Open fullscreen\"] svg>*,[aria-label=\"Pan up\"] svg>*,[aria-label=\"Pan down\"] svg>*,[aria-label=\"Pan left\"] svg>*,[aria-label=\"Pan right\"] svg>*,[aria-label=\"Zoom in\"] svg>*,[aria-label=\"Zoom out\"] svg>*,[aria-label=\"Reset view\"] svg>*,[data-component-part=\"theme-preference-menu-item\"] svg.size-3\\.5>*,[aria-label=\"Select language\"] svg.size-3\\.5>*,.callout [data-component-part=\"callout-icon\"] svg>*,[aria-label=\"Toggle assistant panel\"] svg>*,[aria-label=\"Ask Assistant\"] svg>*,#ask-assistant-code-block-button svg>*,.chat-assistant-sheet-header svg>*,[aria-label=\"Send message\"] svg>*,[aria-label=\"Maximize assistant panel\"] svg>*,[aria-label=\"Close assistant panel\"] svg>*,[aria-label=\"Add attachment\"] svg>*,#table-of-contents button svg>*{display:none!important}[aria-label=\"Open search\"] svg,#theme-preference-menu-trigger svg,#theme-preference-menu-item-system svg.size-4,#theme-preference-menu-item-light svg.size-4,#theme-preference-menu-item-dark svg.size-4,[aria-label=\"Copy the contents from the code block\"] svg,[aria-label=\"Copy\"] svg,#page-context-menu-button svg,[aria-label=\"Navigate to header\"] svg,[aria-label=\"More actions\"] svg,#footer a svg,[data-component-part=\"products-selector-trigger\"] svg.size-3,#topbar-cta-button a svg,[data-component-part=\"pagination-chevron\"] svg,[aria-label=\"Open fullscreen\"] svg,[aria-label=\"Pan up\"] svg,[aria-label=\"Pan down\"] svg,[aria-label=\"Pan left\"] svg,[aria-label=\"Pan right\"] svg,[aria-label=\"Zoom in\"] svg,[aria-label=\"Zoom out\"] svg,[aria-label=\"Reset view\"] svg,[data-component-part=\"theme-preference-menu-item\"] svg.size-3\\.5,[aria-label=\"Select language\"] svg.size-3\\.5,.callout [data-component-part=\"callout-icon\"] svg,[aria-label=\"Toggle assistant panel\"] svg,[aria-label=\"Ask Assistant\"] svg,#ask-assistant-code-block-button svg,.chat-assistant-sheet-header svg,[aria-label=\"Send message\"] svg,[aria-label=\"Maximize assistant panel\"] svg,[aria-label=\"Close assistant panel\"] svg,[aria-label=\"Add attachment\"] svg,#table-of-contents button svg{background-color:currentColor!important;-webkit-mask-image:var(--pv-icon)!important;mask-image:var(--pv-icon)!important;-webkit-mask-repeat:no-repeat!important;mask-repeat:no-repeat!important;-webkit-mask-position:center!important;mask-position:center!important;-webkit-mask-size:contain!important;mask-size:contain!important}[aria-label=\"Open search\"]{--pv-icon: var(--pv-icon-search)}#theme-preference-menu-item-system{--pv-icon: var(--pv-icon-monitor)}#theme-preference-menu-content{display:none!important}html:not(.dark) #theme-preference-menu-trigger svg{--pv-icon: var(--pv-icon-sun)}html.dark #theme-preference-menu-trigger svg{--pv-icon: var(--pv-icon-moon)}#theme-preference-menu-item-light{--pv-icon: var(--pv-icon-sun)}#theme-preference-menu-item-dark{--pv-icon: var(--pv-icon-moon)}[aria-label=\"Copy the contents from the code block\"],[aria-label=\"Copy\"],#page-context-menu-button{--pv-icon: var(--pv-icon-copy)}[aria-label=\"Copy the contents from the code block\"] svg.text-primary{--pv-icon: var(--pv-icon-check)}[aria-label=\"Navigate to header\"]{--pv-icon: var(--pv-icon-hash)}[aria-label=\"More actions\"]{--pv-icon: var(--pv-icon-ellipsis-vertical)}#footer a{--pv-icon: var(--pv-icon-globe)}[data-component-part=\"products-selector-trigger\"],#topbar-cta-button a,[data-component-part=\"pagination-chevron\"]{--pv-icon: var(--pv-icon-chevron-right)}[aria-label=\"Open fullscreen\"]{--pv-icon: var(--pv-icon-maximize)}[aria-label=\"Pan up\"]{--pv-icon: var(--pv-icon-arrow-up)}[aria-label=\"Pan down\"]{--pv-icon: var(--pv-icon-arrow-down)}[aria-label=\"Pan left\"]{--pv-icon: var(--pv-icon-arrow-left)}[aria-label=\"Pan right\"]{--pv-icon: var(--pv-icon-arrow-right)}[aria-label=\"Zoom in\"]{--pv-icon: var(--pv-icon-zoom-in)}[aria-label=\"Zoom out\"]{--pv-icon: var(--pv-icon-zoom-out)}[aria-label=\"Reset view\"]{--pv-icon: var(--pv-icon-rotate-ccw)}[data-component-part=\"theme-preference-menu-item\"] svg.size-3\\.5{--pv-icon: var(--pv-icon-check)}[aria-label=\"Select language\"] svg.size-3\\.5{--pv-icon: var(--pv-icon-chevrons-up-down)}#table-of-contents button{--pv-icon: var(--pv-icon-list)}[aria-label=\"Toggle assistant panel\"],[aria-label=\"Ask Assistant\"],#ask-assistant-code-block-button,.chat-assistant-sheet-header{--pv-icon: var(--pv-icon-sparkles)}[aria-label=\"Send message\"]{--pv-icon: var(--pv-icon-arrow-up)}[aria-label=\"Maximize assistant panel\"]{--pv-icon: var(--pv-icon-maximize-2)}[aria-label=\"Close assistant panel\"]{--pv-icon: var(--pv-icon-x)}[aria-label=\"Add attachment\"]{--pv-icon: var(--pv-icon-paperclip)}.callout{--pv-icon: var(--pv-icon-info)}.callout.bg-yellow-50{--pv-icon: var(--pv-icon-triangle-alert)}.callout.bg-green-50{--pv-icon: var(--pv-icon-circle-check)}.callout.bg-red-50{--pv-icon: var(--pv-icon-circle-alert)}#search-bar-entry,#search-bar-entry-mobile,#assistant-entry,#assistant-entry-mobile{border:1px solid var(--pv-border)!important;border-radius:var(--pv-radius-md)!important;box-shadow:none!important}[data-component-part=\"search-modal\"],[data-component-part=\"search-input-container\"],.chat-assistant-floating-input>div>div,#chat-assistant-sheet{border-radius:var(--pv-radius-lg)!important;border-color:var(--pv-border)!important}[data-component-part=\"search-input-container\"]{border:1px solid var(--pv-border)!important}[data-component-part=\"search-list\"]{box-shadow:none!important}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}}"}],"page":{"pagePath":"api-reference/contracts/send-a-contract","slug":"/api-reference/contracts/send-a-contract","pageMetadata":{"title":"Send a contract","description":"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on.\n\nThe verification fills in what the offer says it fills in, you set the rest in `values`, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification's `offered_contracts` is signed, the verification completes. A contract workflow its version offers on a `condition` the run does not meet is refused with `409`.\n\nOne contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification.\n\nOn a verification whose version has `features.stamp_paper` on, each contract goes with a stamp paper as its first page: give it in `stamp_paper`, or leave it out to send again the one the last contract of that contract workflow on the verification went with.\n\nEach send uses a contract credit whether or not the contract is signed, and restarts the verification's retention window. Your note and the stamp paper are kept with the contract as sent.\n\nAsking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with `200` rather than `201`, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with `409`.","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts","href":"/api-reference/contracts/send-a-contract","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The verification fills in what the offer says it fills in, you set the rest in \", _jsx(_components.code, {\n children: \"values\"\n }), \", and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification’s \", _jsx(_components.code, {\n children: \"offered_contracts\"\n }), \" is signed, the verification completes. A contract workflow its version offers on a \", _jsx(_components.code, {\n children: \"condition\"\n }), \" the run does not meet is refused with \", _jsx(_components.code, {\n children: \"409\"\n }), \".\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"On a verification whose version has \", _jsx(_components.code, {\n children: \"features.stamp_paper\"\n }), \" on, each contract goes with a stamp paper as its first page: give it in \", _jsx(_components.code, {\n children: \"stamp_paper\"\n }), \", or leave it out to send again the one the last contract of that contract workflow on the verification went with.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Each send uses a contract credit whether or not the contract is signed, and restarts the verification’s retention window. Your note and the stamp paper are kept with the contract as sent.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with \", _jsx(_components.code, {\n children: \"200\"\n }), \" rather than \", _jsx(_components.code, {\n children: \"201\"\n }), \", and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with \", _jsx(_components.code, {\n children: \"409\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Send a contract","description":"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on.\n\nThe verification fills in what the offer says it fills in, you set the rest in `values`, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification's `offered_contracts` is signed, the verification completes. A contract workflow its version offers on a `condition` the run does not meet is refused with `409`.\n\nOne contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification.\n\nOn a verification whose version has `features.stamp_paper` on, each contract goes with a stamp paper as its first page: give it in `stamp_paper`, or leave it out to send again the one the last contract of that contract workflow on the verification went with.\n\nEach send uses a contract credit whether or not the contract is signed, and restarts the verification's retention window. Your note and the stamp paper are kept with the contract as sent.\n\nAsking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with `200` rather than `201`, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with `409`.","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts","href":"/api-reference/contracts/send-a-contract","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/privue/c105de40d6ba2650/theme-toggle.js"],"openApiReferenceData":{"operation":{"tags":["Contracts"],"summary":"Send a contract","description":"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on.\n\nThe verification fills in what the offer says it fills in, you set the rest in `values`, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification's `offered_contracts` is signed, the verification completes. A contract workflow its version offers on a `condition` the run does not meet is refused with `409`.\n\nOne contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification.\n\nOn a verification whose version has `features.stamp_paper` on, each contract goes with a stamp paper as its first page: give it in `stamp_paper`, or leave it out to send again the one the last contract of that contract workflow on the verification went with.\n\nEach send uses a contract credit whether or not the contract is signed, and restarts the verification's retention window. Your note and the stamp paper are kept with the contract as sent.\n\nAsking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with `200` rather than `201`, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with `409`.","operationId":"send_verifications__verification_id__contracts_post","security":["8aa72df5-b765-4a91-8f7e-f8e45abfc8ed"],"parameters":["244bb9e6-d1d9-4dbb-9992-02ab099c02d7"],"requestBody":"8bed0353-5d9e-4b7a-ba84-051f6faa4494","responses":{"200":"61cb5696-4c76-460e-b25c-4e9d67f70ee1","201":"d437cc92-a4db-4a4e-a2dc-e833540e8ae5","401":"85968ef3-6c6d-4d98-af47-67b20e27bec4","402":"3b45df76-be2e-4221-a6bf-da7f0cab6c29","403":"7c6c71b3-f697-4222-9734-50903782de4d","404":"2bba8476-4a18-401a-8ba9-1455cc65ea84","409":"cd012949-b9ff-434a-81c5-a67899abfa62","422":"0d99e8f5-7112-4fc8-b202-b37eddaa1ba8","429":"53ca3332-c061-4a2f-bbe7-f6b453dc0a59","500":"ab5d370d-e5bf-4362-8dbf-39b50c26aa41","503":"7539978b-8e99-4ec0-adc3-7f4075f8f174"},"method":"post","type":"path","servers":["769bbc79-30ef-42bd-8aa0-055f5837e0c5"],"path":"/verifications/{verification_id}/contracts","baseUrlOptions":["https://api.verify.privue.ai"],"title":"Send a contract","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"244bb9e6-d1d9-4dbb-9992-02ab099c02d7":{"name":"verification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Verification Id","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"contract_workflow":{"type":"string","maxLength":64,"pattern":"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$","title":"Contract Workflow","description":"The contract workflow to send, one of those the verification's version offers.","isRequired":true,"uniqueKey":"contract_workflow","typeLabel":"string"},"values":{"additionalProperties":{"type":"string","maxLength":2000,"uniqueKey":"values.additionalProperties","typeLabel":"string"},"type":"object","title":"Values","description":"A value for each variable the offer leaves to you, by its name in `open`: every one of them, except on a contract filled from a form, which needs only those its form requires and one of each group its preview names in `required_one_of`. A value of nothing but spaces counts as not given. One named in `dates` is a date as `YYYY-MM-DD`, which the contract prints as `12 April 2100`. The verification fills in the rest, and naming one of those is refused.","uniqueKey":"values","typeLabel":"Values · object"},"note":{"oneOf":[{"type":"string","title":"Note","description":"Your own words about this contract, for whoever reads it after you. Fixed once sent, and deleted with everything the user provided once the verification expires or you purge it.","maxLength":1000,"minLength":1,"uniqueKey":"note.oneOf.0","typeLabel":"string"},{"type":"null","title":"Note","description":"Your own words about this contract, for whoever reads it after you. Fixed once sent, and deleted with everything the user provided once the verification expires or you purge it.","uniqueKey":"note.oneOf.1","typeLabel":"null"}],"uniqueKey":"note","typeLabel":"string | null"},"stamp_paper":{"oneOf":[{"type":"object","title":"StampPaperUpload","description":"The stamp paper the contract goes out with, on a verification whose version has `features.stamp_paper` on, and refused on any other. The contract opens with it as its first page, turned the way up it is viewed, fitted to an A4 page, and marked with what it goes with, in the wording and at the place your workflow is set up with.\n\nLeave it out to send again the stamp paper the last contract of this contract workflow on the verification went with, which the preview's `stamp_paper.last_sent` names. A stamp paper is good for one contract, so a file identical to one that went with any signed contract of yours is refused, given again or left out, including once that contract's verification has expired or been purged.","required":["filename","content_type","content"],"properties":{"filename":{"type":"string","maxLength":255,"minLength":1,"title":"Filename","description":"The file's name, kept with the contract.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.filename","typeLabel":"string"},"content_type":{"type":"string","enum":["application/pdf","image/jpeg","image/png"],"title":"Content Type","description":"The file's MIME type, matching how its content is written: a PDF of one page, or a JPEG or PNG image.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.content_type","typeLabel":"enum\u003cstring>"},"content":{"type":"string","maxLength":27962028,"minLength":1,"title":"Content","description":"The file itself, base64-encoded, up to 20 MB.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.content","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"stamp_paper.oneOf.0","typeLabel":"StampPaperUpload · object"},{"type":"null","description":"The stamp paper the contract goes out with, on a verification whose version has `features.stamp_paper` on, and refused on any other. The contract opens with it as its first page, turned the way up it is viewed, fitted to an A4 page, and marked with what it goes with, in the wording and at the place your workflow is set up with.\n\nLeave it out to send again the stamp paper the last contract of this contract workflow on the verification went with, which the preview's `stamp_paper.last_sent` names. A stamp paper is good for one contract, so a file identical to one that went with any signed contract of yours is refused, given again or left out, including once that contract's verification has expired or been purged.","uniqueKey":"stamp_paper.oneOf.1","typeLabel":"null"}],"uniqueKey":"stamp_paper","typeLabel":"StampPaperUpload · object | null"}},"additionalProperties":false,"type":"object","required":["contract_workflow"],"title":"SendContractRequest","description":"What sending a contract takes: which one, the values you set, and a note of your own.","examples":[{"contract_workflow":"dealer-agreement","note":"Credit limit as agreed with the regional head","values":{"credit_limit":"5,00,000","start_date":"2026-11-01"}}],"uniqueKey":"","typeLabel":"SendContractRequest · object"},"examples":{"Example":{"title":"Example","value":{"contract_workflow":"dealer-agreement","note":"Credit limit as agreed with the regional head","values":{"credit_limit":"5,00,000","start_date":"2026-11-01"}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"61cb5696-4c76-460e-b25c-4e9d67f70ee1":{"description":"The contract already out, as this send asked again.","content":{"application/json":{"example":{"id":"5e0c9a41-7b2d-4f68-a3c1-9d8e2f60b7a4","verification_id":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","run":1,"contract_workflow":"dealer-agreement","name":"Dealer agreement","status":"pending","sent_at":"2026-08-10T16:12:40","expires_at":"2026-08-24T16:12:40","withdrawal_asked_at":null,"settled_at":null,"values":{"dealer_name":"Asha Traders Private Limited","gstin":"27AABCA1234F1Z5","credit_limit":"5,00,000","start_date":"1 November 2026"},"note":"Credit limit as agreed with the regional head","signers":[{"name":"Asha Rao","mobile":"9876543210","email":"asha@ashatraders.example","status":"pending","signed_at":null,"link":"https://contracting-v2.signzy.app/b2ee4ca5-8c22-468c-9e9a-cb00e2562fa7/main","failure":null,"attempts":0,"aadhaar":null,"messages":[{"kind":"signing-link","channel":"sms","sent_at":"2026-08-10T16:12:41","delivered":true,"tries":1,"detail":"Message successfully delivered to the user"}]}],"stamp_paper":null,"sent_document":{"sha256":"0ca1d2c5c03e9bed744a4c3d18b6e2f71a9c05d4e83b27f6a1d9c4e05b72f3a8","size_bytes":29412},"signed_files":null,"callback":null},"schema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"The contract's id.","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"verification_id":{"type":"string","format":"uuid","title":"Verification Id","description":"The verification it was sent on.","isRequired":true,"uniqueKey":"verification_id","typeLabel":"string\u003cuuid>"},"run":{"type":"integer","minimum":1,"title":"Run","description":"Which run of the verification it was sent on: 1 for the first, one more after each reset. A run is signed on its own contracts alone, so one sent before a reset counts for nothing after it.","isRequired":true,"uniqueKey":"run","typeLabel":"integer"},"contract_workflow":{"type":"string","title":"Contract Workflow","description":"The contract workflow it was drawn up from.","isRequired":true,"uniqueKey":"contract_workflow","typeLabel":"string"},"name":{"type":"string","title":"Name","description":"What its signers were sent it called.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"status":{"type":"string","enum":["pending","withdrawing","signed","withdrawn","expired","failed"],"title":"ContractStatus","description":"pending while it is with its signers; withdrawing once you asked for it back, until it is taken back, which waits while a signer is part way through signing and in which time it can still be signed; signed once every signer has signed and its signed document is kept; expired once its signing links ran out first; failed once a signer ran out of attempts at the Aadhaar checks; withdrawn once it was taken back. Every status but pending and withdrawing is final.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When it was sent.","isRequired":true,"uniqueKey":"sent_at","typeLabel":"string\u003cdate-time>"},"expires_at":{"type":"string","format":"date-time","title":"Expires At","description":"When its signing links stop working, if it is not signed first.","isRequired":true,"uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"withdrawal_asked_at":{"oneOf":[{"type":"string","title":"Withdrawal Asked At","description":"When it was asked to be withdrawn: by you, by rejecting or resetting its verification, or by its verification expiring. Null where it never was. A contract asked to be withdrawn can still end signed, where its signers finished first.","format":"date-time","isRequired":true,"uniqueKey":"withdrawal_asked_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Withdrawal Asked At","description":"When it was asked to be withdrawn: by you, by rejecting or resetting its verification, or by its verification expiring. Null where it never was. A contract asked to be withdrawn can still end signed, where its signers finished first.","isRequired":true,"uniqueKey":"withdrawal_asked_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"withdrawal_asked_at","typeLabel":"string\u003cdate-time> | null"},"settled_at":{"oneOf":[{"type":"string","title":"Settled At","description":"When it reached its final status. Null while it is out.","format":"date-time","isRequired":true,"uniqueKey":"settled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Settled At","description":"When it reached its final status. Null while it is out.","isRequired":true,"uniqueKey":"settled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"settled_at","typeLabel":"string\u003cdate-time> | null"},"values":{"oneOf":[{"type":"object","title":"Values","description":"Every value of its template, as sent: the ones the verification filled in and the ones you set. A contract drawn from a form records each input it was filled with: text as given, an address on one line, and anything else, such as a number, its nominees or a yes or no, as JSON. Null once the verification has expired.","additionalProperties":{"type":"string","uniqueKey":"values.oneOf.0.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"values.oneOf.0","typeLabel":"Values · object"},{"type":"null","title":"Values","description":"Every value of its template, as sent: the ones the verification filled in and the ones you set. A contract drawn from a form records each input it was filled with: text as given, an address on one line, and anything else, such as a number, its nominees or a yes or no, as JSON. Null once the verification has expired.","isRequired":true,"uniqueKey":"values.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"values","typeLabel":"Values · object | null"},"note":{"oneOf":[{"type":"string","title":"Note","description":"Your note, as sent. Null where you wrote none, and once the verification has expired.","isRequired":true,"uniqueKey":"note.oneOf.0","typeLabel":"string"},{"type":"null","title":"Note","description":"Your note, as sent. Null where you wrote none, and once the verification has expired.","isRequired":true,"uniqueKey":"note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"note","typeLabel":"string | null"},"signers":{"oneOf":[{"type":"array","items":{"properties":{"name":{"type":"string","title":"Name","description":"The name the contract is made out to them in.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].name","typeLabel":"string"},"mobile":{"oneOf":[{"type":"string","title":"Mobile","description":"Their mobile number, which their link went to by SMS. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile.oneOf.0","typeLabel":"string"},{"type":"null","title":"Mobile","description":"Their mobile number, which their link went to by SMS. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","title":"Email","description":"Their email address, which their link went to by email. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","title":"Email","description":"Their email address, which their link went to by email. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email","typeLabel":"string | null"},"status":{"type":"string","enum":["pending","signed","failed","cancelled"],"title":"SignerStatus","description":"pending until they sign; signed once they have; failed while their last attempt at the Aadhaar checks failed, which they may try again; cancelled once they ran out of attempts, which fails the contract.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"signed_at":{"oneOf":[{"type":"string","title":"Signed At","description":"When they signed. Null until they have.","format":"date-time","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Signed At","description":"When they signed. Null until they have.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at","typeLabel":"string\u003cdate-time> | null"},"link":{"oneOf":[{"type":"string","title":"Link","description":"Where they sign, for you to hand them yourself. They are also sent it. Null once the contract has settled.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link.oneOf.0","typeLabel":"string"},{"type":"null","title":"Link","description":"Where they sign, for you to hand them yourself. They are also sent it. Null once the contract has settled.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link","typeLabel":"string | null"},"failure":{"oneOf":[{"type":"string","title":"Failure","description":"Why their last attempt failed, on a failed or cancelled signer.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure.oneOf.0","typeLabel":"string"},{"type":"null","title":"Failure","description":"Why their last attempt failed, on a failed or cancelled signer.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure","typeLabel":"string | null"},"attempts":{"type":"integer","title":"Attempts","description":"How many times they opened their link and tried to sign. Each attempt that reached the Aadhaar checks is an eSign, whether or not it passed.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].attempts","typeLabel":"integer"},"aadhaar":{"oneOf":[{"type":"object","title":"SignedAadhaarRecord","description":"Whose Aadhaar they signed with. Null until they sign.","required":["name","year_of_birth","gender","pincode","state","uid_last_four"],"properties":{"name":{"type":"string","title":"Name","description":"The name on the Aadhaar.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.name","typeLabel":"string"},"year_of_birth":{"type":"string","title":"Year Of Birth","description":"The year of birth on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.year_of_birth","typeLabel":"string"},"gender":{"type":"string","title":"Gender","description":"The gender on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.gender","typeLabel":"string"},"pincode":{"type":"string","title":"Pincode","description":"The pincode on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.pincode","typeLabel":"string"},"state":{"type":"string","title":"State","description":"The state on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.state","typeLabel":"string"},"uid_last_four":{"type":"string","title":"Uid Last Four","description":"The last four digits of the Aadhaar number.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.uid_last_four","typeLabel":"string"}},"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0","typeLabel":"SignedAadhaarRecord · object"},{"type":"null","description":"Whose Aadhaar they signed with. Null until they sign.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar","typeLabel":"SignedAadhaarRecord · object | null"},"messages":{"items":{"properties":{"kind":{"type":"string","enum":["signing-link","confirmation","audit-certificate","other"],"title":"MessageKind","description":"signing-link for their link to sign, when their turn came and with each reminder; confirmation for the one telling them they signed; audit-certificate for the certificate, once everyone signed; other for any other.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"channel":{"type":"string","title":"Channel","description":"How it went: `sms` or `email`.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].channel","typeLabel":"string"},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When it was last tried.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].sent_at","typeLabel":"string\u003cdate-time>"},"delivered":{"type":"boolean","title":"Delivered","description":"Whether that try was delivered.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].delivered","typeLabel":"boolean"},"tries":{"type":"integer","title":"Tries","description":"How many times it was tried.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].tries","typeLabel":"integer"},"detail":{"oneOf":[{"type":"string","title":"Detail","description":"How the last try went, in Signzy's words, where it said.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"null","title":"Detail","description":"How the last try went, in Signzy's words, where it said.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail","typeLabel":"string | null"}},"type":"object","required":["kind","channel","sent_at","delivered","tries","detail"],"title":"SignerMessageRecord","description":"One message sent a signer over one channel.","uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX]","typeLabel":"SignerMessageRecord · object"},"type":"array","title":"Messages","description":"Every message sent them, in the order they went. Empty until the contract is first read.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages","typeLabel":"SignerMessageRecord · object[]"}},"type":"object","required":["name","mobile","email","status","signed_at","link","failure","attempts","aadhaar","messages"],"title":"ContractSignerRecord","description":"One signer of a contract: who it went to, and where they stand.","uniqueKey":"signers.oneOf.0.items.[INDEX]","typeLabel":"ContractSignerRecord · object"},"title":"Signers","description":"Everyone who signs it, in the order they sign. Null once the verification has expired.","isRequired":true,"uniqueKey":"signers.oneOf.0","typeLabel":"ContractSignerRecord · object[]"},{"type":"null","title":"Signers","description":"Everyone who signs it, in the order they sign. Null once the verification has expired.","isRequired":true,"uniqueKey":"signers.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers","typeLabel":"ContractSignerRecord · object[] | null"},"stamp_paper":{"oneOf":[{"type":"object","title":"StampPaperRecord","description":"The stamp paper it went with, as you sent it, held for you to download. Null on a workflow without stamp paper, and once the verification has expired.","required":["filename","content_type","sha256","size_bytes"],"properties":{"filename":{"type":"string","title":"Filename","description":"The file's name, as you sent it.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.filename","typeLabel":"string"},"content_type":{"type":"string","title":"Content Type","description":"The file's MIME type: `application/pdf`, `image/jpeg` or `image/png`.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.content_type","typeLabel":"string"},"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, to check a download against.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.size_bytes","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"stamp_paper.oneOf.0","typeLabel":"StampPaperRecord · object"},{"type":"null","description":"The stamp paper it went with, as you sent it, held for you to download. Null on a workflow without stamp paper, and once the verification has expired.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stamp_paper","typeLabel":"StampPaperRecord · object | null"},"sent_document":{"oneOf":[{"type":"object","title":"KeptFileRecord","description":"The contract as it went to its signers, held for you to download, with the hash to check a download against. Null until the contract is first read, which follows the send within moments and at most a few minutes, and once the verification has expired.","required":["sha256","size_bytes"],"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"sent_document.oneOf.0.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"sent_document.oneOf.0.size_bytes","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"sent_document.oneOf.0","typeLabel":"KeptFileRecord · object"},{"type":"null","description":"The contract as it went to its signers, held for you to download, with the hash to check a download against. Null until the contract is first read, which follows the send within moments and at most a few minutes, and once the verification has expired.","isRequired":true,"uniqueKey":"sent_document.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"sent_document","typeLabel":"KeptFileRecord · object | null"},"signed_files":{"oneOf":[{"type":"object","title":"SignedFilesRecord","description":"Its signed document and audit certificate, held for you to download, each with the hash to check a download against. Null until it is signed, and once the verification has expired.","required":["signed_document","audit_certificate"],"properties":{"signed_document":{"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document.size_bytes","typeLabel":"integer"}},"type":"object","required":["sha256","size_bytes"],"title":"KeptFileRecord","description":"The contract as every signer signed it.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document","typeLabel":"KeptFileRecord · object"},"audit_certificate":{"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate.size_bytes","typeLabel":"integer"}},"type":"object","required":["sha256","size_bytes"],"title":"KeptFileRecord","description":"Signzy's certificate of who signed it, when and how.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate","typeLabel":"KeptFileRecord · object"}},"isRequired":true,"uniqueKey":"signed_files.oneOf.0","typeLabel":"SignedFilesRecord · object"},{"type":"null","description":"Its signed document and audit certificate, held for you to download, each with the hash to check a download against. Null until it is signed, and once the verification has expired.","isRequired":true,"uniqueKey":"signed_files.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signed_files","typeLabel":"SignedFilesRecord · object | null"},"callback":{"oneOf":[{"type":"object","title":"CallbackRecord","description":"How the callback its final status owes you ended: `contract.signed`, `contract.expired`, `contract.failed` or `contract.withdrawn`. Null until it settles, and on every contract of a workflow with no callback endpoint registered.","required":["status","settled_at","reason"],"properties":{"status":{"type":"string","enum":["delivered","failed"],"title":"CallbackStatus","description":"delivered once your endpoint accepted the callback; failed once every attempt at it was spent without one being accepted.","isRequired":true,"uniqueKey":"callback.oneOf.0.status","typeLabel":"enum\u003cstring>"},"settled_at":{"type":"string","format":"date-time","title":"Settled At","description":"When the callback was accepted, or when the attempts ran out.","isRequired":true,"uniqueKey":"callback.oneOf.0.settled_at","typeLabel":"string\u003cdate-time>"},"reason":{"oneOf":[{"type":"string","title":"Reason","description":"Why no attempt was accepted, on a failed callback: what your endpoint last answered, or that it was never sent, through a fault on our side. Null on a delivered one.","isRequired":true,"uniqueKey":"callback.oneOf.0.reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","description":"Why no attempt was accepted, on a failed callback: what your endpoint last answered, or that it was never sent, through a fault on our side. Null on a delivered one.","isRequired":true,"uniqueKey":"callback.oneOf.0.reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"callback.oneOf.0.reason","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"callback.oneOf.0","typeLabel":"CallbackRecord · object"},{"type":"null","description":"How the callback its final status owes you ended: `contract.signed`, `contract.expired`, `contract.failed` or `contract.withdrawn`. Null until it settles, and on every contract of a workflow with no callback endpoint registered.","isRequired":true,"uniqueKey":"callback.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"callback","typeLabel":"CallbackRecord · object | null"}},"type":"object","required":["id","verification_id","run","contract_workflow","name","status","sent_at","expires_at","withdrawal_asked_at","settled_at","values","note","signers","stamp_paper","sent_document","signed_files","callback"],"title":"ContractRecord","description":"One contract sent on a verification, as it stands.","uniqueKey":"","typeLabel":"ContractRecord · object"},"examples":{"Example":{"title":"Example","value":{"id":"5e0c9a41-7b2d-4f68-a3c1-9d8e2f60b7a4","verification_id":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","run":1,"contract_workflow":"dealer-agreement","name":"Dealer agreement","status":"pending","sent_at":"2026-08-10T16:12:40","expires_at":"2026-08-24T16:12:40","withdrawal_asked_at":null,"settled_at":null,"values":{"dealer_name":"Asha Traders Private Limited","gstin":"27AABCA1234F1Z5","credit_limit":"5,00,000","start_date":"1 November 2026"},"note":"Credit limit as agreed with the regional head","signers":[{"name":"Asha Rao","mobile":"9876543210","email":"asha@ashatraders.example","status":"pending","signed_at":null,"link":"https://contracting-v2.signzy.app/b2ee4ca5-8c22-468c-9e9a-cb00e2562fa7/main","failure":null,"attempts":0,"aadhaar":null,"messages":[{"kind":"signing-link","channel":"sms","sent_at":"2026-08-10T16:12:41","delivered":true,"tries":1,"detail":"Message successfully delivered to the user"}]}],"stamp_paper":null,"sent_document":{"sha256":"0ca1d2c5c03e9bed744a4c3d18b6e2f71a9c05d4e83b27f6a1d9c4e05b72f3a8","size_bytes":29412},"signed_files":null,"callback":null}}},"exampleType":"examples"}},"exampleType":"examples"},"d437cc92-a4db-4a4e-a2dc-e833540e8ae5":{"description":"The contract, out with its signers.","content":{"application/json":{"example":{"id":"5e0c9a41-7b2d-4f68-a3c1-9d8e2f60b7a4","verification_id":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","run":1,"contract_workflow":"dealer-agreement","name":"Dealer agreement","status":"pending","sent_at":"2026-08-10T16:12:40","expires_at":"2026-08-24T16:12:40","withdrawal_asked_at":null,"settled_at":null,"values":{"dealer_name":"Asha Traders Private Limited","gstin":"27AABCA1234F1Z5","credit_limit":"5,00,000","start_date":"1 November 2026"},"note":"Credit limit as agreed with the regional head","signers":[{"name":"Asha Rao","mobile":"9876543210","email":"asha@ashatraders.example","status":"pending","signed_at":null,"link":"https://contracting-v2.signzy.app/b2ee4ca5-8c22-468c-9e9a-cb00e2562fa7/main","failure":null,"attempts":0,"aadhaar":null,"messages":[{"kind":"signing-link","channel":"sms","sent_at":"2026-08-10T16:12:41","delivered":true,"tries":1,"detail":"Message successfully delivered to the user"}]}],"stamp_paper":null,"sent_document":{"sha256":"0ca1d2c5c03e9bed744a4c3d18b6e2f71a9c05d4e83b27f6a1d9c4e05b72f3a8","size_bytes":29412},"signed_files":null,"callback":null},"schema":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"The contract's id.","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"verification_id":{"type":"string","format":"uuid","title":"Verification Id","description":"The verification it was sent on.","isRequired":true,"uniqueKey":"verification_id","typeLabel":"string\u003cuuid>"},"run":{"type":"integer","minimum":1,"title":"Run","description":"Which run of the verification it was sent on: 1 for the first, one more after each reset. A run is signed on its own contracts alone, so one sent before a reset counts for nothing after it.","isRequired":true,"uniqueKey":"run","typeLabel":"integer"},"contract_workflow":{"type":"string","title":"Contract Workflow","description":"The contract workflow it was drawn up from.","isRequired":true,"uniqueKey":"contract_workflow","typeLabel":"string"},"name":{"type":"string","title":"Name","description":"What its signers were sent it called.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"status":{"type":"string","enum":["pending","withdrawing","signed","withdrawn","expired","failed"],"title":"ContractStatus","description":"pending while it is with its signers; withdrawing once you asked for it back, until it is taken back, which waits while a signer is part way through signing and in which time it can still be signed; signed once every signer has signed and its signed document is kept; expired once its signing links ran out first; failed once a signer ran out of attempts at the Aadhaar checks; withdrawn once it was taken back. Every status but pending and withdrawing is final.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When it was sent.","isRequired":true,"uniqueKey":"sent_at","typeLabel":"string\u003cdate-time>"},"expires_at":{"type":"string","format":"date-time","title":"Expires At","description":"When its signing links stop working, if it is not signed first.","isRequired":true,"uniqueKey":"expires_at","typeLabel":"string\u003cdate-time>"},"withdrawal_asked_at":{"oneOf":[{"type":"string","title":"Withdrawal Asked At","description":"When it was asked to be withdrawn: by you, by rejecting or resetting its verification, or by its verification expiring. Null where it never was. A contract asked to be withdrawn can still end signed, where its signers finished first.","format":"date-time","isRequired":true,"uniqueKey":"withdrawal_asked_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Withdrawal Asked At","description":"When it was asked to be withdrawn: by you, by rejecting or resetting its verification, or by its verification expiring. Null where it never was. A contract asked to be withdrawn can still end signed, where its signers finished first.","isRequired":true,"uniqueKey":"withdrawal_asked_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"withdrawal_asked_at","typeLabel":"string\u003cdate-time> | null"},"settled_at":{"oneOf":[{"type":"string","title":"Settled At","description":"When it reached its final status. Null while it is out.","format":"date-time","isRequired":true,"uniqueKey":"settled_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Settled At","description":"When it reached its final status. Null while it is out.","isRequired":true,"uniqueKey":"settled_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"settled_at","typeLabel":"string\u003cdate-time> | null"},"values":{"oneOf":[{"type":"object","title":"Values","description":"Every value of its template, as sent: the ones the verification filled in and the ones you set. A contract drawn from a form records each input it was filled with: text as given, an address on one line, and anything else, such as a number, its nominees or a yes or no, as JSON. Null once the verification has expired.","additionalProperties":{"type":"string","uniqueKey":"values.oneOf.0.additionalProperties","typeLabel":"string"},"isRequired":true,"uniqueKey":"values.oneOf.0","typeLabel":"Values · object"},{"type":"null","title":"Values","description":"Every value of its template, as sent: the ones the verification filled in and the ones you set. A contract drawn from a form records each input it was filled with: text as given, an address on one line, and anything else, such as a number, its nominees or a yes or no, as JSON. Null once the verification has expired.","isRequired":true,"uniqueKey":"values.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"values","typeLabel":"Values · object | null"},"note":{"oneOf":[{"type":"string","title":"Note","description":"Your note, as sent. Null where you wrote none, and once the verification has expired.","isRequired":true,"uniqueKey":"note.oneOf.0","typeLabel":"string"},{"type":"null","title":"Note","description":"Your note, as sent. Null where you wrote none, and once the verification has expired.","isRequired":true,"uniqueKey":"note.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"note","typeLabel":"string | null"},"signers":{"oneOf":[{"type":"array","items":{"properties":{"name":{"type":"string","title":"Name","description":"The name the contract is made out to them in.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].name","typeLabel":"string"},"mobile":{"oneOf":[{"type":"string","title":"Mobile","description":"Their mobile number, which their link went to by SMS. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile.oneOf.0","typeLabel":"string"},{"type":"null","title":"Mobile","description":"Their mobile number, which their link went to by SMS. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].mobile","typeLabel":"string | null"},"email":{"oneOf":[{"type":"string","title":"Email","description":"Their email address, which their link went to by email. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email.oneOf.0","typeLabel":"string"},{"type":"null","title":"Email","description":"Their email address, which their link went to by email. Null where none was sent.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].email","typeLabel":"string | null"},"status":{"type":"string","enum":["pending","signed","failed","cancelled"],"title":"SignerStatus","description":"pending until they sign; signed once they have; failed while their last attempt at the Aadhaar checks failed, which they may try again; cancelled once they ran out of attempts, which fails the contract.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"signed_at":{"oneOf":[{"type":"string","title":"Signed At","description":"When they signed. Null until they have.","format":"date-time","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Signed At","description":"When they signed. Null until they have.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].signed_at","typeLabel":"string\u003cdate-time> | null"},"link":{"oneOf":[{"type":"string","title":"Link","description":"Where they sign, for you to hand them yourself. They are also sent it. Null once the contract has settled.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link.oneOf.0","typeLabel":"string"},{"type":"null","title":"Link","description":"Where they sign, for you to hand them yourself. They are also sent it. Null once the contract has settled.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].link","typeLabel":"string | null"},"failure":{"oneOf":[{"type":"string","title":"Failure","description":"Why their last attempt failed, on a failed or cancelled signer.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure.oneOf.0","typeLabel":"string"},{"type":"null","title":"Failure","description":"Why their last attempt failed, on a failed or cancelled signer.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].failure","typeLabel":"string | null"},"attempts":{"type":"integer","title":"Attempts","description":"How many times they opened their link and tried to sign. Each attempt that reached the Aadhaar checks is an eSign, whether or not it passed.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].attempts","typeLabel":"integer"},"aadhaar":{"oneOf":[{"type":"object","title":"SignedAadhaarRecord","description":"Whose Aadhaar they signed with. Null until they sign.","required":["name","year_of_birth","gender","pincode","state","uid_last_four"],"properties":{"name":{"type":"string","title":"Name","description":"The name on the Aadhaar.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.name","typeLabel":"string"},"year_of_birth":{"type":"string","title":"Year Of Birth","description":"The year of birth on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.year_of_birth","typeLabel":"string"},"gender":{"type":"string","title":"Gender","description":"The gender on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.gender","typeLabel":"string"},"pincode":{"type":"string","title":"Pincode","description":"The pincode on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.pincode","typeLabel":"string"},"state":{"type":"string","title":"State","description":"The state on it.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.state","typeLabel":"string"},"uid_last_four":{"type":"string","title":"Uid Last Four","description":"The last four digits of the Aadhaar number.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0.uid_last_four","typeLabel":"string"}},"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.0","typeLabel":"SignedAadhaarRecord · object"},{"type":"null","description":"Whose Aadhaar they signed with. Null until they sign.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].aadhaar","typeLabel":"SignedAadhaarRecord · object | null"},"messages":{"items":{"properties":{"kind":{"type":"string","enum":["signing-link","confirmation","audit-certificate","other"],"title":"MessageKind","description":"signing-link for their link to sign, when their turn came and with each reminder; confirmation for the one telling them they signed; audit-certificate for the certificate, once everyone signed; other for any other.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"channel":{"type":"string","title":"Channel","description":"How it went: `sms` or `email`.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].channel","typeLabel":"string"},"sent_at":{"type":"string","format":"date-time","title":"Sent At","description":"When it was last tried.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].sent_at","typeLabel":"string\u003cdate-time>"},"delivered":{"type":"boolean","title":"Delivered","description":"Whether that try was delivered.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].delivered","typeLabel":"boolean"},"tries":{"type":"integer","title":"Tries","description":"How many times it was tried.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].tries","typeLabel":"integer"},"detail":{"oneOf":[{"type":"string","title":"Detail","description":"How the last try went, in Signzy's words, where it said.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail.oneOf.0","typeLabel":"string"},{"type":"null","title":"Detail","description":"How the last try went, in Signzy's words, where it said.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX].detail","typeLabel":"string | null"}},"type":"object","required":["kind","channel","sent_at","delivered","tries","detail"],"title":"SignerMessageRecord","description":"One message sent a signer over one channel.","uniqueKey":"signers.oneOf.0.items.[INDEX].messages.items.[INDEX]","typeLabel":"SignerMessageRecord · object"},"type":"array","title":"Messages","description":"Every message sent them, in the order they went. Empty until the contract is first read.","isRequired":true,"uniqueKey":"signers.oneOf.0.items.[INDEX].messages","typeLabel":"SignerMessageRecord · object[]"}},"type":"object","required":["name","mobile","email","status","signed_at","link","failure","attempts","aadhaar","messages"],"title":"ContractSignerRecord","description":"One signer of a contract: who it went to, and where they stand.","uniqueKey":"signers.oneOf.0.items.[INDEX]","typeLabel":"ContractSignerRecord · object"},"title":"Signers","description":"Everyone who signs it, in the order they sign. Null once the verification has expired.","isRequired":true,"uniqueKey":"signers.oneOf.0","typeLabel":"ContractSignerRecord · object[]"},{"type":"null","title":"Signers","description":"Everyone who signs it, in the order they sign. Null once the verification has expired.","isRequired":true,"uniqueKey":"signers.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signers","typeLabel":"ContractSignerRecord · object[] | null"},"stamp_paper":{"oneOf":[{"type":"object","title":"StampPaperRecord","description":"The stamp paper it went with, as you sent it, held for you to download. Null on a workflow without stamp paper, and once the verification has expired.","required":["filename","content_type","sha256","size_bytes"],"properties":{"filename":{"type":"string","title":"Filename","description":"The file's name, as you sent it.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.filename","typeLabel":"string"},"content_type":{"type":"string","title":"Content Type","description":"The file's MIME type: `application/pdf`, `image/jpeg` or `image/png`.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.content_type","typeLabel":"string"},"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, to check a download against.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.0.size_bytes","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"stamp_paper.oneOf.0","typeLabel":"StampPaperRecord · object"},{"type":"null","description":"The stamp paper it went with, as you sent it, held for you to download. Null on a workflow without stamp paper, and once the verification has expired.","isRequired":true,"uniqueKey":"stamp_paper.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stamp_paper","typeLabel":"StampPaperRecord · object | null"},"sent_document":{"oneOf":[{"type":"object","title":"KeptFileRecord","description":"The contract as it went to its signers, held for you to download, with the hash to check a download against. Null until the contract is first read, which follows the send within moments and at most a few minutes, and once the verification has expired.","required":["sha256","size_bytes"],"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"sent_document.oneOf.0.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"sent_document.oneOf.0.size_bytes","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"sent_document.oneOf.0","typeLabel":"KeptFileRecord · object"},{"type":"null","description":"The contract as it went to its signers, held for you to download, with the hash to check a download against. Null until the contract is first read, which follows the send within moments and at most a few minutes, and once the verification has expired.","isRequired":true,"uniqueKey":"sent_document.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"sent_document","typeLabel":"KeptFileRecord · object | null"},"signed_files":{"oneOf":[{"type":"object","title":"SignedFilesRecord","description":"Its signed document and audit certificate, held for you to download, each with the hash to check a download against. Null until it is signed, and once the verification has expired.","required":["signed_document","audit_certificate"],"properties":{"signed_document":{"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document.size_bytes","typeLabel":"integer"}},"type":"object","required":["sha256","size_bytes"],"title":"KeptFileRecord","description":"The contract as every signer signed it.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.signed_document","typeLabel":"KeptFileRecord · object"},"audit_certificate":{"properties":{"sha256":{"type":"string","title":"Sha256","description":"The SHA-256 of the file, in hex, as Signzy stated it and as the file held was checked against. Hash what you download and compare.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate.sha256","typeLabel":"string"},"size_bytes":{"type":"integer","title":"Size Bytes","description":"The file's size in bytes.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate.size_bytes","typeLabel":"integer"}},"type":"object","required":["sha256","size_bytes"],"title":"KeptFileRecord","description":"Signzy's certificate of who signed it, when and how.","isRequired":true,"uniqueKey":"signed_files.oneOf.0.audit_certificate","typeLabel":"KeptFileRecord · object"}},"isRequired":true,"uniqueKey":"signed_files.oneOf.0","typeLabel":"SignedFilesRecord · object"},{"type":"null","description":"Its signed document and audit certificate, held for you to download, each with the hash to check a download against. Null until it is signed, and once the verification has expired.","isRequired":true,"uniqueKey":"signed_files.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"signed_files","typeLabel":"SignedFilesRecord · object | null"},"callback":{"oneOf":[{"type":"object","title":"CallbackRecord","description":"How the callback its final status owes you ended: `contract.signed`, `contract.expired`, `contract.failed` or `contract.withdrawn`. Null until it settles, and on every contract of a workflow with no callback endpoint registered.","required":["status","settled_at","reason"],"properties":{"status":{"type":"string","enum":["delivered","failed"],"title":"CallbackStatus","description":"delivered once your endpoint accepted the callback; failed once every attempt at it was spent without one being accepted.","isRequired":true,"uniqueKey":"callback.oneOf.0.status","typeLabel":"enum\u003cstring>"},"settled_at":{"type":"string","format":"date-time","title":"Settled At","description":"When the callback was accepted, or when the attempts ran out.","isRequired":true,"uniqueKey":"callback.oneOf.0.settled_at","typeLabel":"string\u003cdate-time>"},"reason":{"oneOf":[{"type":"string","title":"Reason","description":"Why no attempt was accepted, on a failed callback: what your endpoint last answered, or that it was never sent, through a fault on our side. Null on a delivered one.","isRequired":true,"uniqueKey":"callback.oneOf.0.reason.oneOf.0","typeLabel":"string"},{"type":"null","title":"Reason","description":"Why no attempt was accepted, on a failed callback: what your endpoint last answered, or that it was never sent, through a fault on our side. Null on a delivered one.","isRequired":true,"uniqueKey":"callback.oneOf.0.reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"callback.oneOf.0.reason","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"callback.oneOf.0","typeLabel":"CallbackRecord · object"},{"type":"null","description":"How the callback its final status owes you ended: `contract.signed`, `contract.expired`, `contract.failed` or `contract.withdrawn`. Null until it settles, and on every contract of a workflow with no callback endpoint registered.","isRequired":true,"uniqueKey":"callback.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"callback","typeLabel":"CallbackRecord · object | null"}},"type":"object","required":["id","verification_id","run","contract_workflow","name","status","sent_at","expires_at","withdrawal_asked_at","settled_at","values","note","signers","stamp_paper","sent_document","signed_files","callback"],"title":"ContractRecord","description":"One contract sent on a verification, as it stands.","uniqueKey":"","typeLabel":"ContractRecord · object"},"examples":{"Example":{"title":"Example","value":{"id":"5e0c9a41-7b2d-4f68-a3c1-9d8e2f60b7a4","verification_id":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","run":1,"contract_workflow":"dealer-agreement","name":"Dealer agreement","status":"pending","sent_at":"2026-08-10T16:12:40","expires_at":"2026-08-24T16:12:40","withdrawal_asked_at":null,"settled_at":null,"values":{"dealer_name":"Asha Traders Private Limited","gstin":"27AABCA1234F1Z5","credit_limit":"5,00,000","start_date":"1 November 2026"},"note":"Credit limit as agreed with the regional head","signers":[{"name":"Asha Rao","mobile":"9876543210","email":"asha@ashatraders.example","status":"pending","signed_at":null,"link":"https://contracting-v2.signzy.app/b2ee4ca5-8c22-468c-9e9a-cb00e2562fa7/main","failure":null,"attempts":0,"aadhaar":null,"messages":[{"kind":"signing-link","channel":"sms","sent_at":"2026-08-10T16:12:41","delivered":true,"tries":1,"detail":"Message successfully delivered to the user"}]}],"stamp_paper":null,"sent_document":{"sha256":"0ca1d2c5c03e9bed744a4c3d18b6e2f71a9c05d4e83b27f6a1d9c4e05b72f3a8","size_bytes":29412},"signed_files":null,"callback":null}}},"exampleType":"examples"}},"exampleType":"examples"},"85968ef3-6c6d-4d98-af47-67b20e27bec4":{"description":"The API key is missing, malformed, or revoked.\n\nThe code is `unauthenticated`.","content":{"application/json":{"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"example":{"code":"unauthenticated","detail":"Missing or malformed Authorization header"},"examples":{"Example":{"title":"Example","value":{"code":"unauthenticated","detail":"Missing or malformed Authorization header"}}},"exampleType":"examples"}},"exampleType":"examples"},"3b45df76-be2e-4221-a6bf-da7f0cab6c29":{"description":"The workflow has no contract credits left. Read the workflow's `contract_credits` to see where they went, and contact us to add more.\n\nThe code is `contract-credits-exhausted`.","content":{"application/json":{"example":{"code":"contract-credits-exhausted","detail":"no contract can be sent because workflow 'merchant-onboarding' has no contract credits left (200 used); contact us to add more"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"contract-credits-exhausted","detail":"no contract can be sent because workflow 'merchant-onboarding' has no contract credits left (200 used); contact us to add more"}}},"exampleType":"examples"}},"exampleType":"examples"},"7c6c71b3-f697-4222-9734-50903782de4d":{"description":"The workflow belongs to the other environment. An API key is for `uat` or for `production` and reaches only that environment's workflows. Or the key is valid but not enrolled for verifications, or not set up for exactly one of `uat` and `production`, in which case ask us to reissue it.\n\nThe code is one of `environment-mismatch` or `client-not-enrolled`.","content":{"application/json":{"example":{"code":"environment-mismatch","detail":"workflow 'merchant-onboarding' is production and this request is for uat"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"environment-mismatch","detail":"workflow 'merchant-onboarding' is production and this request is for uat"}}},"exampleType":"examples"}},"exampleType":"examples"},"2bba8476-4a18-401a-8ba9-1455cc65ea84":{"description":"No verification with that id exists on your account, or the version it runs offers no contract workflow under that key.\n\nThe code is one of `verification-not-found` or `contract-workflow-not-found`.","content":{"application/json":{"example":{"code":"verification-not-found","detail":"version 3 of this verification's workflow offers no contract workflow 'dealer-agreement'"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"verification-not-found","detail":"version 3 of this verification's workflow offers no contract workflow 'dealer-agreement'"}}},"exampleType":"examples"}},"exampleType":"examples"},"cd012949-b9ff-434a-81c5-a67899abfa62":{"description":"The verification is not waiting on its contracts' signatures, has expired, is not signed on this contract workflow, or already has a contract of it out with its signers or signed on its current run.\n\nThe code is one of `verification-not-signable`, `verification-expired` or `contract-not-sendable`.","content":{"application/json":{"example":{"code":"verification-not-signable","detail":"a contract of this contract workflow is already out with its signers; withdraw it to send another"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"verification-not-signable","detail":"a contract of this contract workflow is already out with its signers; withdraw it to send another"}}},"exampleType":"examples"}},"exampleType":"examples"},"0d99e8f5-7112-4fc8-b202-b37eddaa1ba8":{"description":"The contract cannot be sent as drawn up. The detail names every fault: a value you set that is missing, empty or not yours to set, a date not given as `YYYY-MM-DD` or not on the calendar, a value the verification does not hold, a signer without what the contract workflow asks of them, a value that would print the contract wrongly, such as one too long for its place, or a stamp paper that is missing, not wanted, not base64, over 20 MB, locked with a password, or not a PDF of one page or a JPEG or PNG image. Or the request body is not valid.\n\nThe code is one of `contract-refused` or `request-invalid`.","content":{"application/json":{"example":{"code":"contract-refused","detail":"value 'credit_limit': required; value 'gstin': filled from the verification, so the sender cannot set it"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"contract-refused","detail":"value 'credit_limit': required; value 'gstin': filled from the verification, so the sender cannot set it"}}},"exampleType":"examples"}},"exampleType":"examples"},"53ca3332-c061-4a2f-bbe7-f6b453dc0a59":{"description":"The API key is rate limited. Retry after a pause.\n\nThe code is `rate-limited`.","content":{"application/json":{"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"example":{"code":"rate-limited","detail":"Unauthorized: RATE_LIMITED"},"examples":{"Example":{"title":"Example","value":{"code":"rate-limited","detail":"Unauthorized: RATE_LIMITED"}}},"exampleType":"examples"}},"exampleType":"examples"},"ab5d370d-e5bf-4362-8dbf-39b50c26aa41":{"description":"Signing contracts is not set up for your account. Nothing was changed. Contact us to have the workflow's configuration put right.\n\nThe code is `workflow-misconfigured`.","content":{"application/json":{"example":{"code":"workflow-misconfigured","detail":"the agreement could not be sent"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"workflow-misconfigured","detail":"the agreement could not be sent"}}},"exampleType":"examples"}},"exampleType":"examples"},"7539978b-8e99-4ec0-adc3-7f4075f8f174":{"description":"Signzy, which contracts are signed on, could not be reached, or API keys could not be checked right now. Nothing was changed; try again.\n\nThe code is one of `esign-unavailable` or `auth-unavailable`.","content":{"application/json":{"example":{"code":"esign-unavailable","detail":"Signzy could not be reached, so nothing was sent; try again"},"schema":{"properties":{"code":{"type":"string","enum":["unauthenticated","client-not-enrolled","rate-limited","auth-unavailable","environment-mismatch","request-invalid","body-unreadable","page-cursor-invalid","window-invalid","request-too-large","not-found","method-not-allowed","internal-error","workflow-not-found","workflow-version-not-found","workflow-not-runnable","workflow-not-walkable","workflow-misconfigured","context-incomplete","context-value-invalid","mobile-required","email-required","journey-fields-refused","return-url-not-allowed","reference-taken","verification-not-found","verification-not-open","verification-expired","invitations-off","invitation-throttled","not-invited","nothing-to-remind","reminder-throttled","verification-not-reviewable","verification-not-reopenable","contracts-out","verification-not-signable","run-in-progress","credits-exhausted","resets-exhausted","contract-credits-exhausted","live-limit-reached","step-not-found","step-not-reopenable","step-not-ready","step-invalid","document-not-found","document-not-stored","document-too-large","document-type-not-allowed","document-locked","contract-workflow-not-found","contract-not-found","contract-not-sendable","contract-refused","contract-settled","contract-not-remindable","contract-files-not-kept","contract-withdrawal-pending","esign-unavailable","identity-unavailable"],"title":"ErrorCode","description":"What went wrong. Branch on this rather than on the status code, which several causes share, and never on `detail`.\n\nTreat a code you do not recognise as the status it arrived at: codes are added as new causes become reachable, and an existing one never changes meaning.","isRequired":true,"uniqueKey":"code","typeLabel":"enum\u003cstring>"},"detail":{"type":"string","title":"Detail","description":"What went wrong, in words, naming the workflow, verification, step or field at fault where one is. Written for a person reading a log rather than for code to read, so it is not stable and nothing should be matched against it.","isRequired":true,"uniqueKey":"detail","typeLabel":"string"}},"type":"object","required":["code","detail"],"title":"ErrorResponse","description":"The envelope every failure is answered in.","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"code":"esign-unavailable","detail":"Signzy could not be reached, so nothing was sent; try again"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"8aa72df5-b765-4a91-8f7e-f8e45abfc8ed":{"HTTPBearer":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"}}},"servers":{"769bbc79-30ef-42bd-8aa0-055f5837e0c5":{"url":"https://api.verify.privue.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"HTTPBearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"HTTPBearer","name":"Authorization"}],"title":"HTTPBearer"}]},"originalFileLocation":"verification/api-reference/openapi.json"},"subdomain":"privue","siteName":"Privue","title":"Send a contract - Privue","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-13T10:36:45.134Z","originalFileLocation":"api-reference/contracts/send-a-contract.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on. The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification\u0026#x27;s offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409. One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification. On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with. Each send uses a contract credit whether or not the contract is signed, and restarts the verification\u0026#x27;s retention window. Your note and the stamp paper are kept with the contract as sent. Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Privue\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Send a contract - Privue\">\u003cmeta data-mint-head property=\"og:description\" content=\"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on. The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification\u0026#x27;s offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409. One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification. On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with. Each send uses a contract credit whether or not the contract is signed, and restarts the verification\u0026#x27;s retention window. Your note and the stamp paper are kept with the contract as sent. Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Privue\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.privue.ai/api-reference/contracts/send-a-contract\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://privue.mintlify.site/_mintlify/api/og/v2?division=Contracts\u0026amp;title=Send+a+contract\u0026amp;description=Send+a+verification+waiting+on+its+signatures+a+contract+of+one+of+the+contract+workflows+it+is+signed+on.%0A%0AThe+verification+fills+in+what+the+offer+says+it+fil\u0026amp;theme=b052c943c94a6b375d9291a0\u0026amp;signature=c6d9e4dcdb4e12f1a6e620fa8e673a158917c4029acd22fbead35f02b93d4b67\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Send a contract - Privue\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on. The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification\u0026#x27;s offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409. One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification. On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with. Each send uses a contract credit whether or not the contract is signed, and restarts the verification\u0026#x27;s retention window. Your note and the stamp paper are kept with the contract as sent. Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://privue.mintlify.site/_mintlify/api/og/v2?division=Contracts\u0026amp;title=Send+a+contract\u0026amp;description=Send+a+verification+waiting+on+its+signatures+a+contract+of+one+of+the+contract+workflows+it+is+signed+on.%0A%0AThe+verification+fills+in+what+the+offer+says+it+fil\u0026amp;theme=b052c943c94a6b375d9291a0\u0026amp;signature=c6d9e4dcdb4e12f1a6e620fa8e673a158917c4029acd22fbead35f02b93d4b67\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/privue/DLYdCt-xcGBx9eyl/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Privue\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3027A0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.privue.ai/api-reference/contracts/send-a-contract\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/contracts/send-a-contract.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.privue.ai/#organization\",\"name\":\"Privue\",\"url\":\"https://docs.privue.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://privue.ai/privue-logo.png\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.privue.ai#website\",\"name\":\"Privue\",\"url\":\"https://docs.privue.ai\",\"publisher\":{\"@id\":\"https://docs.privue.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract#webpage\",\"url\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract\",\"name\":\"Send a contract\",\"description\":\"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on. The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification's offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409. One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification. On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with. Each send uses a contract credit whether or not the contract is signed, and restarts the verification's retention window. Your note and the stamp paper are kept with the contract as sent. Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.\",\"dateModified\":\"2026-11-13T10:36:45.134Z\",\"isPartOf\":{\"@id\":\"https://docs.privue.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Contracts\",\"item\":\"https://docs.privue.ai/api-reference/contracts/list-contracts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Send a contract\",\"item\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract#apireference\",\"headline\":\"Send a contract\",\"name\":\"Send a contract\",\"description\":\"Send a verification waiting on its signatures a contract of one of the contract workflows it is signed on. The verification fills in what the offer says it fills in, you set the rest in values, and the contract goes to its signers, each sent their link by SMS or email as the contract workflow says. Each signer signs with Aadhaar eSign. Once a contract of every contract workflow in the verification's offered_contracts is signed, the verification completes. A contract workflow its version offers on a condition the run does not meet is refused with 409. One contract of each contract workflow can be out with its signers at a time; withdraw it to send another. One that ends unsigned, by its links running out, a signer failing the Aadhaar checks or being withdrawn, leaves the verification waiting, so send another or reject the verification. On a verification whose version has features.stamp_paper on, each contract goes with a stamp paper as its first page: give it in stamp_paper, or leave it out to send again the one the last contract of that contract workflow on the verification went with. Each send uses a contract credit whether or not the contract is signed, and restarts the verification's retention window. Your note and the stamp paper are kept with the contract as sent. Asking again after an answer you did not receive sends nothing twice. Where the contract of that contract workflow already out carries the same values, note and stamp paper, it is answered with 200 rather than 201, and nothing is sent, spent or recorded; a send carrying anything else while one is out is refused with 409.\",\"url\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract\",\"mainEntityOfPage\":{\"@id\":\"https://docs.privue.ai/api-reference/contracts/send-a-contract#webpage\"},\"dateModified\":\"2026-11-13T10:36:45.134Z\",\"publisher\":{\"@id\":\"https://docs.privue.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.privue.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Privue\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Privue\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/contracts/send-a-contract.md","siteName":"Privue","nav":{"global":null,"products":[{"product":"Verify with Privue","icon":"user-check","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/verification/introduction"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/verification/recipes/hosted"}]},{"tab":"API reference","groups":[{"group":"Workflows","pages":[{"title":"List your workflows","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /workflows","href":"/api-reference/workflows/list-your-workflows"},{"title":"Read a workflow","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /workflows/{workflow_key}","href":"/api-reference/workflows/read-a-workflow"},{"title":"List a workflow's versions","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /workflows/{workflow_key}/versions","href":"/api-reference/workflows/list-a-workflows-versions"},{"title":"Read a version of a workflow","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /workflows/{workflow_key}/versions/{version}","href":"/api-reference/workflows/read-a-version-of-a-workflow"}]},{"group":"Results","pages":[{"title":"List verifications","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications","href":"/api-reference/results/list-verifications"},{"title":"Count your verifications","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/summary","href":"/api-reference/results/count-your-verifications"},{"title":"Count your gate stops","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/gate-stops","href":"/api-reference/results/count-your-gate-stops"},{"title":"Read a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/{verification_id}","href":"/api-reference/results/read-a-verification"},{"title":"Link to documents","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/documents/download","href":"/api-reference/results/link-to-documents"}]},{"group":"Verifications","pages":[{"title":"Create a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications","href":"/api-reference/verifications/create-a-verification"},{"title":"Cancel a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/cancel","href":"/api-reference/verifications/cancel-a-verification"},{"title":"Reset a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/reset","href":"/api-reference/verifications/reset-a-verification"},{"title":"Send the invitation","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/invitation","href":"/api-reference/verifications/send-the-invitation"},{"title":"Remind the user","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/reminder","href":"/api-reference/verifications/remind-the-user"},{"title":"Purge a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/purge","href":"/api-reference/verifications/purge-a-verification"},{"title":"Approve a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/approve","href":"/api-reference/verifications/approve-a-verification"},{"title":"Reject a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/reject","href":"/api-reference/verifications/reject-a-verification"},{"title":"Reopen a verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/reopen","href":"/api-reference/verifications/reopen-a-verification"}]},{"group":"Instant workflows","pages":[{"title":"Run an instant verification","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/instant","href":"/api-reference/instant-workflows/run-an-instant-verification"}]},{"group":"Hosted workflows","pages":[{"title":"Hand off a signed-in user","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/handoff","href":"/api-reference/hosted-workflows/hand-off-a-signed-in-user"}]},{"group":"Staged workflows","pages":[{"title":"Upload a document","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/documents","href":"/api-reference/staged-workflows/upload-a-document"},{"title":"Withdraw a document","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json delete /verifications/{verification_id}/documents/{document_id}","href":"/api-reference/staged-workflows/withdraw-a-document"},{"title":"Run the checks","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/run","href":"/api-reference/staged-workflows/run-the-checks"}]},{"group":"Contracts","pages":[{"title":"List contracts","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /contracts","href":"/api-reference/contracts/list-contracts"},{"title":"List a verification's contracts","description":"List every contract sent on a verification, over every run of it, newest first.","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/{verification_id}/contracts","href":"/api-reference/contracts/list-a-verifications-contracts"},{"title":"Send a contract","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts","href":"/api-reference/contracts/send-a-contract"},{"title":"Preview a contract","description":"Draw up what sending this contract would carry now, without sending, spending or recording anything.\n\nAnswers the values the verification fills in, the variables you set with the send, everyone it would go to, the contracts of this contract workflow already sent on the verification's current run, and every fault that would refuse a send whatever you set. Build a send from it: set every variable in `open` and send.","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/{verification_id}/contracts/preview","href":"/api-reference/contracts/preview-a-contract"},{"title":"Read a contract","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json get /verifications/{verification_id}/contracts/{contract_id}","href":"/api-reference/contracts/read-a-contract"},{"title":"Remind a contract's signers","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts/{contract_id}/remind","href":"/api-reference/contracts/remind-a-contracts-signers"},{"title":"Withdraw a contract","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts/{contract_id}/withdraw","href":"/api-reference/contracts/withdraw-a-contract"},{"title":"Link to a contract's files","deprecated":null,"version":null,"openapi":"/verification/api-reference/openapi.json post /verifications/{verification_id}/contracts/{contract_id}/download","href":"/api-reference/contracts/link-to-a-contracts-files"}]}]}]},{"product":"API Suite","icon":"plug","pages":[{"title":"API Suite","href":"/suite/introduction"}]},{"product":"Data with Privue","icon":"database","pages":[{"title":"Data with Privue","href":"/datahub/introduction"}]}]},"basePath":"","title":"Send a contract - Privue","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DdEMm2kG.js","utils-BMo572L7.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C-4m9KAx.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DPLK2Oq9.js","snippetPresets-BKjfJMC9.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-DTsgtCEj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C8vmhyQM.js","shallow-r9w8LQGS.js","getApiPlaygroundDisplay-DjPI64HQ.js","CodeSnippet-C8Bvhl16.js","CodeSnippets-BtWUwcMy.js","Page-BIYvYBgk.js","getPastedJson-Dcm_3Pgl.js","icon-BXwrTpjc.js","MethodPill-CcjfVmmy.js","DuplicateIcon-BuKIbXAQ.js","createIcon-DaL9yXsO.js","DynamicMarkdown-Co5nikxh.js","SectionHeading-P4UNTsMZ.js","axios-vUo_bRtp.js","Markdown-CEfymfIH.js","clsx-Dq9TQuNi.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-D2J8knkn.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BgZ2ThuU.js"]}