Synpath
Buckets

Get an order on a bucket

What one order has filled, at what average, and on which venue.

GET/buckets/{bucket_id}/orders/{order_id}self-hosted · access token · view

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

NameTypeDescription
bucket_idstringThe bucket's id, or its market id bucket:<id>.
order_idstringThe 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)
200
{
  "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"
    }
  ]
}