---
title: "Retrieve current orders on Smarkets, these include open and recently settled orders."
method: GET
path: "/v3/orders/"
tags: ["orders"]
---

# Retrieve current orders on Smarkets, these include open and recently settled orders.

`GET /v3/orders/`

## Query parameters

- `contract_id` string — This ID uniquely identifies the contract
- `created_datetime_max` string, date-time — When was the order created
- `created_datetime_min` string, date-time — When was the order created
- `id` string[] — Order IDs to filter by
- `limit` integer — Maximum number of orders to be retrieved in one API call
- `market_id` string[] — Market IDs to filter by
- `pagination_last_id` string — The last order id from the previous page, so we can fetch the subsequent orders.<br> It should be used in conjuntion with the sort parameter
- `sequence_number_max` integer — This refers to the sequence number in the account activity - statement endpoint
- `sequence_number_min` integer — This refers to the sequence number in the account activity - statement endpoint
- `state` string[] — Order states to filter by. By default all order states are returned
- `side` 'buy' | 'sell' — side can either be:<ul> <li>buy: backing a contract <li>sell: laying a contract </ul>
- `sort` 'id' | '-id' — How to sort the results, it should be used in conjuntion with the pagination parameter
- `include_promotion_data` boolean — Whether to enrich the response with bet token and promotion data.<br> Set to false to skip the promotion lookup when those fields are not needed, in which case they are returned empty

## Response `200`

Orders success response

- object — Orders success response
  - `orders` object[], required
    - `average_price_matched` integer, required — This price can be different from the order price, as it may have been matched at a better price for the user, according to best price execution rules
    - `average_price_matched_precise` string, required — This price is in percentage basis points with full precision (up to 6 decimal places).<br> Example: 5000 = 50%, 71.234567 = 0.71234567%<br> Use this field when deriving stake or returns from quantity to avoid rounding error, particularly after reduction factors are applied.
    - `best_price` object, nullable
      - `price` integer, required — This price is in percentage basis points.<br> Example: 5000 = 50% <br> To convert it to decimal odds, just divide 10000 by it<br> Example: 10000 / 5000 = 2.0 (decimal odds).<br> This price has to conform to a valid tick on the exchange; an invalid price error will be returned if it does not.
      - `source` string, required — Name of the best price source
    - `bonus_bet` boolean
    - `contract_id` string, required — This ID uniquely identifies the contract
    - `created_datetime` string, date-time, required — When was the order created
    - `id` string, required — This ID uniquely identifies an order
    - `label` string, nullable — Label is a user-defined string that will be stored in the order. It can be used to identify different trading strategies
    - `last_modified_datetime` string, date-time, required — When was the order last modified, usually by the exchange matching it
    - `market_id` string, required — This ID uniquely identifies the market
    - `original_order_id` string, nullable, required — This ID uniquely identifies an order
    - `otc_available` boolean
    - `outcome` 'winner' | 'loser' | 'deadheat' | 'reduce' | 'void', nullable — The outcome of the contract can be:<br> </ul> <li>winner: This contract is the winner or one of the winners of the market <li>loser: This contract is a loser <li>deadheat: There was a tie between this contract and another one. This is quite a rare outcome. <li>reduce: This contract was withdrawn from the market and a reduction factor was applied. <li>void: This contract is no longer allowed to be traded on. </ul>
    - `price` integer, required — This price is in percentage basis points.<br> Example: 5000 = 50% <br> To convert it to decimal odds, just divide 10000 by it<br> Example: 10000 / 5000 = 2.0 (decimal odds).<br> This price has to conform to a valid tick on the exchange; an invalid price error will be returned if it does not.
    - `quantity` integer, required — Quantity is the sum of the total pot (back+lay) in case the order is matched<br> The units are 1/100 of a UK penny.<br> Example: Quantity 500 = 0.05 GBP<br> To convert it to back stake, just multiply by the price and divide by 100000000<br> Example: 100000 (quantity) * 5000 (price) / 100000000 = 5 GBP back stake<br> The minimum stake is £0.05 or currency equivalent
    - `quantity_filled` integer, required — The quantity in GBP of the order that was matched
    - `quantity_filled_pending` integer, required — The quantity in GBP of the order that was matched and pending confirmation.<br> Bets will be subject to an eight second ‘Pending’ confirmation delay after being matched.<br> If no significant events occur in this period, the bet is confirmed.<br> If our scouting feed tells us that a material event (a goal, red card, or penalty) or a set-piece event (corner or dangerous free-kick) might have occurred, the Pending period is extended until we get confirmation either way.<br> If subsequent messages confirm that a material event has occurred, we void those bets matched in the preceding eight seconds.<br> This is to protect users from courtsiding and faster feeds.
    - `quantity_filled_pending_user_currency` integer, required — The quantity of the order that is matched, but pending confirmation, converted to the user's currency
    - `quantity_filled_user_currency` integer, required — The quantity of the order that is matched, converted to the user's currency
    - `quantity_traded_out_user_currency` integer, required — Quantity is the sum of the total pot (back+lay) in case the order is matched<br> The units are 1/10000 * one unit of the user's currency.<br> Example: Quantity 500 = 0.05 GBP<br> To convert it to back stake, just multiply by the price and divide by 100000000<br> Example: 100000 (quantity) * 5000 (price) / 100000000 = 5 GBP back stake<br> The minimum stake is £0.05 or currency equivalent
    - `quantity_unfilled` integer, required — The quantity in GBP of the order that is still unmatched
    - `quantity_unfilled_user_currency` integer, required — The quantity of the order that is unmatched, converted to the user's currency
    - `quantity_user_currency` integer, required — Quantity is the sum of the total pot (back+lay) in case the order is matched<br> The units are 1/10000 * one unit of the user's currency.<br> Example: Quantity 500 = 0.05 GBP<br> To convert it to back stake, just multiply by the price and divide by 100000000<br> Example: 100000 (quantity) * 5000 (price) / 100000000 = 5 GBP back stake<br> The minimum stake is £0.05 or currency equivalent
    - `sequence_number` integer, required — This refers to the sequence number in the account activity - statement endpoint
    - `side` 'buy' | 'sell', required — side can either be:<ul> <li>buy: backing a contract <li>sell: laying a contract </ul>
    - `stake_traded_out_user_currency` number, required — Stake of an order
    - `state` 'created' | 'partial' | 'filled' | 'settled', required — Order state can be one of four values: <ul> <li>created: The first state of the order after creation, this order is unmatched <li>partial: The order is partially matched <li>filled: The order is fully matched <li>settled: The order has settled, the final state of orders.
    - `token_used` object, required
      - `bet_token_type` 'free_bet' | 'boost_bet', nullable, required
      - `boost_percent` number, nullable, required
      - `original_price` integer, nullable — This price is in percentage basis points.<br> Example: 5000 = 50% <br> To convert it to decimal odds, just divide 10000 by it<br> Example: 10000 / 5000 = 2.0 (decimal odds).<br> This price has to conform to a valid tick on the exchange; an invalid price error will be returned if it does not.
    - `type` 'good_til_cancelled' | 'keep_in_play' | 'good_til_halted' | 'immediate_or_cancel' | 'over_the_counter' | 'over_the_counter_free' — Order types can have the following values: <ul> <li>good_til_cancelled: this order will be open until a reduction factor is applied or a market state changes to live, which will cancel the order. <li>keep_in_play: the same as good_til_cancelled, except it will not be cancelled on market state changes <li>good_til_halted: the same as good_til_cancelled, except a market <li>immediate_or_cancel: if the minimum_accepted_quantity is not matched at the time of order placement, this order will be cancelled. <li>over_the_counter: this order was matched right after being created. </ul> <p>The following table explains the lifetime of orders:</p> <table cellpadding="3" style="border: 1px solid white;"> <tr> <th>order_type</th> <th>Market Goes Live</th> <th>Market Halted</th> <th>Reduction Factor Applied</th> </tr> <tr> <td>good_til_cancelled</td> <td>Cancelled</td> <td>Cancelled</td> <td>Cancelled</td> </tr> <tr> <td>good_til_halted</td> <td>Kept</td> <td>Cancelled</td> <td>Cancelled</td> </tr> <tr> <td>keep_in_play</td> <td>Kept</td> <td>Kept</td> <td>Cancelled</td> </tr> </table><br> <p>Orders marked as immediate_or_cancel must be executed immediately and thus will not remain in the book.</p> <p>Same happens to orders marked as over_the_counter which are executed immediately.</p>
  - `otc_available` boolean
  - `pagination` object, required
    - `next_page` string, nullable, required — The url query string for clients to fetch the next page of orders

## Other responses

- `400` — REQUEST_VALIDATION_ERROR
- `401` — AUTH_REQUIRED
- `403` — FORBIDDEN
- `429` — Rate limit exceeded
- `500` — Internal server error
- `503` — ZEUS_UNAVAILABLE, PROMOTION_SERVICE_UNAVAILABLE, ZEUS_CONNECTION_ERROR
- `504` — ZEUS_TIMEOUT

---

[API](https://skmtc.dev/smarkets/apis/smarkets-http-api.md) · [All operations](https://skmtc.dev/smarkets/apis/smarkets-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smarkets/smarkets-http-api/revisions/75f7e3050340/schema)
