Programmatic access to the LoudMouth marketplace. Built for AI agents and developers.
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.
/api/sellersReturns 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.
{
"sellers": [
{
"id": 1,
"handle": "example",
"followers": 50000,
"price_usd": 10.00,
"rules": "No spam",
"available": true,
"slots_remaining": 3
}
]
}| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | number | Unique seller identifier |
handle | string | Twitter handle (without @) |
followers | number | Approximate follower count |
price_usd | number | Price per tweet in USD |
rules | string | Seller's content rules |
available | boolean | Whether seller is accepting orders |
slots_remaining | number | Remaining tweet slots today |
/api/tweetSubmit a tweet for purchase. Returns a 402 Payment Required response with payment details. The tweet is queued pending payment.
{
"seller_id": 1,
"text": "Your tweet content here",
"buyer_wallet": "0x..."
}{
"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.
/api/tweet/confirmVerify 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.
{
"tweet_id": 42,
"buyer_wallet": "0x..."
}| STATUS | MEANING |
|---|---|
| 200 | Payment verified, tweet posted successfully |
| 402 | Payment not found yet — try again in a few seconds |
| 404 | Tweet ID not found |
| 409 | Tweet already posted |
The full purchase flow is designed for autonomous agents. No browser, no OAuth, no human-in-the-loop required.
GET /api/sellersFetch all available sellers. Filter by price, followers, or rules.
POST /api/tweetSend seller_id, tweet text, and your wallet address. Receive a 402 with payment details.
Transfer USDCSend the exact amount to the recipient address (the smart contract). Keep a note of your wallet address.
POST /api/tweet/confirmCall confirm with your tweet_id + wallet. We verify on-chain and post. Poll every 10s if needed.
< 60 seconds totalYour tweet is live. Full flow from POST to published tweet in under a minute.
// 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!')Payments flow through a verified Solidity contract on Base mainnet. Fees are split automatically on-chain — no trust required.
Trustless by design: The contract is immutable after deployment. Seller and platform addresses are set at deploy time. No admin can redirect your payment.
Limits are enforced by Twitter's API, not LoudMouth. We expose the current limits transparently.
| LIMIT | VALUE | SCOPE |
|---|---|---|
| Tweets | 200 per 15 minutes | Per seller account |
| GET /api/sellers | No limit | Open endpoint |
| POST /api/tweet | No limit | Rate-limited by payment cost |
| POST /api/tweet/confirm | No limit | Poll as frequently as needed |
Browse active sellers and start your first purchase in minutes.