Skip to main content
POST
Submit signed permit
Requires scope: manage:accounts — see Required scopes. Submits the v/r/s signature for a permit message. It moves PENDING → SUBMITTED → CONFIRMED (poll GET .../permits); once all of a wallet’s permits are CONFIRMED the wallet becomes ACTIVE. Re-submitting an already-confirmed permit returns 409.
The signature must recover to the wallet owner, or the permit settles as FAILED. The call returns HTTP 200 with result.status — poll SUBMITTED → CONFIRMED. See Approving transfers without gas.

Authorizations

Headers

x-tenant-id
string<uuid>

Which tenant the request is scoped to, among those your token grants. Omit it when the token grants exactly one tenant; it is required when the token grants more than one. A supplied value must exactly match a tenant the token grants.

Absent when required, blank, malformed, or naming a tenant the token does not grant — each gets the same generic 403 forbidden, which reveals neither whether a tenant exists nor which ones you may use. Send the header once: a repeated header is rejected the same way.

Example:

"3fa85f64-5717-4562-b3fc-2c963f66afa6"

Path Parameters

accountId
string<uuid>
required

Unique account identifier

walletId
string<uuid>
required

Unique wallet identifier

Body

application/json
supportedAssetId
string<uuid>
required

ID of the supported asset to grant spending permission for

signature
object
required

Response

Permit submitted successfully

success
boolean

Indicates whether the request was successful

result
object