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.

FormatExampleWhat opens
/https://basement.fun/The feed, on whichever match the app picks first
/a/ + arena idhttps://basement.fun/a/skyballThe feed, starting on that arena
/a/ + arena id + ?r= roundhttps://basement.fun/a/skyball?r=100That round. A round still running plays on its card. A finished one opens its replay.
/r/ + arena id + / roundhttps://basement.fun/r/skyball/100The 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

GameArena id
Rush Hourrush-hour
Clashclash
Neon Knockoutknockout
Broadsidebroadside
Skyballskyball
Turf Warturf-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.

Basement preview card reading Skyball, Round 100, Valk wins 3-2, with Valk's portrait and a crown
The card for /og/skyball/100.png, Skyball round 100 after it ended

You can fetch the card images directly, to post them from a bot or show them on your own page:

Image URLWhat it showsCached for
/og/skyball.pngWhichever Skyball round is taking picks when it's fetched30 seconds
/og/skyball/100.pngRound 100: the lineup while it's open, the winner and score once it's over30 seconds while open, a week once it's over
Either URL + ?f=3x2The same card cut to 1200x800, the shape Farcaster and the Base app useSame 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 toButton
An arena, or a round still runningPick 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.

Note

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.

Next steps

Read-only endpoints

Round numbers, results and the live socket.

Learn More
Share a clip or a link

What players see when they share.

Learn More
Ask a question... ⌘I