Links, preview cards and embeds
URL formats for arenas, rounds and replays, the 1200x630 preview card images, and how Basement links show up in Farcaster and the Base app.
Every arena, round and replay in Basement has a plain URL, and each one unfurls into a 1200x630 preview card wherever links get previews. Links are also the only way to embed Basement, since the app can't be shown in an iframe. This page lists the URL formats, the card images and what Farcaster and the Base app do with a link.
Link to an arena, a round or a replay
| Format | Example | What opens |
|---|---|---|
/ | https://basement.fun/ | The feed, on whichever match the app picks first |
/a/ + arena id | https://basement.fun/a/skyball | The feed, starting on that arena |
/a/ + arena id + ?r= round | https://basement.fun/a/skyball?r=100 | That round. A round still running plays on its card. A finished one opens its replay. |
/r/ + arena id + / round | https://basement.fun/r/skyball/100 | The replay of that round |
Round numbers count up from 1 in each arena. The current and next round numbers for every arena are in GET /api/arenas.
Links the app shares carry two more parameters. s is the sharer's code for that one round, and i is their invite code. Both belong to one player's account, so leave them off links you build. A link without them opens the same round.
Arena ids
| Game | Arena id |
|---|---|
| Rush Hour | rush-hour |
| Clash | clash |
| Neon Knockout | knockout |
| Broadside | broadside |
| Skyball | skyball |
| Turf War | turf-war |
Neon Knockout's id is knockout, in links, card URLs and the API alike.
Preview cards
Arena, round and replay pages carry og: and twitter: tags, so apps that preview links, like X, Discord and Slack, show a card when someone pastes one. Once a round is over, its card shows the winner with a crown and the score. While it's open, the card shows the lineup facing off.

You can fetch the card images directly, to post them from a bot or show them on your own page:
| Image URL | What it shows | Cached for |
|---|---|---|
/og/skyball.png | Whichever Skyball round is taking picks when it's fetched | 30 seconds |
/og/skyball/100.png | Round 100: the lineup while it's open, the winner and score once it's over | 30 seconds while open, a week once it's over |
Either URL + ?f=3x2 | The same card cut to 1200x800, the shape Farcaster and the Base app use | Same as above |
The arena card never shows a result, however late it's fetched, so it's safe for a "pick the next one" post. A round the server doesn't know answers 404. Card requests count toward the same read limit as the API, 300 per 10 seconds per network, so cache them on your side. A finished round's card never changes.
Farcaster and the Base app
Arena, round and replay pages also carry fc:miniapp and fc:frame embed tags. In a cast, the link shows the 3:2 card with one button:
| The link points to | Button |
|---|---|
| An arena, or a round still running | Pick the winner |
A finished round, through /a/ and ?r= | Pick the next one |
A finished round's replay, /r/ | Watch the replay |
In the Farcaster and Base mobile apps, the button opens Basement inside the app, on the link's round. There, Basement fits the host's safe areas and shares through the host's own composer. Farcaster's website shows mini apps in a frame, which Basement doesn't allow (see No iframes), so on the web the link is the way in.
Basement's mini app manifest isn't signed yet, so Basement isn't a verified or listed mini app. Links, cards and the button work today.
No iframes
Every page on production sends Content-Security-Policy: frame-ancestors 'none' and X-Frame-Options: DENY, so browsers refuse to load Basement in an iframe on any site, yours included. To show a match on your page, use the preview card image with a link to the round, or open Basement in a new tab. The link unfurls into a preview card wherever links get previews.