audio.halowerk.com
HALOWERK provides paid endpoints that AI agents call and pay for per request via x402 on Base. No account, no API key, no signup.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"docs": "https://audio.halowerk.com/llms.txt",
"name": "audio_ad_slot_auction",
"error": "payment_required",
"accepts": [
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"asset": "USDC",
"version": "2",
"eip712Domain": {
"name": "USD Coin",
"chainId": 8453,
"version": "2",
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"network_name": "Base Mainnet",
"assetTransferMethod": "eip3009"
},
"payTo": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E",
"amount": "4000",
"scheme": "exact",
"network": "eip155:8453",
"currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"recipient": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E",
"maxTimeoutSeconds": 300
}
],
"pricing": "https://audio.halowerk.com/pricing",
"resource": {
"url": "https://audio.halowerk.com/ad-slot-auction",
"mimeType": "application/json",
"description": "Four actions on one endpoint. create opens a slot with its position, length, reserve price and closing time, and returns an admin token that only the opener holds. bid places a sealed bid, checked against the reserve, the slot length and the publisher's excluded categories before it is accepted — a rejected bid is recorded with its reason rather than silently dropped, so a bidder can see why it never competed."
},
"extensions": {
"bazaar": {
"info": {
"input": {
"body": {
"action": "create"
},
"type": "http",
"method": "POST",
"bodyType": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"enum": [
"create",
"bid",
"close",
"status"
],
"type": "string",
"description": "create opens a slot, bid places a sealed bid, close settles it, status reads it."
},
"bidder": {
"type": "string",
"maxLength": 120,
"description": "Who is bidding. bid only."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Advertiser category, checked against the exclusions. bid only."
},
"position": {
"enum": [
"pre_roll",
"mid_roll",
"post_roll"
],
"type": "string",
"description": "Where the slot sits in the content. create only."
},
"publisher": {
"type": "string",
"maxLength": 120,
"description": "Name of the publisher offering the slot. create only."
},
"auction_id": {
"type": "string",
"maxLength": 64,
"description": "Required for bid, close and status."
},
"slot_label": {
"type": "string",
"maxLength": 200,
"description": "What is being sold, for example \"episode 41, mid-roll 2\". create only."
},
"admin_token": {
"type": "string",
"maxLength": 128,
"description": "Required for close. Returned once by create."
},
"amount_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Sealed bid amount. bid only."
},
"reserve_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Price below which the slot is not sold. create only."
},
"slot_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 5,
"description": "Length of the slot. create only."
},
"closes_at_unix": {
"type": "integer",
"minimum": 0,
"description": "Closing time in Unix seconds. create only. At most 30 days out."
},
"creative_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"description": "Length of the advertisement, checked against the slot. bid only."
},
"expected_listeners": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Reach the publisher claims. Recorded as a claim, not verified. create only."
},
"excluded_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20,
"description": "Advertiser categories the publisher refuses. create only."
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
},
"price_usdc": "0.004",
"description": "Four actions on one endpoint. create opens a slot with its position, length, reserve price and closing time, and returns an admin token that only the opener holds. bid places a sealed bid, checked against the reserve, the slot length and the publisher's excluded categories before it is accepted — a rejected bid is recorded with its reason rather than silently dropped, so a bidder can see why it never competed. close settles the auction and needs the admin token: the highest valid bid wins and pays the second-highest price, or the reserve if it was the only bid. status reads the auction, and before the close it returns the number of bids but never their amounts, to anyone, the publisher included. The second-price rule is the point of the design rather than a detail: under it a bidder's best move is to bid what the slot is genuinely worth to them, so the publisher learns real values instead of guesses about the competition. What this is not is stated in every answer: it is a ledger and a clearing mechanism, it holds no funds, it delivers no audio, and the winner still owes the publisher out of band. Every state change is recorded with a timestamp so an auction can be audited after the fact.",
"inputSchema": {
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"enum": [
"create",
"bid",
"close",
"status"
],
"type": "string",
"description": "create opens a slot, bid places a sealed bid, close settles it, status reads it."
},
"bidder": {
"type": "string",
"maxLength": 120,
"description": "Who is bidding. bid only."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Advertiser category, checked against the exclusions. bid only."
},
"position": {
"enum": [
"pre_roll",
"mid_roll",
"post_roll"
],
"type": "string",
"description": "Where the slot sits in the content. create only."
},
"publisher": {
"type": "string",
"maxLength": 120,
"description": "Name of the publisher offering the slot. create only."
},
"auction_id": {
"type": "string",
"maxLength": 64,
"description": "Required for bid, close and status."
},
"slot_label": {
"type": "string",
"maxLength": 200,
"description": "What is being sold, for example \"episode 41, mid-roll 2\". create only."
},
"admin_token": {
"type": "string",
"maxLength": 128,
"description": "Required for close. Returned once by create."
},
"amount_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Sealed bid amount. bid only."
},
"reserve_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Price below which the slot is not sold. create only."
},
"slot_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 5,
"description": "Length of the slot. create only."
},
"closes_at_unix": {
"type": "integer",
"minimum": 0,
"description": "Closing time in Unix seconds. create only. At most 30 days out."
},
"creative_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"description": "Length of the advertisement, checked against the slot. bid only."
},
"expected_listeners": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Reach the publisher claims. Recorded as a claim, not verified. create only."
},
"excluded_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20,
"description": "Advertiser categories the publisher refuses. create only."
}
},
"additionalProperties": false
},
"price_model": "per_call",
"x402Version": 2,
"instructions": "Sign the accepted terms with an x402 client and repeat the request with the payment header.",
"payment_header": "PAYMENT-SIGNATURE",
"capability_request": {
"url": "https://bedarf.halowerk.com/capabilities/request",
"cost": "free",
"method": "POST",
"description": "Missing a capability, or does the scope not fit? Report the need here - no payment required. Similar reports are bundled; the response returns an id you can check back on.",
"body_example": {
"max_price": 0.01,
"description": "what exactly is needed",
"requested_capability": "short label"
}
}
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
Pay 0.004 USDC on Base to 0x2880…C4E5E. The signed payment is good for 5 minutes.
- Paid to
- 0x2880…C4E5E
- USD Coin contract
- 0x8335…02913
- Payment window
- 5 minutes
- As published
- 4000 smallest units
The catalog’s raw entry
[
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"asset": "USDC",
"version": "2",
"eip712Domain": {
"name": "USD Coin",
"chainId": 8453,
"version": "2",
"verifyingContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"network_name": "Base Mainnet",
"assetTransferMethod": "eip3009"
},
"payTo": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E",
"amount": "4000",
"scheme": "exact",
"network": "eip155:8453",
"currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"recipient": "0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E",
"maxTimeoutSeconds": 300
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"body": {
"action": "create"
},
"type": "http",
"method": "POST",
"bodyType": "json"
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method",
"bodyType",
"body"
],
"properties": {
"body": {
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"enum": [
"create",
"bid",
"close",
"status"
],
"type": "string",
"description": "create opens a slot, bid places a sealed bid, close settles it, status reads it."
},
"bidder": {
"type": "string",
"maxLength": 120,
"description": "Who is bidding. bid only."
},
"category": {
"type": "string",
"maxLength": 40,
"description": "Advertiser category, checked against the exclusions. bid only."
},
"position": {
"enum": [
"pre_roll",
"mid_roll",
"post_roll"
],
"type": "string",
"description": "Where the slot sits in the content. create only."
},
"publisher": {
"type": "string",
"maxLength": 120,
"description": "Name of the publisher offering the slot. create only."
},
"auction_id": {
"type": "string",
"maxLength": 64,
"description": "Required for bid, close and status."
},
"slot_label": {
"type": "string",
"maxLength": 200,
"description": "What is being sold, for example \"episode 41, mid-roll 2\". create only."
},
"admin_token": {
"type": "string",
"maxLength": 128,
"description": "Required for close. Returned once by create."
},
"amount_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Sealed bid amount. bid only."
},
"reserve_usdc": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Price below which the slot is not sold. create only."
},
"slot_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 5,
"description": "Length of the slot. create only."
},
"closes_at_unix": {
"type": "integer",
"minimum": 0,
"description": "Closing time in Unix seconds. create only. At most 30 days out."
},
"creative_seconds": {
"type": "integer",
"maximum": 180,
"minimum": 1,
"description": "Length of the advertisement, checked against the slot. bid only."
},
"expected_listeners": {
"type": "integer",
"maximum": 100000000,
"minimum": 0,
"description": "Reach the publisher claims. Recorded as a claim, not verified. create only."
},
"excluded_categories": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20,
"description": "Advertiser categories the publisher refuses. create only."
}
},
"additionalProperties": false
},
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
}
},
"additionalProperties": false
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-08-13 11:55Z
- Last indexed by Roundhouse
- 2026-09-12 11:50Z
- Last enriched (probe, favicon, geo)
- 2026-09-21 16:15Z
- x402 version
- 2
- Max timeout
- 300s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
This endpoint's own trailing-30-day call count, as published by the upstream catalog and snapshotted daily. 20 snapshots so far. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service audio.halowerk.com and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=audio.halowerk.com' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://audio.halowerk.com/ad-slot-auction, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402, or use an organization key from https://roundhouseai.io/dashboard/team. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.