Prices at a time
The first update of each feed at or after publish_time. At most 100 distinct feeds, which
keeps the URL under the edge's length limit.
Path Parameters
Unix time in seconds.
0 <= value <= 4294967295Query Parameters
Feed IDs, repeated (ids[]=…&ids[]=…). ids is accepted too. The server accepts at most 500 per request, and 100 distinct feeds on historical routes. Send at most 200 IDs per request; longer URLs are rejected before they reach Astra. For more feeds, use several requests or subscribe over WebSocket, where IDs travel in the message body.
items <= 500The same as ids[], for clients that send the name without brackets. Both may be combined, and count together. Send at most 200 IDs per request; longer URLs are rejected before they reach Astra. For more feeds, use several requests or subscribe over WebSocket, where IDs travel in the message body.
Encoding named in binary.encoding on the v2 routes. The data array is always empty. Validated and ignored on the v1 routes.
"hex"Value in
- "hex"
- "base64"
Include the parsed prices on the v2 routes. Validated and ignored on the v1 routes.
trueDrop unknown IDs instead of answering 404, on the v2 routes. Validated and ignored on the v1 routes.
falseUpdate cadence of the SSE stream and the WebSocket. A fixed-rate channel sends a feed at most once per tick, only when it changed. fixed_rate@50ms is refused. Validated and ignored on the other routes.
"fixed_rate@1000ms"Value in
- "real_time"
- "fixed_rate@200ms"
- "fixed_rate@1000ms"
On the SSE stream, send only the first update of each second. Validated and ignored elsewhere.
falseInclude metadata, on the v1 routes. Validated and ignored on the v2 routes.
falseInclude vaa, which is always the empty string, on the v1 routes. Validated and ignored on the v2 routes.
falseOn the interval route, keep only the first update of each feed in each second. Validated and ignored elsewhere.
trueAccepted for Hermes compatibility. Updates are always ordered, so it changes nothing.
falseResponse Body
application/json
text/plain
text/plain
text/plain
text/plain
application/problem+json
curl -X GET "https://example.com/v2/updates/price/0?ids%5B%5D=string"{ "binary": { "encoding": "hex", "data": [] }, "parsed": [ { "id": "string", "price": { "price": "string", "conf": "string", "expo": 0, "publish_time": 0 }, "ema_price": { "price": "string", "conf": "string", "expo": 0, "publish_time": 0 }, "metadata": { "slot": 0, "proof_available_time": 0, "prev_publish_time": 0 } } ]}Stream prices (SSE) GET
Server-sent events. Each event carries one `PriceUpdate` for one feed as `data: {json}`. The last value of each feed is sent on connect. A `: keepalive` comment arrives every 30 seconds, and the stream closes after 24 hours: reconnect. Per feed, updates arrive in `publish_time` order and never repeat. Send at most 200 IDs per request; longer URLs are rejected before they reach Astra. For more feeds, open several streams or subscribe over WebSocket, where IDs travel in the message body.
Prices over an interval GET
Updates from `publish_time` to `publish_time + interval`, inclusive, one `PriceUpdate` per second, oldest first. `ema_price` equals `price` on historical routes. At most 100 distinct feeds, which keeps the URL under the edge's length limit.