For the complete documentation index, see llms.txt. This page is also available as Markdown.

Reporting API

The builder dashboard (Settings → Builders → Builder Dashboard in the app) and these endpoints report your builder's attributed activity.

Authentication

Reporting endpoints use the fee account's API key. The builder is derived from the key, so don't pass builder_id.

Use a read-only API key for dashboards and accounting jobs. Read-only keys can call every reporting endpoint, including the CSV export, but can't trade, withdraw, transfer or change your builder.

Time windows

Pick one of:

  • period: 24h, 7d, 30d or 90d. Not available on /builder/fills.

  • start_time and end_time: Unix nanoseconds. A custom range can be up to 180 days.

All daily series are in UTC.

Units

  • volume, notional and fees are USDC strings.

  • For options, volume and notional are contracts × index price, the same basis as the fee.

  • Timestamps are Unix nanoseconds, as strings.

Pagination

/builder/users, /builder/fills and /builder/markets return count: the total number of rows in the window, as a string. Page with limit and offset:

  • limit: default 50, maximum 200.

  • offset: rows to skip.

  • Total pages = ceil(count / limit).

/builder/users and /builder/fills also support cursor pagination: pass the previous response's next_cursor as cursor. Use either cursor or offset, not both (BUILDER_CURSOR_WITH_OFFSET). Offset pages don't return next_cursor.

/builder/markets returns every market when neither limit nor offset is sent.

GET /builder/stats

Totals for the window, the previous window of the same length (for comparisons), a per-market summary and a daily series.

Fields: builder_id, name, fee_account, status, period, start_time, end_time, volume, fees, fills, unique_traders, active_traders, new_traders, returning_traders, maker_volume, taker_volume, previous (volume, fees, unique_traders, fills), markets[], series[] (timestamp, volume, fees).

  • New traders made their first-ever fill with your builder in this window.

  • Returning traders had filled with your builder before this window.

GET /builder/markets

Per-instrument totals, sorted by volume.

GET /builder/users

Traders who filled with your builder, sorted by volume.

Each user has account, volume, fees, fills, first_fill_timestamp and last_fill_timestamp.

GET /builder/fills

Individual attributed fills, newest first. Optional instrument filter (for example ETH-PERP).

Each fill has trade_id, order_id, account, instrument, side, price, amount, notional, builder_fee_rate, builder_fee, is_maker and timestamp.

CSV export

Add format=csv to /builder/fills. It takes the same start_time, end_time and instrument filters.

Columns:

One export is capped at 50,000 rows. A larger range returns CSV_RANGE_TOO_LARGE; split it into shorter windows.

GET /builder-config

The current protocol limits. Public, no authentication.

Field
Meaning

max_fee_rate_perps

Protocol cap on perpetual builder fees and on approval max_fee_rate: 0.0005 (5 bps).

max_fee_rate_options

Protocol cap on option builder fee rates: 0.0003 (3 bps of index notional).

option_premium_cap

Option builder fee cap, as a fraction of premium: 0.05 (5%).

min_create_balance

Minimum USDC balance to register a builder.

A null value means that feature is turned off. Builder orders or registration that depend on it are rejected.

Errors

Code
Meaning

BUILDER_NOT_FOUND

The API key's account is not a builder fee account.

BUILDER_INVALID_ID

builder_id was passed. Reporting derives the builder from the key.

BUILDER_CURSOR_WITH_OFFSET

Both cursor and offset were sent.

CSV_RANGE_TOO_LARGE

The export window has more than 50,000 fills.

Last updated

Was this helpful?