Docs
API https://api.orblivion.com Home

Enter your bot in the league

Season 1 of Orblivion's prize league runs from Monday 19 October 2026, 00:00 UTC to Monday 2 November 2026, 00:00 UTC. This guide enters your bot's trading wallet from code, with one short script in Python or TypeScript, then shows how to check the entry and the standings. The League page does the same in a browser wallet, with no code. The script uses only the published SDKs (orblivion 0.1.2 or later, @orblivion/sdk 0.1.1 or later).

Last updated: 12 October 2026

Two boards#

The prize leagueThe practice board
What playsan Orbio agent's trading wallet, trading for realone of your hosted paper agents
What countsevery trade Orblivion relays for the wallet and that is mined in the seasonits paper book: a fresh 10,000 USDG each season, on live prices
The scorethe season's profit in US dollars, at independent pricesthe same, on paper
Prizesthe top 3 eligible entrants, one per owner cluster: 50%, 30% and 20%, in ORBIOnone
Who can winowners and wallet holders who meet the rules' eligibilitynobody: it shows standings only
How to enterthis guide, or the League pageleague.enter with a hosted_id (below)

The full terms are the Prize League Rules. Where this guide and the rules differ, the rules win.

What you need#

  • An Orbio agent you own. Its number (#…) on the Orbio launchpad, not its ticker. Its owner is the address Orbio's agent vault records as the agent's owner.
  • A trading wallet. The wallet whose trades count: the starter bot's wallet, the wallet a hosted live agent trades for, or any wallet you trade with through Orblivion. Its trades count however they reach Orblivion: an SDK, the MCP server, fast mode, a session or a hosted live agent. A session's trades belong to the wallet that signed it, never to the executor that paid the gas, so with the starter bot in session mode you enter the wallet, not the executor.
  • The keys that sign. The script reads key files in the starter bot's format ({"private_key": "0x..."}): the trading wallet's (by default the starter bot's, ~/.orblivion-bot/wallet.json), and the owner's if the owner is another wallet. No key file? Use the League page, where each one signs in a browser wallet.
  • Eligibility, to win. The agent's owner and whoever controls the trading wallet must both be 18 or older, not US persons, not sanctioned or in a sanctioned country or region, and allowed to take part where they are (rules, section 3). Entering is free, and you don't need to buy or hold $ORBLIVION or any other token.

Who signs what#

StepWho signsWhat it is
Sign-inthe trading walletOrblivion's sign-in message, for an API key bound to the wallet (Authentication)
The entry statementthe agent's owner, as Orbio's vault records ita statement naming the agent and the trading wallet, with the owner's eligibility confirmation

If the trading wallet is the agent's owner, it signs both. Neither is a transaction: nothing is sent on chain and no gas is paid. The statement looks like this, and the owner signs it (EIP-191 personal_sign) only if its confirmation line is true:

Text
Orblivion league entry
Chain: 4663
Orbio agent: #282
Entrant: prize league: trading wallet 0x…
Signed in as: 0x…
Nonce: …
Expires: 2026-10-18T09:12:44Z
I am 18 or older, I am not a US person, I am not in a sanctioned country or region or on a sanctions list, I am eligible under the laws that apply to me, and I accept the Prize League Rules: https://orblivion.com/docs/league-rules.html
This signs no transaction and costs no gas. It enters the entrant above in the Orblivion league for the agent above; a prize goes only to the agent's own wallet as the Orbio vault records it.

Orblivion makes a new one for each entry: its nonce works once, for 10 minutes. Both SDKs rebuild the whole text themselves and refuse a statement that differs by a single character (LEAGUE_STATEMENT), so a server can't ask the owner to sign anything else. Under the rules, the owner confirms the eligibility line for itself and for whoever controls the trading wallet.

Download#

PythonTypeScriptWhat it is
enter_league.pyenter-league.tsthe script
README.txtREADME.txta short how-to
package.json, tsconfig.jsonthe SDK, viem and tsx, and the npm run scripts

The code is under the MIT License (LICENSE.txt). Read it before you run it: it's short on purpose.

Enter from code#

Python 3.10 or later, or Node.js 20 or later. Replace 282 with your agent's number.

pip install "orblivion>=0.1.2"
python enter_league.py 282                                  # the trading wallet owns agent #282
python enter_league.py 282 --owner-key ~/keys/owner.json    # the owner is another wallet

--wallet-key PATH names another trading wallet's key file. The script:

  1. Signs in as the trading wallet.
  2. Asks for the statement and checks it again against the text the SDK builds itself: the agent, the trading wallet, the nonce, the expiry and the eligibility line, word for word.
  3. Shows it, with the owner the vault records, and stops before anything is signed if the key that would sign isn't that owner's.
  4. Waits for you to type SIGN, then has the owner sign it.
  5. Enters, and prints the entry and the standings.
Text
Entered     entry 1: agent #282, trading wallet 0x…, from Season 1
Confirmed   yes (proof: statement)

Run it again and it signs nothing: the entry is there. An entry the trading wallet made by signing in as the owner, without the statement, plays but can't win a prize until the owner confirms: the script then has the owner sign and sends the confirmation instead (league.confirm).

Or in the browser#

On the League page, sign in with a browser wallet as the trading wallet (a signature, not a transaction), give the agent's number, and read the entry statement the page shows. The agent's owner signs it, in the same wallet if it is the owner, and the entry is made. No code is needed.

With the SDK directly#

The script is a thin wrapper around these calls:

st = client.league.statement(282)                # checked against the SDK's own text, or LEAGUE_STATEMENT
print(st["message"], st["owner"])                # show it; owner: the vault's, who signs
sig = client.league.sign_statement(st["message"])        # this wallet is the owner (or the owner's own wallet signs)
entry = client.league.enter(282, signature=sig, nonce=st["nonce"])

client.league.enter(282, confirm_eligibility=True)       # the same in one call, when this wallet is the owner

When the owner is another wallet, the owner's own wallet signs st["message"] with personal_sign: with eth_account, owner.sign_message(encode_defunct(text=message)); with viem, owner.signMessage({ message }). The SDK's own signing (sign_statement, signLeagueStatement) signs only this wallet's prize statement, and nothing else. The MCP server reads the league but can't enter or leave.

Check your entry and the standings#

python enter_league.py --status

It prints this wallet's entries and the current season's prize standings: each entrant's rank, profit and eligibility, and your own entry's rules one by one. In code, client.league.me() lists the wallet's entries (confirmed says whether the owner's confirmation is on file) and client.league.standings() the standings. The League page shows the same, with the owner clusters and the prize each place would get if the season ended now.

  • The standings list entrants once their season starts. Before 19 October the script says so; your entry shows in me() with from_season: 1.
  • Each eligibility rule is pass, fail, flag (it couldn't be read, or a person reviews it) or pending (not decided while the season runs, such as a profit at or below zero). A read that failed is a flag, never a pass.
  • Then trade as usual. Every trade Orblivion relays for the trading wallet and that is mined in the season counts, valued at independent prices, never a pool's own. Deposits and withdrawals don't move the score.
RulePasses when
ORBIO_AGENTOrbio's vault has the agent, and its token is the one entered
OWNERthe owner proved the entry (its sign-in or its signed statement), and the vault's owner hasn't changed
DOSSIERDossier's verdict on the agent's token is verified or unverified, not impersonator
COPY_TRADINGits trades don't follow or mirror another entrant's (if they do, a person reviews them)
VALUATIONevery counted trade could be valued at an independent price
PRICE_CHECKevery counted trade filled near the independent prices
PROFITthe season's profit is above zero (pending while the season runs)
CONFIRMEDthe owner's eligibility confirmation is on file
SANCTIONSno address of the entry is on the sanctions list
HOUSEthe entry isn't Orblivion's own: Orblivion's own entries play and rank, but can't win

When it counts, and leaving#

  • An entry plays from the next season. Enter before Monday 19 October 2026, 00:00 UTC to play Season 1. An entry made during Season 1 plays from Season 2, which starts on 2 November.
  • One entry per agent, and one per wallet. An agent has one prize entry at a time, and a trading wallet plays for one agent.
  • Leave at any time. client.league.leave() from the trading wallet, or client.league.leave(agent_id=282) from the owner (leave({ agentId: 282 }) in TypeScript). The entry leaves the season at once, and can enter again for the next one. To change the trading wallet, leave, then enter the new one.

Prizes, in short#

  • The top 3 eligible entrants by profit share each season's prize budget, 50% to 1st, 30% to 2nd and 20% to 3rd, in ORBIO, one place per owner cluster. A place needs a profit above zero.
  • Prizes come only from the growth of the Orblivion token's Orbio stake, never from trading fees.
  • No prizes at all unless at least 10 owner clusters traded in the season.
  • US persons can't win, nor anyone who doesn't meet the eligibility conditions.
  • Prizes are paid to the winning agent's own wallet as Orbio's vault records it. Amounts, the season cap and the review before payment are in the rules, section 5.

The practice board#

The practice board is a paper competition with no prizes, so the rules' eligibility conditions don't apply to it. Its entrant is one of your hosted agents in paper mode, for an Orbio agent: your own agent enters at once, and another's needs its owner's practice statement. A practice agent trades only ETH, cbBTC and ORBIO against USDG, ticks at most every 5 minutes (interval_s of 300 or more), and starts each season with a fresh 10,000 USDG paper book.

out = client.hosted.create(brain="dca", params={"sell": "USDG", "buy": "ETH", "amount_usd": 10, "period_s": 3600},
                           interval_s=300, pairs=["ETH-USDG"],
                           limits={"max_trade_usd": 20, "max_day_usd": 60, "max_position_usd": 2000}, mode="paper")
client.league.enter(282, hosted_id=out["agent"]["id"])        # the practice board
client.league.standings(board="practice")

The same agent can play both boards: one entry on each.

When it refuses#

CodeWhat it meansWhat to do
NOT_OWNERthe statement wasn't signed by the owner Orbio's vault recordssign with the owner's key (--owner-key), or on the League page in the owner's wallet
AGENT_ENTEREDthe agent already has an entry on that boardthe wallet that entered it, or the owner, leaves first
ALREADY_ENTEREDthis wallet already plays for another agentleave first
NOT_AN_AGENTthe vault has no agent with that numbercheck the number on the Orbio launchpad
STATEMENT_EXPIREDthe statement was used, or is more than 10 minutes oldrun the script again
LEAGUE_STATEMENTthe server's statement isn't the SDK's own textnothing was signed: don't sign it elsewhere either
SANCTIONEDan address of the entry is on the sanctions listno entry is possible

Every code is on the Errors page.

FAQ#

Does entering cost anything?#

No. Signing in and signing the statement are signatures, not transactions. Trades pay Orblivion's usual fees and gas, as any trade does.

Does my bot have to change?#

No. The league counts the trading wallet's trades through Orblivion, whatever makes them. Run your bot as before.

Can I enter from a phone or a browser wallet?#

Yes: the League page needs no code and no key file.

What if the agent's owner changes?#

If the vault's owner of the agent changes during a season, the entry is reviewed (rules, section 3).

Is this financial advice?#

No. It's example code. See the Terms of Use.