---
title: "Prepare or reconcile automatic Solana server-signing setup"
method: POST
path: "/v2/me/execution-signer/prepare"
tags: ["Identity"]
---

# Prepare or reconcile automatic Solana server-signing setup

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

## 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/prepare`
- Auth: HTTP bearer

Authenticates the user, resolves the managed wallet and reads authoritative Privy user/wallet evidence. Returns disabled outside the enabled execution cohort. For an eligible wallet with no signer, durably prepares an exact owner-authorized PATCH with a 90-second expiry. Existing active enrollment is reused; recorded revocation is not restored. Grants removed before enrollment history existed cannot be distinguished from never-enrolled wallets using current provider state alone. Only never-dispatched prepared requests can be renewed. This endpoint never sends the Privy wallet update.

## Request body

- object

## 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)
