Skip to main content
POST
Request a standing authorisation: generate the mandate and send it to the grantor.

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.

Headers

Idempotency-Key
string
required

Any string that identifies this request, at most 255 characters. ⚠️ REQUIRED: a retry with the same key returns the same authorisation instead of sending a second mandate. The caller’s own request identifier.

Example:

"01960000-0000-4000-8000-00000000ffff"

Body

application/json

The brand, the legal entity, the grantor and the validity.

The request.

brand_id
string<uuid>
required

A live brand of yours. The mandate is sent under it, and covers documents sent under it.

The legal entity the grantor signs for.

grantor
object
required

The person who will sign the mandate.

valid_until
string<date-time>
required

After the start, at most 12 months after it, and at least 2 days from now.

intended_use
string | null

Printed on the mandate as your description, in quotation marks. Not enforced.

Maximum string length: 500
valid_from
string<date-time> | null

At most 5 minutes in the past and 90 days ahead. Omit it to run from the grant.

invite_expires_at
string<date-time> | null

Defaults to 14 days, or 1 day before valid_until if sooner. Between 1 and 30 days from now, and at least 1 day before valid_until.

reference
string | null

Your own reference, such as a tenant id.

Maximum string length: 255

Response

The authorisation, invited, with its id and number. Idempotency-Replayed says whether this request created it or is being shown an earlier one’s answer; the status is 201 either way.

The authorisation.

id
string<uuid>
required

The authorisation’s id.

number
string
required

Its number in your organisation, as printed on the mandate.

Example:

"SA-0012"

status
enum<string>
required

invited until the signed mandate is sealed, then active. An invite ends declined, expired_unsigned or cancelled; an active one ends revoked, expired or invalidated.

Available options:
invited,
active,
declined,
expired_unsigned,
cancelled,
revoked,
expired,
invalidated
sandbox
boolean
required

Requested with a test key: it binds nobody, and applies only to sandbox envelopes.

brand
object
required

The brand it covers, as granted.

The legal entity the grantor signs for.

grantor
object
required

The person who signs the mandate.

intended_use
string | null
required

Your description, printed on the mandate as yours. Not enforced.

valid_from
string<date-time> | null
required

The start, or null for "from the grant".

valid_until
string<date-time>
required

The end.

invite_expires_at
string<date-time>
required

When the mandate lapses unsigned.

granted_at
string<date-time> | null
required

When the signed mandate was sealed and the authorisation took effect.

cancellation
object | null
required

Set when the request ended without a grant.

revocation
object | null
required

Set when an active authorisation was revoked.

invalidation
object | null
required

Set when the brand changed under it.

reference
string | null
required

Your own reference, as you set it.

applied_count
integer
required

How many documents it pre-signed.

created_at
string<date-time>
required

When it was requested.