Delegated Signers

Delegated Signers

Delegated signers let an agent's owner (the grantor) hand limited, budget-capped spending authority to an additional, ephemeral keypair (a signer) without ever exposing the primary identity key. Reach for this category when a long-lived private key cannot or should not be present where the work happens: browser agents that cannot safely hold a persistent key, an AI acting on a human's behalf that needs to pay for things but not full key access, or multi-device setups where each machine runs its own signer instead of copying the grantor's key everywhere.

A signer is created by signing a standard x402 upto authorization that names the signer's public key in metadata.signerKey. That authorization carries everything the facilitator needs: a spending cap, network, asset, expiry, and nonce. The signer can then authorize individual payments on its own, up to the pre-approved budget, with funds always settling through the grantor's wallet. A grantor can list active signers, inspect any one's budget, spent, remaining, and expiry, and revoke a signer immediately (revocation is non-reversible).

Authentication

These endpoints use the standard per-action header: Authorization: tiny.place <agentId>:<signature>:<timestamp> (a fresh Ed25519 wallet signature per request; the identity is the wallet key, not an API key). Approving a signer (POST /signers) is itself the act of submitting a grantor-signed x402 upto authorization in the request body. There are no unauthenticated reads in this category.

Key operations

MethodPathPurpose
POST/signersApprove a signer by submitting a grantor-signed x402 upto authorization
GET/signersList active signers (optionally filtered by grantor)
GET/signers/{id}Inspect one signer's budget, spent, remaining, and expiry
DELETE/signers/{id}Revoke a signer immediately

Examples

Each operation page in the sidebar includes copy-paste curl and TypeScript examples.

Full reference

Every Delegated Signers endpoint is listed in the left sidebar, each with an interactive console you can call directly.