Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Growaify Autonomous Agent Commerce X402 API
version: 2.3.0
description: 'Autonomous agent commerce API. Everything under /x402 is sold for USDC on Base over x402: unpaid requests answer HTTP 402 and the deliverable ships in the paid response. Everything else is free to read.'
servers:
- url: https://growaify.com
description: Production Engine
tags:
- name: X402
paths:
/x402/template:
get:
summary: One automation template (n8n JSON) delivered instantly
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: None USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: null
priceUsd: null
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
parameters:
- name: tpl
in: query
required: true
description: Template sku, for example clinic-reminder. The catalogue is at /templates/.
schema:
type: string
tags:
- X402
operationId: getX402Template
x-operation-id-source: derived
/x402/audit:
get:
summary: 'Automation audit: a written report on one workflow'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 49.0 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '49000000'
priceUsd: 49.0
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
parameters:
- name: target
in: query
required: false
description: 'What to audit: a workflow name, a system, or a URL.'
schema:
type: string
- name: note
in: query
required: false
description: Anything else the auditor should know before starting.
schema:
type: string
tags:
- X402
operationId: getX402Audit
x-operation-id-source: derived
/x402/agent-starter:
get:
summary: 'Agent starter bundle: three templates plus integration notes'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 149.0 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '149000000'
priceUsd: 149.0
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
requestBody:
required: false
description: This resource takes no input. The body is empty by design; everything the buyer needs is in the response.
content:
application/json:
schema:
type: object
properties: {}
additionalProperties: false
tags:
- X402
operationId: getX402AgentStarter
x-operation-id-source: derived
/x402/item/{id}:
get:
summary: Buy one micro item (recipe, prompt pack, schema or tool)
description: Each of the 489 micro items is payable individually over x402 and is delivered in the paid response. The catalogue is at /api/v1/x402/micro, one item is described by /api/v1/x402/micro/{id}, and this path buys it. Items are US$0.99 to US$2.99.
parameters:
- name: id
in: path
required: true
description: Item id, e.g. recipe-webhook-slack
schema:
type: string
responses:
'200':
description: Paid and delivered. The body is the item.
'402':
description: Payment required.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
tags:
- X402
operationId: getX402ItemById
x-operation-id-source: derived
/x402/obs/agents:
get:
summary: 'A JSON snapshot of what agents do at this merchant: visits, distinct…'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 0.3 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '300000'
priceUsd: 0.3
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
parameters:
- name: days
in: query
required: false
description: Window in days, 1 to 30. Defaults to 7. Clamped to what the log covers, and echoed back as window_days so the buyer knows what they received.
schema:
type: integer
minimum: 1
maximum: 30
default: 7
tags:
- X402
operationId: getX402ObsAgents
x-operation-id-source: derived
/x402/obs/methodology:
get:
summary: 'Just the method: how the observation feed is measured, what it excludes and…'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 0.1 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '100000'
priceUsd: 0.1
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
requestBody:
required: false
description: This resource takes no input. The body is empty by design; everything the buyer needs is in the response.
content:
application/json:
schema:
type: object
properties: {}
additionalProperties: false
tags:
- X402
operationId: getX402ObsMethodology
x-operation-id-source: derived
/x402/obs/tick:
get:
summary: 'One reading from the live series: agent visits, distinct identities and the…'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 0.001 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d. No request parameters: this resource is bought as-is.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '1000'
priceUsd: 0.001
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
tags:
- X402
operationId: getX402ObsTick
x-operation-id-source: derived
/x402/test/{test_id}:
get:
summary: 'The agent testbed: point a real agent here to learn whether it can act on a 402…'
description: 'Paid over x402 on eip155:8453. Unpaid requests return HTTP 402 with a PAYMENT-REQUIRED header; the response body is the deliverable once payment settles, so the artefact arrives in the same HTTP response that is paid for. Price: 0.001 USD in USDC to 0x71aa2941B023e27532604B55A3c999601128CB4d.'
responses:
'200':
description: Paid and delivered. The body is the purchased artefact.
'402':
description: Payment required. No free tier on this resource.
headers:
PAYMENT-REQUIRED:
description: Base64 JSON describing the accepted payment. Decode it to get scheme, network, asset, amount and pay_to, then pay and retry with the X-PAYMENT header.
schema:
type: string
content:
application/json:
schema:
type: object
required:
- error
- message
properties:
error:
type: string
const: payment_required
message:
type: string
accepts:
type: array
items:
type: object
x-x402:
scheme: exact
network: eip155:8453
asset: USDC
assetAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
amount: '1000'
priceUsd: 0.001
payTo: '0x71aa2941B023e27532604B55A3c999601128CB4d'
parameters:
- name: test_id
in: path
required: true
description: 'The id returned by POST /api/v1/agent-test/register. An id that was never registered gets 404 rather than 402, deliberately: a challenge for a test whose report cannot be read would bill an agent for a measurement it will never see.'
schema:
type: string
tags:
- X402
operationId: getX402TestByTestId
x-operation-id-source: derived
/api/v1/x402/funnel:
get:
summary: 'The payment funnel: where clients stop between being asked to pay and paying'
description: 'Our own request log, reduced to the stages that explain a failure. A log of successful payments cannot explain why nobody bought; this records the challenge, the attempt, the verification and the settlement separately, so an empty stage is published as an empty stage. It is the one measurement in this ecosystem that explains non-conversion, and it stays free to read because a merchant reading it is the point. Figures are re-derivable from our raw event log with the named script, and the window is honoured rather than ignored. The event store is bounded, so the window is honoured as far as the store reaches and no further: read `coverage` before quoting any stage figure, and `lifetime` when the all-time number is what you need.'
parameters:
- name: days
in: query
required: false
description: Window in days, 1 to 90, default 1. Clamped and echoed back as window_days. A parameter that is accepted and silently ignored would publish a twenty-four hour figure under a longer label - and so would a parameter honoured only as far as a bounded store reaches, which is why the response distinguishes days_requested from days_covered.
schema:
type: integer
minimum: 1
maximum: 90
default: 1
responses:
'200':
description: stages, attempt_rate, completion_rate, challenged_by_caller_class, attempt_failure_reasons, per_resource, internal_vs_external, window_days, coverage {days_requested, days_covered, truncated, events_held, events_held_limit, oldest_event_held, newest_event_held}, lifetime {challenges, attempts, delivered}. coverage.truncated=true means every stage count describes the held window, not the requested one, so the figures are a floor; lifetime counts since the store was created and is never trimmed.
tags:
- X402
operationId: getApiV1X402Funnel
x-operation-id-source: derived
/api/v1/x402/resources:
get:
summary: The paid catalogue
description: 'Every resource this merchant sells over x402, with its price, asset, network, receiving address and scheme - everything a buyer needs before it signs. No key, no account. Prices here are the prices charged: the published spec is generated from this document, not typed alongside it.'
responses:
'200':
description: The resource list.
tags:
- X402
operationId: getApiV1X402Resources
x-operation-id-source: derived
/api/v1/x402/micro:
get:
summary: The micro tier, item by item
description: Hundreds of finished items at $0.99 to $2.99, each payable individually and delivered in the paid response. One item is described by /api/v1/x402/micro/{id} and bought at /x402/item/{id}.
responses:
'200':
description: count, price_range_usd and the item list.
tags:
- X402
operationId: getApiV1X402Micro
x-operation-id-source: derived
/api/v1/x402/payments:
get:
summary: What has actually settled
description: 'The settled-payment record: how many transactions, for how much, and the recent ones. Published as it stands, including when it reads zero.'
responses:
'200':
description: total_usd, count and the recent settlements.
tags:
- X402
operationId: getApiV1X402Payments
x-operation-id-source: derived
x-discovery:
x402: https://growaify.com/.well-known/x402
catalogue: https://growaify.com/api/v1/x402/resources
micro: https://growaify.com/api/v1/x402/micro
mcp: https://growaify.com/mcp
agentCard: https://growaify.com/.well-known/agent-card.json
llms: https://growaify.com/llms.txt
erc8004: https://growaify.com/.well-known/agent-registration.json
did: did:web:growaify.com
attestations: https://growaify.com/api/v1/attest/summary
agentTest: https://growaify.com/api/v1/agent-test/register
funnel: https://growaify.com/api/v1/x402/funnel
cohorts: https://growaify.com/api/v1/live/cohorts
research: https://growaify.com/api/v1/research/agent-commerce.json