Skip to main content
The API uses the same sign-in as the Arena. When you sign in, Supabase Auth issues a short-lived access token (a JWT). Send it as a Bearer token:

Which endpoints need a token

Get your token

1

Sign in to the Arena

Open arena.dualmindlab.tech and sign in.
2

Open the browser console

Press F12 (or ⌘ ⌥ J on a Mac) and choose Console.
3

Copy the token

Run this in the console. It copies the current access token to your clipboard:
Browser console
4

Keep it out of your code

Store it in an environment variable, not in source control:
.env / shell
Your access token acts as you: anyone holding it can start battles, vote and read your private threads until it expires. Keep it in an environment variable and never paste it into shared code, issues or chats.

Check that it works

A 200 with a list of models means you’re in. A 401 means the token is missing, malformed or expired.

Token lifetime

Access tokens are short-lived (typically about an hour). The Arena refreshes its own session automatically; for scripts, copy a fresh token when you get a 401.
Authentication failures return 401 with an empty body. The WWW-Authenticate response header says why, for example Bearer error="invalid_token", error_description="The token expired...".
Personal API keys for scripts and integrations are planned. See the roadmap.
Last modified on October 18, 2026