---
title: "Authorize Account"
method: POST
path: "/v1/accounts/{account_id}/authorize"
tags: ["accounts"]
---

# Authorize Account

`POST /v1/accounts/{account_id}/authorize`

## Request

- Base URL: `https://api.usekeel.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.usekeel.io/v1/accounts/{account_id}/authorize`
- Auth: none declared

Submit signed EIP-712 messages to Hyperliquid and activate the account.

The body runs inside the account-flow boundary (Q-1601,
services/account_flow_events.py): attempted/authorized/authorize_failed
are recorded once, there, from the body's outcome — the body never emits
(account.authorization_restored, the A8e trigger, stays in the reauth
branch because it is the domain transition itself).

PostHog ``exchange_connected`` (Q-1573) is captured only after the
authorization COMMITS: the commit is where the V162 deferred drift guard
can still refuse it (Q-1471's shape), and an event describing an
authorization that rolled back is a phantom money-stage row.

## Path parameters

- `account_id` string, required

## Headers

- `Authorization` string, nullable
- `X-Org-Id` string, nullable

## Request body

- AuthorizeAccountRequest
  - `approve_agent_signature` string, required
  - `approve_builder_fee_signature` string, nullable

## Response `200`

Successful Response

- AuthorizeAccountResponse
  - `account_id` string, required
  - `status` string, required
  - `agent_address` string, required
  - `expires_at` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usekeel/apis/keel-api.md) · [All operations](https://skmtc.dev/usekeel/apis/keel-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usekeel/apis/keel-api/revisions/3191ca10b0ab?raw)
