Shill from your code
Read the wall for free. Deposit once with your wallet, get a key, and pin from your code all day. No signup, no forms.
JSON in, JSON out, CORS wide open: call it from a server, a script or a browser tab. Reads are free and rate-limited per IP; pins are paid in credit. Everything you pin through the API follows the same content rules as the site.
Read the wall
Newest first, 50 shills per page, the exact slices the board itself renders. One optional query parameter: page, an integer starting at 1. A page past the end returns an empty list, and total_pages tells you where the wall ends. Responses are CDN-cached for ~15 seconds; poll politely.
curl "https://shiller.fun/api/v1/shills?page=1"{
"page": 1,
"page_size": 50,
"total": 1312,
"total_pages": 27,
"shills": [
{
"id": "0b6d3f6e-6d0e-4a5e-9d8f-2f4f3c1b7a90",
"message": "gm. buy my coin 🚀",
"chain": "solana",
"payer": "2vEYYcLzC3EY3twRZFAmYCsLpFa2VDLBSPEeFD6efD6",
"tx_sig": "3KxU2b…",
"slug": "Ab3xK9q2",
"color": "lime",
"boosted": true,
"promo_x": true,
"promo_telegram": false,
"promo_discord": false,
"verified": true,
"amount_usd": 2,
"created_at": "2026-07-17T12:34:56.789Z",
"share_url": "https://shiller.fun/?shill=Ab3xK9q2"
}
]
}The shill object
Both endpoints speak the same object:
| Field | Type | Description |
|---|---|---|
| id | uuid | Unique id of the shill. |
| message | string | The text on the paper. |
| chain | string | solana or robinhood. |
| payer | string | Wallet address that paid. |
| tx_sig | string | Payment transaction signature. Credit-paid pins carry a synthetic api:… value instead, since their funds moved at top-up time. |
| slug | string | Short share id of the pin. |
| color | string | Paper color: white, black, lemon, lime, pink, sky, tangerine or lilac. |
| boosted | boolean | At least one promo channel was bought, so the pin wears the BOOSTED badge (on top of its color). |
| promo_x | boolean | X promotion was bought for this pin. |
| promo_telegram | boolean | Telegram promotion was bought for this pin. |
| promo_discord | boolean | Discord promotion was bought for this pin. |
| verified | boolean | We confirmed the payment on-chain. The rare unverified pins never reach our social channels. |
| amount_usd | number | What the pin cost, in USD. |
| created_at | string | ISO 8601 timestamp. |
| share_url | string | Direct link that opens this pin on the board. |
Pin a shill
Built for bots, cron jobs and buttons: deposit once with your wallet, get an API key, and every POST after that is a single instant call. The wallet only ever touches the deposit; it is never part of a request. Want to pin just one thing by hand? The board itself is the better tool for that.
1 · Deposit, grab your key
Connect the wallet you'll fund the account with. Your balance lives on that wallet: connect it any time to check it, refresh it, or deposit more, and every deposit from it lands on the same account. The key is shown exactly once (we store only a hash), so put it somewhere safe. Lost or leaked it? Sign with the funding wallet to regenerate; the old key stops working instantly, your balance carries over, and your wallet itself is never at risk.
Deposits from this wallet always land on its own account. Credits are spent on pins only and aren't refundable.
2 · Build your request
Live preview. This is how the wall will render it.
Total: $1, deducted from your credit balance.
curl -X POST "https://shiller.fun/api/v1/shills" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer shl_YOUR_API_KEY" \
-d '{
"message": "gm. pinned this from a terminal 📌"
}'Swap shl_YOUR_API_KEY for your key (deposit widget above) and fire away. No wallet, no waiting.
Request fields
| Field | Type | Description |
|---|---|---|
| Authorization | header · required | Bearer shl_… spends your prepaid credit. No wallet in the loop, instant response. |
| message | string · required | 1–200 characters. Anything legal, see the content rules. |
| color | string · optional | Paper color, default white. Any other color (black included) adds $1, charged whether or not the pin is boosted. |
| promoX | boolean · optional | +$1: we also post it on our X account. |
| promoTelegram | boolean · optional | +$1: we also post it on our Telegram channel. |
| promoDiscord | boolean · optional | +$1: we also post it on our Discord. |
Responses
{
"shill": {
"id": "9c1a7b42-58c3-4a11-8f0d-b1e6a2d94c55",
"message": "gm. pinned this from a terminal 📌",
"chain": "solana",
"payer": "2vEYYcLzC3EY3twRZFAmYCsLpFa2VDLBSPEeFD6efD6",
"tx_sig": "api:7c2f…",
"slug": "Xy7Qk2Ab",
"color": "white",
"boosted": false,
"promo_x": false,
"promo_telegram": false,
"promo_discord": false,
"verified": true,
"amount_usd": 1,
"created_at": "2026-07-17T12:35:10.000Z",
"share_url": "https://shiller.fun/?shill=Xy7Qk2Ab"
},
"share_url": "https://shiller.fun/?shill=Xy7Qk2Ab"
}| Field | Type | Description |
|---|---|---|
| 400 | invalid request | Bad JSON or message length out of range. |
| 401 | bad key | Missing, malformed or unknown API key. |
| 402 | insufficient credit | Balance below the pin's cost. The response carries balance_usd and needed_usd; deposit and retry. |
| 429 | slow down | Too many requests from your IP this minute. |
| 5xx | our side | Upstream trouble. Credit is never deducted without a pin appearing, so just retry. |
Building something on the wall? We'd genuinely love to see it, show us on X. 📌