Play free

Developers

Version 1 · JSON over HTTPS · OpenAPI document

Two APIs for your own tools, sites and agents. The game data API is public: facts about items, ships, modules, skills, recipes, regions and systems, the same content the Database shows. The Market API is part of the Vanguard Charter: read order books and place and cancel buy and sell orders for your own pilots, with the same fees and rules as in game.

Game data API

No sign-in needed. Answers are cached for 5 minutes, carry an ETag (send If-None-Match for a 304) and allow cross-site GET from any web page. Lists are paged: page from 1 and limit up to 500 (default 100); q matches words in the name or id.

MethodPathScopeWhat it does
GET/api/v1/datanoneThe collections, their counts and the data version
GET/api/v1/data/itemsnoneEvery public item (filter: category)
GET/api/v1/data/shipsnoneHulls with their stats and skill needs (filter: class)
GET/api/v1/data/modulesnoneModules (filters: slot, kind)
GET/api/v1/data/skillsnoneSkills (filter: group)
GET/api/v1/data/recipesnoneManufacturing recipes
GET/api/v1/data/regionsnoneRegions and their systems
GET/api/v1/data/systemsnoneStar systems and their gate links (filter: region)
GET/api/v1/data/{collection}/{id}noneOne entry
curl https://xetodus.com/api/v1/data/ships?class=skirmisher&limit=5

Galaxy-wide prices come from the market page's feed: GET /api/market (every public item) and GET /api/market/{item} (one item with daily history). Without a token the data API allows 60 requests a minute per address; with a token that has data:read, 600 a minute.

Market API

Get a token

In the game, open Account settings › API access (Vanguard members). Name the token, choose what it may do and which pilot (or all of them), pick how long it lasts (7, 30, 90, 365 days), confirm with your password (and your second factor if you use one) and copy the token. It is shown once. Up to 10 tokens can be active at a time.

ScopeAllows
market:readYour pilots, the station summary, order books and your open orders
market:tradePlacing and canceling orders
data:readThe game data API at the higher limit

A token can never sign in, change account settings, move credits between pilots, use contracts or do anything outside its scopes. It stops working when you revoke it, when it expires, when you change your password or two-step settings or sign out other devices, and when the Charter ends. Keep it secret and send it only in the Authorization header, never in a URL.

Endpoints

MethodPathScopeWhat it does
GET/api/v1/market/pilotsmarket:readYour pilots: where each is docked and its credits
GET/api/v1/market/summary?pilot=IDmarket:readBest bid and ask of every item at that pilot's station
GET/api/v1/market/book?pilot=ID&item=ITEMmarket:readOne item's order book at that station (100 levels a side)
GET/api/v1/market/orders?pilot=IDmarket:readThe pilot's open orders at every station
POST/api/v1/market/ordersmarket:tradePlace an order (needs an Idempotency-Key header)
DELETE/api/v1/market/orders/{id}market:tradeCancel one of your open orders

Money is always in centi-credits, whole numbers: 100 centi-credits are 1 credit. A token bound to one pilot may leave out pilot.

curl -H "Authorization: Bearer $XETODUS_TOKEN" https://xetodus.com/api/v1/market/pilots

curl -X POST https://xetodus.com/api/v1/market/orders \
  -H "Authorization: Bearer $XETODUS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: sell-ferrox-2026-10-29-001" \
  -d '{"pilot": 1234, "item": "ore_ferrox", "side": "sell", "quantity": 500, "priceCenti": 1250, "mode": "limit"}'

How orders work

  • Orders are placed at the station where the pilot is docked right now, from that station's hangar. A pilot in space can't trade, as in game.
  • limit: what doesn't fill at priceCenti or better rests on the book. market: fills now at priceCenti or better (the most a buy pays, the least a sell takes); the rest is not placed.
  • Broker fees, sales tax, escrow, order slots, hangar space, Vanguard-only items and every other market rule are the game's own: the API can't do anything you couldn't do in the Market window.
  • Send a fresh Idempotency-Key (8 to 64 letters, digits, . _ : -) with every new order. Sending the same key and body again returns the first answer and never trades twice; the same key with a different body is refused. A refused order frees its key.
  • Canceling returns a buy order's unspent credits or a sell order's unsold goods; fees already paid are not returned.
  • API trades earn no Trading XP, achievements or quest progress. Automated trading is allowed through the API for Vanguard members; automating the game client itself is not.

Limits

CallsPer token, a minutePer account, a minute
Market reads120240
Orders and cancels3060
Data6001200

Over a limit the answer is 429 with a Retry-After header. Too many failed token checks from one address lock it out for 15 minutes.

Errors

Every error is JSON: {"code": "not_docked", "error": "The pilot must be docked at a station to trade"}, with an x-request-id header to quote if you contact support.

StatusMeaning
400Invalid request: a missing or unknown field, a bad number, no Idempotency-Key
401Missing, unknown, expired or revoked token
403The token lacks the scope, the Charter ended, or the account can't trade right now
404No such pilot, order or entry for this token
409Not docked, or an Idempotency-Key conflict
422The game refused the order (not enough credits or goods, no free order slot)
429Rate limited
503API trading is paused for a moment

Scopes in this version: market:read, market:trade, data:read. Questions and ideas are welcome on the community Discord.