Skip to main content
GET
Get an envelope’s document, and its certificate once sealed.

Authorizations

Authorization
string
header
required

Authorization: Bearer vsk_live_…. Chosen over a bespoke X-API-KEY header because every client, proxy and log-redaction rule already knows this one. What a key may DO is its scopes — see x-scopes at the root of this document and x-required-scope on each operation. The scope list is not written here because OpenAPI reserves a requirement’s scope array for oauth2 and openIdConnect and requires it to be empty for an http scheme.

Path Parameters

envelopeId
string<uuid>
required

The envelope’s id, as returned by POST /api/v1/envelopes. An envelope id.

Example:

"01960000-0000-4000-8000-0000000000e5"

Response

The envelope’s status and documents, in position order.

The status and documents.

status
string
required

The envelope’s status, exactly as GET /api/v1/envelopes/{envelopeId} reports it. ⚠️ READ THIS BEFORE ACTING ON sealed: false BELOW — it is the only way to tell "the seal has not landed yet" (draft, sent, partially_signed) from "it never will" (voided, declined, expired) apart, and the two calls for different behaviour: poll again, or stop.

⚠️ AND completed IS THE ONE STATUS THIS FIELD CANNOT DECIDE. A completed envelope with sealed: false is either a seal that is a minute away or one that has permanently failed, and the status reads the same either way for ever. The events are what tell them apart: envelope.sealed says the bytes are here, envelope.sealing_failed says sealing gave up and nothing further is being tried. ⚠️ THE SECOND OF THOSE IS NOT THE LAST WORD — our support can requeue a failed seal, and one that succeeds delivers envelope.sealed afterwards, so an envelope you saw fail may still turn sealed: true. Subscribe rather than poll.

documents
object[]
required

Ordinarily one entry. More than one only for an envelope built from a multi-document template or one-off pack.