Skip to main content
Create or import an agent linked to your Proofable profile. Default is your signed-in account. Add a separate spend account and limits only when you need them. Fastest dedicated key: set agentWallet to "generate". Store the returned key once. Proofable does not keep it. Leave out controllerWallet when the signed-in account from proofable_context should own the agent. Ask:
Create or import an agent on my Proofable profile. Use generate if I need a separate spend account. Set spend and action limits. Then confirm it is ready.
Agent concepts

Account options

Signed-in profile (default)

Omit agentWallet. The agent lives on your signed-in account. Identity is enough. Several agents on one account need agentId on every link and mount call.

Dedicated key (generate)

agentWallet: "generate" creates a separate spend account and returns the private key once. Store it in Vault (proofable_secret_create) or your own key manager before you continue.
Use this when you want independent spend, revocation, or offboarding without bringing a key of your own.

Bring your own account

Pass an existing agentWallet. The agent account signs identity. The approving profile signs spend and action limits.
When the signed-in account does not control that key:
  1. Sign and submit the returned identity step with the agent key.
  2. Repeat proofable_agent_create unchanged.
  3. The approving account completes permissions in-session or through the returned hosted URL.
A controller session cannot self-attest for a different agent account, so identity always comes first.

What each result means

Every non-validation result includes path and next_action. sessionProgress.identityComplete, delegationRequired, and delegationComplete show which step is required and already saved. On payment_required, add credits and retry the same request. This is an account billing requirement, not a signature failure.

Hosted callback

Use the SDK helper instead of assembling query strings:
With identityQHash, Hosted Verify requests only permissions. The callback receives the new permission qHash, agentId, and agentWallet. Keep the identity qHash from step 1. Do not combine agent creation with gateId or intent=login on one URL:
  • Login: intent=login&returnUrl=...
  • Gate checkout: gateId=...&returnUrl=...
  • Agent setup: getHostedAgentCreateUrl(...)

Billing

Billing follows the signer for each proof unless a validated sponsor or pay-per-call proof overrides it:
  • Agent identity: the agent account pays.
  • Permissions (separate spend account only): the approving profile pays.
  • Hosted completion: the signed-in account pays for the step it signs.
  • Sponsor grant or pay-per-call: the validated sponsor/caller pays.
Hosted sign-in itself is free. See Billing. Optional fields include instructions, skills, services, scope, expiry, spend cap, runtime policy, approval policy, and allowed/denied actions. See Agent identity and Agent delegation. Auth, Agent link, Overview, Agent setup
Last modified on September 8, 2026