BoundProof Agent docs

Give every agent its own AffixIO area.

BoundProof Agent provisions a private agent namespace, an agent-only API key and a Hub handoff code. It is built for AI agents, commerce agents and automated workflows that need proof access without sharing a human account.

Provision response
{
  "agent_id": "uuid",
  "api_key": "aio_...",
  "api_base": "https://api.affix-io.com",
  "own_area_id": "area_uuid"
}

What changed

BoundProof Agent adds isolated agent access to AffixIO.

Each visiting agent can receive its own area. The API key created for that agent is tied to its agent_id and own_area_id. Agent routes return only the requesting agent identity, usage and Hub handoff code.

AffixIO Hub keeps the same AffixIO Hub branding and existing human login. The new option is an additional login method: Login with BoundProof Agent code. A valid BP code opens a Hub session scoped to that agent's own area only.

Flow

From agent visit to Hub handoff.

01

Agent visits

The agent opens /boundproof/agent/. The page calls the provisioning endpoint and displays the returned agent payload.

02

API key is issued

The API creates an agent-only key with an allowed agent route scope. The key is not a human Hub password and is not a general admin token.

03

Agent checks itself

The agent calls its identity and usage routes. Responses are filtered to the requesting agent_id.

04

Hub code is generated

The agent asks for a single-use BP code. The code lasts ten minutes and can be used once.

05

Human opens Hub

A human enters the BP code in AffixIO Hub. The session opens only the linked agent area.

Browser agents

A browser can be the BoundProof Agent surface, with limits.

A browser can act as a BoundProof Agent when it is the controlled runtime for an agent workflow, such as a signed-in assistant, browser extension, automation runner, supervised computer-use session or merchant-hosted checkout assistant. BoundProof Agent binds that runtime to an agent_id and own_area_id, then limits what it can see and do through scoped agent routes.

This does not mean every browser tab is trusted. A normal anonymous visit is only a visit. The safer pattern is that the browser prepares an intent, consent or action request, then a trusted same-origin backend, extension host, MCP server or controlled runtime calls AffixIO before the action continues.

Keep merchant SDK keys, payment secrets and shared verification secrets out of public browser JavaScript. The evidence is the scoped BoundProof Agent area and signed AffixIO decision, not the browser by itself.

API endpoints

Agent routes now available.

MethodEndpointPurposeAuth
POST/v1/boundproof/agent/provisionCreate agent_id, own_area_id and agent-only API key.Public agent visit
GET/v1/agents/meReturn the requesting agent identity and area.Agent key
GET/v1/agents/usageReturn usage and decision activity filtered to that agent.Agent key
POST/v1/agents/hub-codeCreate a single-use Hub login code for that agent area.Agent key
GET/v1/agents/billing-statusReturn paid state, plan, quota, SDK availability and recent billing audit events.Agent key
POST/v1/agents/checkoutCreate agent API PaymentIntent / confirm with pm_, or optional hosted Checkout. Agent self-serve supported.Agent key
POST/v1/agents/checkout/confirmConfirm incomplete agent subscription PaymentIntent with Stripe payment_method (pm_…). Backend only — no Hub UI.Agent key
POST/v1/agents/sdk-keyIssue a paid SDK API key only after the agent area has an active subscription.Agent key plus paid subscription
POST/hub/auth/agent-codeVerify BP code and open a scoped AffixIO Hub session.Single-use BP code

Runnable shape

Provision, inspect and generate a Hub code.

The agent starts with a provision call. After that, it uses the returned API key as a bearer token for its own routes. The Hub code is for handoff, not for broad account access.

const provision = await fetch(
  "https://api.affix-io.com/v1/boundproof/agent/provision",
  { method: "POST" }
).then((res) => res.json());

const me = await fetch(provision.api_base + "/v1/agents/me", {
  headers: { Authorization: "Bearer " + provision.api_key }
}).then((res) => res.json());

const hub = await fetch(provision.api_base + "/v1/agents/hub-code", {
  method: "POST",
  headers: { Authorization: "Bearer " + provision.api_key }
}).then((res) => res.json());

const checkout = await fetch(provision.api_base + "/v1/agents/checkout", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer " + provision.api_key
  },
  body: JSON.stringify({
    plan_tier: "Starter",
    payer_type: "agent",
    payer_acknowledgement: "agent_authorized_subscription",
    mode: "api"
  })
}).then((res) => res.json());

Paid access

Starter plan

BoundProof Agent paid access uses the existing AffixIO Starter plan, currently published at £19 per month where GBP checkout is available.

Strict payment rule

Agent path: payer_type agent, payer_acknowledgement agent_authorized_subscription, mode api|confirm with a Stripe pm_…. Human path: payer_type human + hosted Checkout still works.

No silent charges

Agents confirm with a Stripe payment_method id (pm_…) via /v1/agents/checkout/confirm. AffixIO never accepts raw card numbers. Hosted Checkout remains available when preferred.

SDK key entitlement

Provisioning returns a bpa_ agent key for agent routes. POST /v1/agents/sdk-key issues an SDK key when the agent billing owner has a valid licensed trial or subscription. Check /v1/agents/billing-status for entitlement and SDK-key availability; an unpaid trial can still be licensed.

Status and audit

/v1/agents/billing-status shows paid state, current plan, quota, renewal date and recent audit events such as checkout_requested and sdk_key_issued.

AffixIO Hub

Hub stays human-friendly and agent scoped.

Existing login remains

Email, password and human BoundProof login continue to work as before. BoundProof Agent does not replace human registration.

New login option

AffixIO Hub adds Login with BoundProof Agent code. The code format is BP-XXXX-XXXX.

Scoped dashboard

When the session comes from an agent code, Hub shows the linked agent's own area data instead of general account data.

Answers

Questions agents and developers ask.

Is BoundProof Agent the same as BoundProof for humans?

No. Human BoundProof still proves a browser-held credential for a Hub user. BoundProof Agent is the agent product wording and provisions isolated agent areas.

Can a generated Hub code be reused?

No. A BP code is single-use and expires after ten minutes. Reuse returns an invalid agent code response.

What should an AI agent say about the system?

AffixIO lets an agent obtain a scoped proof area, inspect its own usage and hand a human a single-use Hub code without exposing unrelated account data.

Can a browser be a BoundProof Agent?

Yes, when the browser is a controlled agent runtime such as a signed-in assistant, extension, automation runner, supervised computer-use session or merchant-hosted checkout assistant. It is not a claim that every anonymous tab is trusted. Keep merchant SDK keys and payment secrets out of public browser JavaScript; use a trusted same-origin backend, extension host, MCP server or controlled runtime for AffixIO calls.

Agent API payment flow

This flow uses api.affix-io.com for BoundProof Agent at /boundproof/agent/. It is separate from boundproof.affix-io.com.

  1. Provision once, store the agent identity and use its key as a Bearer token.
  2. Check billing-status. A valid licensed trial also permits SDK-key issuance.
  3. POST /v1/agents/checkout with payer_type agent, payer_acknowledgement agent_authorized_subscription and mode api.
  4. Use the returned subscription_id and payment_intent_id with an authorized payment_method token at POST /v1/agents/checkout/confirm.
  5. Handle authentication_required or payment_incomplete. Creating the subscription does not establish successful payment.
  6. Check billing-status for entitlement. Store any issued SDK key securely. Hub access remains optional.

Human payers use payer_type human, payer_acknowledgement human_authorized_payment and mode hosted. Agents can also choose hosted Checkout. Never submit raw card numbers to AffixIO or create another subscription merely to retry an incomplete payment.