---
title: "Get a signer"
method: GET
path: "/v1/agent-wallets/{walletId}/signers/{id}"
tags: ["Agent Wallet Signers"]
---

# Get a signer

`GET /v1/agent-wallets/{walletId}/signers/{id}`

## Request

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

Fetch a specific signer of an agent wallet by ID.

## Path parameters

- `walletId` string, uuid, required
- `id` string, uuid, required

## Response `200`

Signer retrieved successfully

- SignerDto
  - `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)
  - `name` string, required: Human-readable name of the signer
  - `type` 'agentic', required: Type of the signer
  - `status` 'pending' | 'ready' | 'active' | 'failed' | 'deleting', required: Current status of the signer
  - `apiKey` string, nullable: Plaintext API key for agentic signers (KEYBAN_API_KEY)
  - `commitmentKey` string, nullable: Plaintext invitation private key (KEYBAN_INVITE_KEY), set when the signer becomes `ready`. Retained after activation — the on-chain commitment is single-use and consumed, so the key is inert, but it keeps the MCP config re-downloadable.
  - `frostPublicKey` string, nullable: Public key of the FROST key, set once the DKG has completed (round2). Non-null means the DKG was already run for this signer and the one-shot invite key is consumed — the DKG must not run again (the admin "Initialize signer" action is hidden and the backend refuses a second round1 with 409).
  - `mcpConfig` object, nullable, required: MCP host config to copy into `.mcp.json`. Non-null once the signer is provisioned (`ready` and `active`); null while `pending`.
    - `mcpServers` object, required
      - `agent-wallet` object, required
        - `command` string, required
        - `args` string[], required
        - `env` object, required
          - `KEYBAN_API_KEY` string, required
          - `KEYBAN_APP_ID` string, required
          - `KEYBAN_INVITE_KEY` string, required
          - `KEYBAN_WALLET_ADDRESS` string, required
          - `KEYBAN_NETWORK` string, required
          - `KEYBAN_BASE_URL` string, required: Keyban API base URL the MCP server targets (e.g. https://api.prod.keyban.io). Selects the environment; an empty value falls back to the server default.

---

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