API reference
Explore public Trador market data, trading, account, and AI endpoints.
The Trador API provides market data, spot transaction preparation, wallet-authenticated conversations, and x402 data products. It publishes an OpenAPI document at /docs and an interactive explorer at /docs/ui.
The paths below are relative to the public API origin.
Response envelope
JSON endpoints use a consistent envelope:
{
"code": 0,
"message": "ok",
"data": {}
}Application failures preserve the HTTP status and return a non-zero application code:
{
"code": 3003,
"message": "No executable routing quote is available",
"data": null
}Clients should check both the HTTP status and the envelope code. Do not infer success only from the presence of a JSON body.
API contract
| Method | Route | Authentication | Purpose |
|---|---|---|---|
GET | /docs | None | OpenAPI 3 document |
GET | /docs/ui | None | Interactive Scalar explorer |
Trading
| Method | Route | Purpose |
|---|---|---|
GET | /trading/stocks | List Robinhood Stock Tokens with adjusted prices and Arcus tradability |
GET | /trading/stocks/{symbol} | Read one Robinhood Stock Token snapshot |
POST | /trading/swap/check-approval | Build the ERC-20 approval required by the router |
POST | /trading/swap/quote | Quote an aggregated spot swap |
POST | /trading/swap/submit | Submit a wallet-signed Arcus RFQ for settlement |
Symbols are normalized to uppercase. Swap sides are BUY or SELL, and the quote asset is USDG. Amounts are integer strings in token base units. Slippage tolerance is a percentage from 0.01 through 5.
Example quote request:
curl -X POST "$TRADOR_API_URL/trading/swap/quote" \
-H 'content-type: application/json' \
-d '{
"symbol": "TSLA",
"amount": "1000000",
"swapper": "0x0000000000000000000000000000000000000001",
"side": "BUY",
"quoteAsset": "USDG",
"slippageTolerance": 0.5
}'Arcus quotes are wallet-bound, so swapper must be a valid EVM address. Use the paid executable-price endpoint when a wallet-neutral venue comparison is needed.
Market data
| Method | Route | Purpose |
|---|---|---|
GET | /market-data/quotes | Current perpetual market snapshots |
GET | /market-data/{symbol}/candles?range=1D | Historical candles for a supported range |
GET | /market-data/{symbol}/news?limit=5 | Recent company news, from 1 to 10 items |
GET | /market-data/{symbol}/financials | Quarterly financials and summarized metrics |
Market snapshots include price, previous price, change, mark, oracle, funding, open interest, and 24-hour volume. Candle data includes OHLC, volume, trade count, interval, range, and current change.
News and financial data may be temporarily unavailable. Clients should handle standard 5xx responses and retry read-only requests conservatively.
Authentication and user
| Method | Route | Purpose |
|---|---|---|
GET | /auth/siwe/nonce | Issue a one-time nonce |
POST | /auth/siwe/message | Build an origin-bound EIP-4361 message |
POST | /auth/siwe/verify | Verify the signature and create a session |
GET | /auth/session | Read the current session, if any |
POST | /auth/logout | Clear the session |
GET | /user/me | Read the signed-in account |
Authenticated requests use the signed session cookie. Browser calls must include credentials.
AI conversations
All chat routes require a valid session.
| Method | Route | Purpose |
|---|---|---|
GET | /chat/conversations | List conversation summaries |
POST | /chat/conversations | Create an empty conversation |
GET | /chat/conversations/{conversationId} | Read a conversation with messages |
DELETE | /chat/conversations/{conversationId} | Delete a conversation owned by the user |
POST | /chat/conversations/{conversationId}/stream | Save a turn and stream the response |
Conversation identifiers are UUIDs. User messages are limited to 20,000 characters.
x402
GET /x402 publishes the paid-product catalog without requiring payment. Paid product routes under /x402/* use an x402 payment challenge. See x402 agent access.
