CryptoAd Network sells crypto advertising over an HTTP API that an AI agent can use on its own. The agent needs an HTTP client and a wallet holding USDC. There is no account to open, no email address and no key to apply for: it asks for the price, pays through the x402 protocol, and the ad is placed in the same exchange.
The ads are seen by people who use crypto: users of FaucetPay, and visitors of the publisher sites in the network.
What an agent can buy
| Format | What is delivered | Price |
|---|---|---|
| PTC (paid-to-click) | A person opens your page and keeps it open for 10 to 120 seconds | From $0.005 per click. The smallest order is 10 clicks, $0.05 |
| Paid Visits | A rewarded visit of 5 to 120 seconds to your landing page | From $0.01 per completed visit; $50 minimum order |
| Banner | A text banner in banner placements on publisher sites | Bid per click or per thousand impressions; $50 minimum order |
| Native | A text card in native placements on publisher sites | Bid per click or per thousand impressions; $50 minimum order |
| Sponsored Listing | A featured row in FaucetPay's faucet list | $200 per week for row 1, $150 per week for rows 2 to 4 |
At the lowest bid, 1,000 paid-to-click views cost $5.00. Every field, limit and price of every format is in one document, the formats list, and no price is negotiated: what the quote says is what is charged.
More about each format: crypto ad formats.
How a purchase works
- Read the formats.
GET /api/v1/formatsreturns each format with its fields, limits, prices and an example order. - Ask for the price.
POST /api/v1/quotewith the order returns the exact total and creates nothing. - Place the order.
POST /api/v1/adswith the same order and anIdempotency-Keyheader. The answer is402 Payment Requiredwith an x402 version 2 payment requirement for exactly that price. - Pay. Sign the payment (USDC, scheme
exact) and repeat the same request with thePAYMENT-SIGNATUREheader. The answer is201with the ad, the transaction hash and an API key for everything that follows. - Follow it.
GET /api/v1/ads/{id}shows the status, andGET /api/v1/ads/{id}/statsthe delivery. The ad is reviewed before it goes live, so the status starts asin_review.
A quote, as it is asked and answered:
curl -s https://cryptoadvertising.net/api/v1/quote \
-H 'content-type: application/json' \
-d '{"product":"PTC","name":"Launch week","landing_url":"https://example.com/",
"ad_title":"Try the new wallet","ad_description":"Open the page and look around.",
"product_options":{"clicks":1000,"duration_seconds":10}}'
{"quote":{"total_usd":"5.00", ...},"order":{...}}
Any x402 version 2 client can make the payment. The payment goes from the agent's wallet straight to ours; we never hold the agent's keys.
What the agent keeps
The first paid order returns an API key. That key is the account: it owns the ad and a balance in US dollars.
- An ad that is rejected in review returns its whole budget to the balance.
- What an ad has not spent returns to the balance when it ends.
- The balance pays for the next order without a new payment, and can be topped
up with
POST /api/v1/balance/topup. - A Banner, Native or Paid Visits ad can be paused, resumed and ended over the API.
The key is shown once and cannot be recovered by email, because there is no email. Store it.
Rules worth knowing before you build
- Nothing is created before a payment is confirmed on chain. A quote and a 402 answer create nothing.
- Repeating a request is safe. The same
Idempotency-Keywith the same body never pays twice and never places a second ad. - There are no webhooks. The API never calls a URL an agent supplies. Poll for the status.
- Landing pages must be https.
- Refunds to a wallet are not automatic. Unspent balance stays usable; a refund is a manual transfer on request.
Documents for machines
- /llms.txt: the API described in plain text for a language model.
- /openapi.json: the OpenAPI 3.1 document, with schemas, error codes and examples.
- /api/v1/formats: every format with its fields and prices.
- /.well-known/x402: the paid resources of this site.
A 402 answer also carries the x402 bazaar extension, which describes how to
call the resource, so catalogs of x402 services can list it.