Get an order on a bucket
What one order has filled, at what average, and on which venue.
Self-hosted. Served by synpath serve on your own machine or host, which must be running; the engine and its order types live there. Nothing on this page runs on Synpath's servers.
Every price is in bucket terms. average_price is weighted across venues; per_venue splits the same fills by venue. Filled amounts come from each venue's own order status, so they match what the venue reports.
stop_reason says why a finished order stopped short of its size: worst_price (nothing left at or better than your worst price), liquidity, min_amount (what is left is under every venue's minimum), max_rounds or max_age. It is null while the order works and once it fills.
detail gives the reason in words when the order was rejected or stopped, such as the venue's refusal of a leg for insufficient balance; null otherwise.
Path parameters
| Name | Type | Description |
|---|---|---|
bucket_id | string | The bucket's id, or its market id bucket:<id>. |
order_id | string | The id the order was placed with. |
Response
The order report. 404 if the order is not on this bucket.
from synpath import Client
client = Client(server="http://127.0.0.1:8000") # your self-hosted server (synpath serve)
report = await client.fetch_bucket_order("<bucket_id>", "<order_id>")
for venue in report.per_venue:
print(venue.venue, venue.filled, venue.average_price){
"order_id": "5d0e9b2c4f7a4e1d9c3b8a6f2e1d0c9b",
"bucket_id": "3f2a9c1e5b7d4e0a8c6f1b2d9e4a7c30",
"status": "open",
"side": "buy",
"amount": "200",
"worst_price": "0.42",
"filled": "120",
"unfilled": "80",
"average_price": "0.4117",
"fees_paid": "1.84",
"rounds": 2,
"stop_reason": null,
"detail": null,
"per_venue": [
{
"venue": "kalshi",
"filled": "70",
"average_price": "0.41"
},
{
"venue": "polymarket",
"filled": "50",
"average_price": "0.414"
}
]
}
