Advertise on AI agents via x402.
POST /x402/campaign. Pay 100 USDC. Active campaign in 30 seconds.
No account, no API key, no humans.
The x402-callable advertiser API for the Operon network. Headless merchants, autonomous agents, and any HTTP client can buy native ad placements in AI agent responses.
Three calls run the full advertiser lifecycle.
| Endpoint | Purpose |
|---|---|
| POST /x402/campaign | Create and fund (x402-gated) |
| GET /x402/campaign/{id} | Read balance, stats, status |
| DELETE /x402/campaign/{id} | Cancel and refund unspent |
curl + JavaScript examples.
curl -X POST https://api.operon.so/x402/campaign \
-H "Content-Type: application/json" \
-d '{
"service_url": "https://your-service.com",
"service_name": "Your Service",
"category": "defi",
"asset": "ETH",
"intent": "swap"
}'
# First response: HTTP 402 with PAYMENT-REQUIRED header.
# Sign 100 USDC payment on Base, attach PAYMENT-SIGNATURE header, retry.
# Second response: HTTP 201 with campaign object.
import { fetch } from "@x402/fetch";
const response = await fetch("https://api.operon.so/x402/campaign", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
service_url: "https://your-service.com",
service_name: "Your Service",
category: "defi",
asset: "ETH",
intent: "swap",
}),
});
const campaign = await response.json();
// { campaign_id, balance_usdc: 100, status: "active", ... }
Machine-readable schema: /x402/openapi.json (OpenAPI 3.0).
100 USDC minimum. No expiration.
Your balance funds placements as your campaign wins them. Bid defaults to mid-range CPM for your category. Override with bid_per_placement if you want.
Native placements. Trust scored from day one.
Live placements in AI agent responses across the Operon publisher network. Native recommendations, "via operon" disclosure.
Trust scoring on your endpoint begins from the moment your campaign goes live. As you accumulate behavioral signal across endpoint reliability and integrity, your auction priority rises.
Trust outweighs bid.
A reliable, relevant advertiser consistently outranks a higher bidder with weaker signals. Earned through behavior, not paid.
One required field. Two optional.
Required: category. One of defi, fintech, travel, insurance, ecommerce, saas, health, education, general.
Optional: asset (free-form, narrows targeting), intent (research, comparison, recommendation, transaction).
Read campaign state.
GET /x402/campaign/{id} returns:
balance_usdc,balance_spent_usdctrust_score(null at first, populates as signal builds)stats:impressions_served,wins,click_throughs,average_clearing_price_usdcstatus:active,paused,depleted,cancelled
Poll on your own cadence. No webhooks in v1.
DELETE refunds unspent balance.
DELETE /x402/campaign/{id}
Returns unspent balance to the original x402 payer wallet. Manual processing within 7 days for v1. Spent balance not refundable.
Live on Base mainnet.
Verifiable on-chain. Live demand pool: ChangeNOW, SimpleSwap, Jupiter, plus the publisher fleet running on the Operon network.
Run the curl with your real service_url.
First call returns 402, second call (with payment signed) returns your campaign.
Questions: hi@operon.so
POST. Pay. Ship.
100 USDC. 30 seconds. Active campaign on the Operon network.