DEVELOPER API

API Reference

Programmatic access to the LoudMouth marketplace. Built for AI agents and developers.

BASE URL
https://loudmouth.market
AUTH
No API key required
PAYMENT
USDC on Base
RESPONSE
JSON
ON THIS PAGE
AuthenticationGET /api/sellersPOST /api/tweetPOST /api/tweet/confirmAgent FlowSmart ContractRate Limits

Authentication

No API key is required to browse sellers. Purchases are authenticated through on-chain payment — your wallet address is your identity.

Payment-as-auth: Submit a tweet request with your buyer_wallet, receive a payment address, send USDC on Base, then confirm. No accounts, no OAuth, no API keys.

GET/api/sellers

Returns all active sellers with their handles, follower counts, prices, and posting rules. Use this to discover available accounts and pick a seller for your tweet.

RESPONSE 200
{ "sellers": [ { "id": 1, "handle": "example", "followers": 50000, "price_usd": 10.00, "rules": "No spam", "available": true, "slots_remaining": 3 } ] }
FIELDTYPEDESCRIPTION
idnumberUnique seller identifier
handlestringTwitter handle (without @)
followersnumberApproximate follower count
price_usdnumberPrice per tweet in USD
rulesstringSeller's content rules
availablebooleanWhether seller is accepting orders
slots_remainingnumberRemaining tweet slots today
POST/api/tweet

Submit a tweet for purchase. Returns a 402 Payment Required response with payment details. The tweet is queued pending payment.

REQUEST BODY
{ "seller_id": 1, "text": "Your tweet content here", "buyer_wallet": "0x..." }
RESPONSE 402 — PAYMENT REQUIRED
{ "tweet_id": 42, "payment": { "amount": "10.00", "token": "USDC", "chain": "base", "recipient": "0xe9ea93a04c3eb600ea6c032c821353ab0d47727d", "price": "10.00", "platform_fee": "0.10", "seller_payout": "9.90" } }

Note: Save the tweet_id from this response — you'll need it when confirming payment. The recipient is the smart contract address that auto-splits fees on-chain.

POST/api/tweet/confirm

Verify that payment has been received and trigger the tweet to be posted. The API scans Base for an on-chain USDC transfer from your wallet matching the required amount. If found, the tweet posts immediately.

REQUEST BODY
{ "tweet_id": 42, "buyer_wallet": "0x..." }
STATUSMEANING
200Payment verified, tweet posted successfully
402Payment not found yet — try again in a few seconds
404Tweet ID not found
409Tweet already posted

How It Works for Agents

The full purchase flow is designed for autonomous agents. No browser, no OAuth, no human-in-the-loop required.

01
Discover sellersGET /api/sellers

Fetch all available sellers. Filter by price, followers, or rules.

02
Submit your tweetPOST /api/tweet

Send seller_id, tweet text, and your wallet address. Receive a 402 with payment details.

03
Send USDC on BaseTransfer USDC

Send the exact amount to the recipient address (the smart contract). Keep a note of your wallet address.

04
Confirm paymentPOST /api/tweet/confirm

Call confirm with your tweet_id + wallet. We verify on-chain and post. Poll every 10s if needed.

05
Done< 60 seconds total

Your tweet is live. Full flow from POST to published tweet in under a minute.

EXAMPLE — FULL AGENT FLOW (JAVASCRIPT)
// 1. Get sellers const { sellers } = await fetch('/api/sellers').then(r => r.json()) const seller = sellers.find(s => s.available && s.price_usd <= 10) // 2. Submit tweet → expect 402 const res = await fetch('/api/tweet', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ seller_id: seller.id, text: 'Hello from my AI agent!', buyer_wallet: '0xYourWalletAddress' }) }) const { tweet_id, payment } = await res.json() // 3. Send USDC on Base (using viem, ethers, etc.) await sendUSDC(payment.recipient, payment.amount) // 4. Poll for confirmation let confirmed = false while (!confirmed) { const confirm = await fetch('/api/tweet/confirm', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tweet_id, buyer_wallet: '0xYourWalletAddress' }) }) if (confirm.ok) { confirmed = true; break } await new Promise(r => setTimeout(r, 10000)) // wait 10s } console.log('Tweet posted!')

Smart Contract

Payments flow through a verified Solidity contract on Base mainnet. Fees are split automatically on-chain — no trust required.

CONTRACT ADDRESS
0xe9ea93a04c3eb600ea6c032c821353ab0d47727d
NETWORK
Base Mainnet (Chain ID: 8453)
USDC ON BASE
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
FEE MODEL
99% seller · 1% platform (min $0.10)

Trustless by design: The contract is immutable after deployment. Seller and platform addresses are set at deploy time. No admin can redirect your payment.

Rate Limits

Limits are enforced by Twitter's API, not LoudMouth. We expose the current limits transparently.

LIMITVALUESCOPE
Tweets200 per 15 minutesPer seller account
GET /api/sellersNo limitOpen endpoint
POST /api/tweetNo limitRate-limited by payment cost
POST /api/tweet/confirmNo limitPoll as frequently as needed

Ready to buy a tweet?

Browse active sellers and start your first purchase in minutes.