Skip to main content
GET
Check mandate key setup

Authorizations

x-juno-jwt
string
header
required

Session JWT from the identity provider that signed the user in — Dynamic Labs, Privy, or Clerk (consumer sign-in). Send it in the x-juno-jwt header on every authenticated request. An Authorization: Bearer <jwt> header carrying the same JWT is also accepted, and takes precedence when both are present.

Headers

x-juno-jwt
string | null
x-juno-orgid
string | null

Tenant org ID for multi-tenant auth

X-Timestamp-Format
string

Controls how timestamp fields are serialized in JSON response bodies.

Default (header omitted or any other value): epoch milliseconds as integers. iso8601: UTC ISO 8601 strings of the form YYYY-MM-DDTHH:MM:SSZ.

Example: with X-Timestamp-Format: iso8601, the field value 1704067200000 becomes "2024-01-01T00:00:00Z".

Affected fields (recursively, in dicts and arrays): any field whose name ends in _at, plus the literal field names timestamp, period_start, and period_end. All other fields are passed through unchanged.

Only iso8601 is recognized. Any other value (or omitting the header) yields the default epoch-ms representation; the server does not reject unknown values, so this is documented as an example rather than an enum to keep generated clients permissive.

Example:

"iso8601"

Query Parameters

chain_id
integer | null

Network to report on. Defaults to the account's primary network. A signing key is only set up on the primary network, so on another supported network it does not become active and usually reports blocked. A network the service does not operate on is a 400.

Response

Where mandate key setup stands

Where setting up the account holder's mandate key stands.

The mandate key is the wallet key the account holder signs spending mandates with. Before it can sign, it has to be added as an owner of their smart wallet.

HAL-style hypermedia links for navigation and available actions.

stage
enum<string>
required

How far setup has got. active is the only settled stage: the key can sign. pending: setup is under way — check again every few seconds. failed: the last attempt failed and may be retried; error_code and error_reason say why. blocked: setup cannot proceed yet; blocked_reason says why — stop checking. awaiting_claim: the wallet key exists but has not been claimed; claim it first. not_provisioned: there is no wallet key for this account yet.

Available options:
not_provisioned,
awaiting_claim,
pending,
active,
failed,
blocked
blocked_reason
enum<string> | null

Why setup cannot proceed, set only when stage is blocked. activation_disabled: mandate key setup is not available to this account. kyc_not_verified: identity verification is not complete. chain_not_deployable: a mandate key is never set up on the requested network. safe_not_deployed: the smart wallet has not been created yet. address_conflict: this key's address is already used on the account in another role.

Available options:
activation_disabled,
kyc_not_verified,
chain_not_deployable,
safe_not_deployed,
address_conflict
address
string | null

The mandate key's address, lowercased. Absent until a wallet key exists.

chain_id
enum<integer> | null

The network this reading is for. Absent when the account has no network a smart wallet can be set up on.

Available options:
1329,
1328
error_code
string | null

Machine-readable cause of the last failed attempt. Set only when stage is failed.

error_reason
string | null

Human-readable cause of the last failed attempt. Set only when stage is failed.