Prototype · Base Sepolia testnet · API3 AirnodeHub

Pay-per-post, settled on a signed tweet

A brand locks a budget for a sponsored post on X. The contract pays the creator only when TwitterAPI.io's answer, signed through API3 AirnodeHub, shows that the post is live, was written by the agreed creator, carries the deal code, was posted after the deal opened, has stayed up for the hold period and has enough views. The payout follows the views, up to a cap. The agent that submits the proof earns a fee in the same transaction, and the rest goes back to the brand.

Brands fear deleted posts and faked screenshots; creators fear brands that pay late. A signature replaces the screenshot. AI can find the post, but the contract decides: no LLM is on the money path.

Escrow
…
Data signer (TwitterAPI.io Airnode)
…
Token
…

Watch the agent team run a campaign

Three agents, each with its own wallet. The Scout buys an X search over x402 and uses Claude to pick the post that best promotes the campaign. The Brand uses Claude to turn a one-line brief into deal terms, which code then clamps to hard limits, and opens the deal on chain. The Settler buys the signed tweet over x402 and calls settle. Claude only interprets: whether money moves is decided by the contract's checks on signed data.

The passcode only protects the scarce testnet ETH in the agents' wallets. Each run opens a deal for an existing public post that mentions @tbc_munich (a bounty for a post that already exists) and pays a demo address.

    How settle decides

    1. Signer and request. The contract rebuilds the AirnodeHub request hash from the tweet id and recovers the signer. Only TwitterAPI.io's Airnode passes, and only for this exact tweet. Otherwise it reverts with NotSignedByAirnode.
    2. Fresh. The response was signed at most 2 minutes before the block, so the post was live just now. ResponseTooOld
    3. Posted after the deal opened. Read from the tweet's Snowflake id, with no date parsing. PostedTooEarly
    4. Hold period over. Post time + hold ≤ signing time. HoldNotOver
    5. Right post, right creator, code present. These are checked on the signed bytes. WrongTweet · WrongAuthor · CodeMissing
    6. Enough views. The payout is min(cap, views × price per 1000). NotEnoughViews

    Deals on chain

    Read live from the contract. For each settlement, this page decodes the transaction, rebuilds the request hash, recovers the signer and re-runs the contract's checks in your browser.

    Reading Base Sepolia…

    Rejected on chain

    Each of these settle calls was sent on purpose and reverted on chain. The first four are API3 tamper cases; the last two use genuine signed data that breaks the deal's rules. The browser re-check runs the same steps as the contract and should stop at the same error.

    Reading Base Sepolia…

    The settlement agent's trail

    The agent finds the post with searchTweets (discovery only, never checked on chain), buys the signed tweetsByIds answer over x402 (0.01 aUSD each, Base Sepolia), checks it locally, then calls settle and collects its fee.

    Honest gaps