---
title: "List agent wallet intents"
method: GET
path: "/v1/agent-wallets/intents"
tags: ["Agent Wallets"]
---

# List agent wallet intents

`GET /v1/agent-wallets/intents`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/agent-wallets/intents`
- Auth: one of:
  - API key in header `X-Api-Key`
  - `bearer` (a scheme the document does not define)

List policy intents across all agent wallets of an application, for human review (pending approvals and history). Narrow to one agent wallet with `walletId`; a wallet outside the application returns an empty page.

## Query parameters

- `applicationId` string, uuid, required
- `walletId` string, uuid
- `state` string[]
- `currentPage` integer
- `pageSize` integer

## Response `200`

Paginated list of intents with their owning wallet

- PaginatedAgentWalletIntentDtoOutput
  - `data` object[], required: Array of items for the current page
    - `id` string, uuid, required: Entity UUID
    - `createdAt` string, date-time, required: Creation date (ISO 8601)
    - `updatedAt` string, date-time, required: Last update date (ISO 8601)
    - `hash` string, required: Canonical hash of the signing request the intent authorises. 0x-prefixed, 32-byte (64 hex chars). Unique per subject — the same hash is never re-signed (ADR-86 anti-replay).
    - `kind` string, required: Payment kind label emitted by the payment extractor (opaque to the engine).
    - `recipient` string, required: Case-normalised (lowercased) recipient: an on-chain address for relay payments, or the seller host for x402.
    - `resource` string, nullable: x402 resource the payment unlocks: seller host + path only (query string and fragment stripped, so no per-request secret is stored). Null for relay payments, which target an on-chain address rather than a URL.
    - `asset` string, required: Asset symbol/label the amount is denominated in.
    - `amountNative` string, required: Raw transfer amount as a decimal integer string, in the asset's smallest unit (wei for ETH, base units for USDC).
    - `amountRef` string, required: Reference-currency value at intent creation, as a decimal integer string in centi-units of the policy currency (e.g. 1180 = 11.80).
    - `approvedAmountRef` string, nullable: Reference value the human approved — the anchor a later re-validation tolerates volatility drift around (#4254). Null until the first decision.
    - `currentAmountRef` string, nullable: Reference value re-priced at read time (#4254), so a human deciding now judges the current worth, not the stale stored one. Present on reads that re-price; absent when not recomputed.
    - `state` 'pending_human_approval' | 'approved' | 'declined' | 'abandoned' | 'consumed' | 'expired' | 'failed', required: Lifecycle state: pending_human_approval → approved → consumed, or pending_human_approval → declined. Only consumed is terminal; declined is reversible.
    - `decidedAt` string, date-time, nullable: When a human approved or declined the intent (RFC 3339). Null while still pending.
    - `decidedBy` string, nullable: Account (email) of the human who approved or declined the intent, captured at decision time. Null for auto-approved intents (no human in the loop) or those still pending.
    - `consumedAt` string, date-time, nullable: When the signature consumed the intent at /sign (RFC 3339). Null until executed.
    - `expiresAt` string, date-time, nullable: x402 EIP-3009 validBefore as a wall-clock instant (RFC 3339). Null for relay payments (no time window).
    - `events` object[], required: Append-only lifecycle timeline, oldest first (#4254): one entry per decision point so a reviewer can see how the value moved across the intent → approval → signature window.
      - `kind` 'created' | 'human_approved' | 'human_declined' | 'agent_abandoned' | 'revalidated' | 'revalidation_required' | 'consumed' | 'expired' | 'settlement_failed', required: Lifecycle checkpoint this entry records (created, human decision, revalidation, or consumption).
      - `amountRef` string, required: Reference-currency value priced at this checkpoint, as a decimal integer string in centi-units of the policy currency (same encoding as the intent amountRef).
      - `at` string, date-time, required: When the checkpoint happened (RFC 3339), taken from the event row creation time.
    - `wallet` object, required: Owning agent wallet, denormalised for display.
      - `id` string, uuid, required: UUID of the agent wallet the intent belongs to.
      - `label` string, required: Human-readable agent wallet name.
      - `network` string, required: Network identifier the wallet runs on (opaque label, e.g. "BaseSepolia").
    - `sponsored` boolean, required: True when the Keyban welcome offer pays this x402 payment: the USDC leaves the Keyban sponsor wallet, not the agent wallet. Set from evaluation, so already true while the intent awaits human approval.
  - `total` integer, required: Total count of items matching the query

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
