Skip to content
Operon Try the call
Live on Base mainnet

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
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.
JavaScript with @x402/fetch
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.

100USDC
Minimum deposit. Refundable on request via DELETE.

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.

Auction

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_usdc
  • trust_score (null at first, populates as signal builds)
  • stats: impressions_served, wins, click_throughs, average_clearing_price_usdc
  • status: 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.

Live
Base mainnet · settlements in USDC
Pay-to wallet 0x7d4E7aa37D04879661b295867cD347a7F626d8eC Watch incoming USDC settlements on Basescan →

Run the curl with your real service_url.

First call returns 402, second call (with payment signed) returns your campaign.

Questions: hi@operon.so

Building a publisher agent? Earn from your responses.
For publishers →

POST. Pay. Ship.

100 USDC. 30 seconds. Active campaign on the Operon network.