---
title: "Submit a prepared wallet-owner authorization once"
method: POST
path: "/v2/me/execution-signer/authorize"
tags: ["Identity"]
---

# Submit a prepared wallet-owner authorization once

`POST /v2/me/execution-signer/authorize`

## Request

- Base URL: `https://api.arbital.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.arbital.xyz/v2/me/execution-signer/authorize`
- Auth: HTTP bearer

Validates the owner signature encoding and the exact prepared expiry, rechecks wallet ownership/signing evidence, and commits the submitted state before one Privy PATCH. Requires the matching enrollment ID and expires_at_unix_ms from prepare. Repeated calls do not resend a submitted update. Provider timeout or failure is reconciled by reads; unresolved submissions become needs_attention after expiry. Direct external Privy updates can race this operation; expiry bounds but does not eliminate that window. This endpoint does not execute a trade.

## Request body

- ExecutionSignerAuthorizationV2Request
  - `enrollment_id` string, uuid, required
  - `authorization_signature` string, required: Canonical base64 DER ECDSA P-256 owner authorization signature over the prepared payload. Not a wallet transaction signature or an access token.
  - `expires_at_unix_ms` integer, required: Exact Unix millisecond expiry returned by prepare. Return this unchanged with the owner signature.

## Response `200`

Current setup state; a funded trade is never submitted

- union: Solana server-signing setup status. This does not submit a trade. An active result requires authoritative provider evidence. Pending and needs_attention never authorize replay of the wallet update.
  - object
    - `state` 'disabled' | 'active' | 'pending' | 'revoked' | 'needs_attention', required
  - object
    - `state` 'authorization_required', required
    - `enrollment_id` string, uuid, required
    - `wallet_address` string, required: The authenticated user’s managed Solana wallet address.
    - `signer_id` string, required
    - `policy_id` string, required
    - `authorization_payload` string, byte, required: Base64-encoded UTF-8 canonical JSON for the exact Privy PATCH request. Sign these decoded bytes with the authenticated wallet owner through the Privy SDK. Contains wallet URL, configured signer/policy and request-expiry; never a private key.
    - `expires_at_unix_ms` integer, required: Exact Unix millisecond expiry returned by prepare. Return this unchanged with the owner signature.

## Other responses

- `400`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `401`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `409`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `413`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.
- `503`: Stable machine-readable problem. HTTP 429 and 503 responses include retry and cache-validity fields plus Retry-After and X-Request-ID headers.

---

[API](https://skmtc.dev/arbital/apis/arbital-api.md) - [All operations](https://skmtc.dev/arbital/apis/arbital-api/llms.txt) - [OpenAPI document](https://skmtc.dev/arbital/apis/arbital-api/revisions/bb0185edf43a?raw)
