Skip to main content
GET /api/v1/prices returns what each venue’s price for a pair is right now, from prices TetraFi already holds. No venue is asked, so it is fast, and it does not count against the one-every-3-seconds quote limit. Use it to show prices, size a trade or decide which venues to ask, then request quotes when you want to trade. A price is never firm: every row carries firm: false, and no venue is bound to it. Whether a venue will be bound to its price is known only from a quote: ask POST /api/v1/quotes, and send filters.firmOnly: true to keep only firm quotes (Firm only). The cURL block below continues the Quickstart: first copy its request helper and pair variables from step 1. You can also run the complete, quote-only search-basics.sh script after setting the same credentials; it defines the helper and variables for you.

Query parameters

The filters mean what they mean in a quote request, and venues.include and venues.exclude take the same venue ids (Venue types and venues). A venue they exclude has no row. An API key needs the prices_read scope, which the Read quotes permission grants (Permissions).

The response

Rows are trimmed here. There is one row for each venue, location and variant pair. Rows are sorted like quotes, most received at the first size first, with rows that hold no price last.

Row status

Treat a status you do not recognise as “other”.

When to quote instead

Prices tell you what venues are showing. Request a quote when you want to trade:
  • only a quote has an id you can order;
  • a venue that publishes no price (priceSourceNone) answers only a quote request;
  • an executable quote holds its terms until expiresAt; a price holds nothing.

Caching and limits

  • Each response carries an ETag. Send it back in If-None-Match to get 304 Not Modified when nothing changed.
  • Prices have their own rate limit, separate from quotes: 429 PRICES_RATE_LIMIT with Retry-After in seconds.
  • GET /api/v1/prices/stream watches up to 25 pairs at once (pairs=USDC:ETH,USDC:EURC instead of sell and buy, the other parameters as above) and sends a pair’s snapshot as a snapshot server-sent event when it changes. Each caller may hold up to 4 streams at once; another is refused with 429 PRICES_STREAM_LIMIT.

Refusals

In the app

The Trade page reads these prices for the pair you choose and matches each live quote to its venue’s row.