aiagentscity-com Billing API

The Billing API from aiagentscity-com — 4 operation(s) for billing.

Operations 4

GET /v1/billing/{email} Billing Status #
POST /v1/billing/checkout Create Checkout #
POST /v1/billing/x402 X402 Billing #
POST /v1/billing/x402/recover X402 Recover #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aiagentscity-com:aiagentscity-com-billing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aiagentscity-com-billing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AgentLedger Billing API
  version: 0.4.7
  x-guidance: 'AgentLedger is per-agent AI spend tracking with ENFORCED budget caps. Two ways in, both machine-only. (1) FREE, no wallet: POST /start mints a workspace_key (shown once) with no signup and no card — GET /start only renders the form and does NOT mint. Claim an agent with the key in the body of POST /v1/track, set a cap with POST /v1/budget, then route traffic through /proxy/{provider}/... so an over-budget call is refused with 402 BEFORE the provider is contacted. (2) PAID, no human: POST /v1/billing/x402 with a wallet-signed x402 payment mints a workspace bound to the paying wallet. NOTE: a workspace_key claims NEW agents; an agent_secret writes to an existing one. Plain POST /v1/track can reject the ledger write that would cross a cap but cannot un-spend a charge that already happened — only the proxy/wrapper path stops money.'
tags:
- name: Billing
paths:
  /v1/billing/{email}:
    get:
      summary: Billing Status
      description: 'Customer plan lookup — OWNER-ONLY (Opus audit round 3: was an open

        email-enumeration oracle). Token = HMAC-SHA256("billing:",

        AL_ADMIN_SECRET), truncated to 32 hex chars; the operator computes it,

        customers never see billing state of other emails.'
      operationId: billing_status_v1_billing__email__get
      parameters:
      - name: email
        in: path
        required: true
        schema:
          type: string
          title: Email
      - name: token
        in: query
        required: false
        schema:
          type: string
          default: ''
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - Billing
  /v1/billing/checkout:
    post:
      summary: Create Checkout
      description: 'Gone — the human Stripe checkout door was removed (blueprint v2, 2026-10-11).


        x402 is now the only paid path on the domain. 410 (not 404): the route

        existed, callers in the wild may still hold it, and a typed envelope that

        names the replacement is more useful than a bare missing route. The Stripe

        webhook stays wired — a checkout that was already in flight when this

        shipped can still complete and must still be honoured.'
      operationId: create_checkout_v1_billing_checkout_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Billing
  /v1/billing/x402:
    post:
      summary: X402 Billing
      description: 'Mint (or resolve) a workspace from a settled x402 payment.


        The settlement transaction hash is the idempotency key, per spec 3b —

        implemented on the SAME idempotency store /v1/track uses

        (idempotency_begin/store/release in ledger_engine), not a second

        bespoke mechanism. Consequences:


        - Replaying the SAME tx_hash returns the same workspace_id, but the

        raw workspace_key is REDACTED from the cached replay. The key is

        shown exactly once, in the original response; a replay must not

        re-expose it to anyone who can name the tx_hash. Same precedent as

        /v1/track and /v1/budget, which strip the minted agent_secret from

        their cached payloads for the same reason.

        - The pass is RENEWABLE (blueprint v2, 2026-10-11 — x402 is the only

        paid path on the domain). A second purchase from a known wallet resolves

        to its existing workspace with workspace_key: null (the key was already

        issued and only its hash is stored), grants a fresh pass window, and

        nothing is invalidated.'
      operationId: x402_billing_v1_billing_x402_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: Payment required. The PAYMENT-REQUIRED response header carries the base64url x402 challenge (price, network, asset, payTo, maxTimeoutSeconds).
          headers:
            PAYMENT-REQUIRED:
              description: base64url x402 payment challenge
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
      requestBody:
        required: false
        description: No body is required — the payment rides in the PAYMENT-SIGNATURE (or X-PAYMENT) header. Send an empty JSON object to ask for the 402 challenge.
        content:
          application/json:
            schema:
              type: object
              properties: {}
              example: {}
      x-payment-info:
        offers:
        - amount: '100000'
          currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          description: $0.10 USDC via x402-base buys a 24h Pro pass on a workspace bound to the paying wallet
          intent: charge
          method: x402-base
        x402:
          protocols:
          - protocol: x402
            version: 2
            scheme: exact
            network: eip155:8453
          pricingMode: fixed
          currency: USDC
          amountUnit: atomic
          amount: '100000'
          asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
          network: eip155:8453
          payTo: '0x363c520492EDbA89057bCe696B74263B3295a72A'
          priceUsd: 0.1
          priceDescription: $0.10 USDC buys a 24h Pro pass on a workspace bound to the paying wallet
      tags:
      - Billing
  /v1/billing/x402/recover:
    post:
      summary: X402 Recover
      operationId: x402_recover_v1_billing_x402_recover_post
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - Billing
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
x-service-info:
  docs:
    llms: /llms.txt
x-products:
- id: trustscan
  x-slot: trust
  x-direction: outward
  x-connect:
    mcp: https://aiagentscity.com/mcp/trustscan
    paid_call: POST https://aiagentscity.com/api/x402/trustscan/npm
    human: https://aiagentscity.com/trust-scan
  tagline: Scan before you trust
  free_proof: POST /api/trustscan/npm returns registry facts + a typosquat screen for any package, unauthenticated — the same check is payable per call over x402 without the rate limit; remote deep scans are path-scoped to the host
- id: agent-watch
  x-slot: trust
  x-direction: outward
  x-connect:
    mcp: https://aiagentscity.com/mcp/agent-watch
    paid_call: POST https://aiagentscity.com/api/x402/agent-watch/probe
    human: https://aiagentscity.com/agent-watch
  tagline: Is this agent or MCP server real and still behaving?
  free_proof: aw_health + aw_census MCP tools are open reads — live census data, no auth
- id: perimeter-watch
  x-slot: trust
  x-direction: outward
  x-connect:
    mcp: https://aiagentscity.com/mcp/perimeter-watch
    human: https://aiagentscity.com/perimeter-watch
  tagline: Is your endpoint still what it claims — checked from the outside?
  free_proof: free browser snapshot — https://entradox.github.io/perimeter-watch-site/
- id: benefits-city
  x-slot: outcome
  x-direction: outward
  x-connect:
    mcp: https://aiagentscity.com/benefits/mcp
    human: https://aiagentscity.com/benefits
  tagline: Verified offer records — will this action actually pay?
  free_proof: search_bonuses / get_bonus MCP tools return hand-verified records with source URLs — no auth
- id: cited
  x-slot: outcome
  x-direction: outward
  x-connect:
    mcp: https://aiagentscity.com/mcp/cited
    human: https://aiagentscity.com/cited
  tagline: Prove the claim that AI recommends you — verbatim evidence
  free_proof: free browser scan — https://entradox.github.io/cited-site/
- id: agent-ledger
  x-slot: outcome
  x-direction: spine
  x-connect:
    mcp: https://aiagentscity.com/mcp/
    rest: https://aiagentscity.com/v1/
    install: npx @aiagentscity/setup ledger
    human: https://aiagentscity.com/agent-ledger
  tagline: Metered, capped, receipted agent spend — proof of what every cent bought
  free_proof: POST /start mints a free workspace (3 agents, every rail) — no signup, no card
- id: workbench-kit
  x-slot: trust+outcome
  x-direction: inward
  x-connect:
    install: npx @aiagentscity/setup workbench
    human: https://aiagentscity.com/workbench
  tagline: Frame, gate, and close-receipt every agent task — proof of what your agents did
  free_proof: the whole kit is free and runs fully offline — `wb verify <receipt_id>` recomputes a close receipt against the local ledger
x-frame:
  frame: trust-and-outcome
  tagline: 'The trust-and-outcome clearing layer for the agent economy: before an agent acts, it verifies the counterparty; after it acts, it proves the result.'
  questions:
    trust: Before an agent acts — can it trust the counterparty?
    outcome: After an agent acts — did it work?
  directions:
    outward: verifies counterparties outside your fleet
    spine: the receipts rail every instrument writes through
    inward: verifies your own fleet's work
  parked: []