Trading 212 Orders API

**⚠️ Order Limitations** * Orders can be executed only in the **main account currency** Place, monitor, and cancel equity trade orders. This section provides the core functionality for programmatically executing your trading strategies for stocks and ETFs.

Operations 7

GET /api/v0/equity/orders Get all pending orders #
POST /api/v0/equity/orders/limit Place a Limit order #
POST /api/v0/equity/orders/market Place a Market order #
POST /api/v0/equity/orders/stop Place a Stop order #
POST /api/v0/equity/orders/stop_limit Place a StopLimit order #
DELETE /api/v0/equity/orders/{id} Cancel a pending order #
GET /api/v0/equity/orders/{id} Get a pending order by ID #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/trading212-orders-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

trading212-orders-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Welcome to the official API reference for the Trading 212 Public API!
  title: Trading 212 Public Orders API
  version: v0
servers:
- url: https://demo.trading212.com
- url: https://live.trading212.com
tags:
- description: '**⚠️ Order Limitations**


    * Orders can be executed only in the **main account currency**


    Place, monitor, and cancel equity trade orders. This section provides the

    core functionality for programmatically executing your trading strategies

    for stocks and ETFs.'
  name: Orders
paths:
  /api/v0/equity/orders:
    get:
      description: 'Retrieves a list of all orders that are currently active (i.e., not yet

        filled, cancelled, or expired). This is useful for monitoring the status

        of your open positions and managing your trading strategy.


        **Rate limit:** 1 req / 5s'
      operationId: orders
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Order'
                type: array
          description: OK
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:read ) missing for API key
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 1 / 5s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Get all pending orders
      tags:
      - Orders
  /api/v0/equity/orders/limit:
    post:
      description: 'Creates a new Limit order, which executes at a specified price or

        better.


        - To place a **buy** order, use a positive `quantity`. The order will

        fill at the `limitPrice` or lower.


        - To place a **sell** order, use a negative `quantity`. The order will

        fill at the `limitPrice` or higher.


        **Order Limitations**


        * Orders can be executed only in the **main account currency**


        **Important:** In this beta version, this endpoint is **not

        idempotent**. Sending the same request multiple times may result in

        duplicate orders.


        **Rate limit:** 1 req / 2s'
      operationId: placeLimitOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LimitRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: OK
        '400':
          description: Failed validation
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:execute ) missing for API key
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 1 / 2s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Place a Limit order
      tags:
      - Orders
  /api/v0/equity/orders/market:
    post:
      description: 'Creates a new Market order, which is an instruction to trade a security

        immediately at the next available price.


        - To place a **buy** order, use a positive `quantity`.


        - To place a **sell** order, use a negative `quantity`.


        - **`extendedHours`**: Set to `true` to allow the order to be filled

        outside of the standard trading session.


        - If placed when the market is closed, the order will be queued to

        execute when the market next opens.


        x

        **Order Limitations**


        * Orders can be executed only in the **main account currency**


        **Warning:** Market orders can be subject to price slippage, where the

        final execution price may differ from the price at the time of order

        placement.


        **Important:** In this beta version, this endpoint is **not

        idempotent**. Sending the same request multiple times may result in

        duplicate orders.


        **Rate limit:** 50 req / 1m0s'
      operationId: placeMarketOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MarketRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: OK
        '400':
          description: Failed validation
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:execute ) missing for API key
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 50 / 1m0s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Place a Market order
      tags:
      - Orders
  /api/v0/equity/orders/stop:
    post:
      description: 'Creates a new Stop order, which places a Market order once the

        `stopPrice` is reached.


        - To place a **buy** stop order, use a positive `quantity`.


        - To place a **sell** stop order (commonly a ''stop-loss''), use a

        negative `quantity`.


        - The `stopPrice` is triggered by the instrument''s **Last Traded Price

        (LTP)**.


        **Order Limitations**


        * Orders can be executed only in the **main account currency**


        **Important:** In this beta version, this endpoint is **not

        idempotent**. Sending the same request multiple times may result in

        duplicate orders.


        **Rate limit:** 1 req / 2s'
      operationId: placeStopOrder_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StopRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: OK
        '400':
          description: Failed validation
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:execute ) missing for API key
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 1 / 2s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Place a Stop order
      tags:
      - Orders
  /api/v0/equity/orders/stop_limit:
    post:
      description: 'Creates a new Stop-Limit order, combining features of a Stop and a Limit

        order. The direction of the trade (buy/sell) is determined by the sign

        of the `quantity` field.


        **Execution Logic:**


        1. When the instrument''s **Last Traded Price (LTP)** reaches the

        specified `stopPrice`, the order is triggered.


        2. A Limit order is then automatically placed at the specified

        `limitPrice`.


        This two-step process helps protect against price slippage that can

        occur with a standard Stop order.


        **Order Limitations**


        * Orders can be executed only in the **main account currency**


        **Important:** In this beta version, this endpoint is **not

        idempotent**. Sending the same request multiple times may result in

        duplicate orders.


        **Rate limit:** 1 req / 2s'
      operationId: placeStopOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StopLimitRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: OK
        '400':
          description: Failed validation
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:execute ) missing for API key
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 1 / 2s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Place a StopLimit order
      tags:
      - Orders
  /api/v0/equity/orders/{id}:
    delete:
      description: 'Attempts to cancel an active, unfilled order by its unique ID.

        Cancellation is not guaranteed if the order is already in the process of

        being filled. A successful response indicates the cancellation request

        was accepted.


        **Rate limit:** 50 req / 1m0s'
      operationId: cancelOrder
      parameters:
      - description: The unique identifier of the order you want to cancel.
        in: path
        name: id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          description: OK
        '400':
          description: Failed validation
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:execute ) missing for API key
        '404':
          description: Order not found
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 50 / 1m0s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Cancel a pending order
      tags:
      - Orders
    get:
      description: 'Retrieves a single pending order using its unique numerical ID. This is

        useful for checking the status of a specific order you have previously

        placed.


        **Rate limit:** 1 req / 1s'
      operationId: orderById
      parameters:
      - description: The unique identifier of the order you want to retrieve.
        in: path
        name: id
        required: true
        schema:
          format: int64
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
          description: Order found
        '401':
          description: Bad API key
        '403':
          description: Scope( orders:read ) missing for API key
        '404':
          description: Order not found
        '408':
          description: Timed-out
        '429':
          description: 'Limited: 1 / 1s'
      security:
      - authWithSecretKey: []
        legacyApiKeyHeader: []
      summary: Get a pending order by ID
      tags:
      - Orders
components:
  schemas:
    Instrument:
      description: Instrument information as given by /instruments endpoint.
      properties:
        currency:
          description: Instrument currency in ISO 4217 format.
          type: string
        isin:
          description: ISIN of the instrument.
          type: string
        name:
          description: Name of the instrument.
          type: string
        ticker:
          description: Unique instrument identifier.
          example: AAPL_US_EQ
          type: string
      type: object
    StopLimitRequest:
      properties:
        limitPrice:
          example: 100.23
          type: number
        quantity:
          example: 0.1
          type: number
        stopPrice:
          example: 100.23
          type: number
        ticker:
          example: AAPL_US_EQ
          type: string
        timeValidity:
          $ref: '#/components/schemas/TimeValidity'
          description: Expiration
          example: DAY
      type: object
    LimitRequest:
      properties:
        limitPrice:
          example: 100.23
          type: number
        quantity:
          example: 0.1
          type: number
        ticker:
          example: AAPL_US_EQ
          type: string
        timeValidity:
          $ref: '#/components/schemas/TimeValidity'
          description: Expiration
          example: DAY
      type: object
    Order:
      properties:
        createdAt:
          description: The ISO 8601 formatted date of when the order was created.
          format: date-time
          type: string
        currency:
          description: The currency used for the order in ISO 4217 format.
          type: string
        extendedHours:
          description: If true, the order is eligible for execution outside regular trading hours.
          type: boolean
        filledQuantity:
          description: The number of shares that have been successfully executed. Applicable to quantity orders.
          type: number
        filledValue:
          description: 'The total monetary value of the executed portion of the order. Applicable to orders placed by value.Note: Placing orders by value is not currently supported via the API but can be done through other Trading 212 platforms.'
          type: number
        id:
          description: A unique, system-generated identifier for the order.
          format: int64
          type: integer
        initiatedFrom:
          description: How the order was initiated.
          enum:
          - API
          - IOS
          - ANDROID
          - WEB
          - SYSTEM
          - AUTOINVEST
          - INSTRUMENT_AUTOINVEST
          type: string
        instrument:
          $ref: '#/components/schemas/Instrument'
        limitPrice:
          description: Applicable to LIMIT and STOP_LIMIT orders.
          type: number
        quantity:
          description: The total number of shares requested. Applicable to quantity orders.
          type: number
        side:
          description: Indicates whether the order is BUY or SELL.
          enum:
          - BUY
          - SELL
          type: string
        status:
          description: The current state of the order in its lifecycle.
          enum:
          - LOCAL
          - UNCONFIRMED
          - CONFIRMED
          - NEW
          - CANCELLING
          - CANCELLED
          - PARTIALLY_FILLED
          - FILLED
          - REJECTED
          - REPLACING
          - REPLACED
          type: string
        stopPrice:
          description: Applicable to STOP and STOP_LIMIT orders.
          type: number
        strategy:
          description: The strategy used to place the order, either by QUANTITY or VALUE. The API currently only supports placing orders by QUANTITY.
          enum:
          - QUANTITY
          - VALUE
          type: string
        ticker:
          description: Unique instrument identifier. Get from the /instruments endpoint
          example: AAPL_US_EQ
          type: string
        timeInForce:
          $ref: '#/components/schemas/TimeValidity'
        type:
          enum:
          - LIMIT
          - STOP
          - MARKET
          - STOP_LIMIT
          type: string
        value:
          description: The total monetary value of the order. Applicable to value orders.
          type: number
      type: object
    StopRequest:
      properties:
        quantity:
          example: 0.1
          type: number
        stopPrice:
          example: 100.23
          type: number
        ticker:
          example: AAPL_US_EQ
          type: string
        timeValidity:
          $ref: '#/components/schemas/TimeValidity'
          description: Expiration
          example: DAY
      type: object
    TimeValidity:
      description: "Specifies how long the order remains active: \n* DAY: The order will automatically expire if not executed by midnight in the time zone of the instrument's exchange.\n* GOOD_TILL_CANCEL: The order remains active indefinitely until it is either filled or explicitly cancelled by you."
      enum:
      - DAY
      - GOOD_TILL_CANCEL
      type: string
    MarketRequest:
      properties:
        extendedHours:
          default: false
          example: true
          type: boolean
        quantity:
          example: 0.1
          type: number
        ticker:
          example: AAPL_US_EQ
          type: string
      type: object
  securitySchemes:
    authWithSecretKey:
      description: Use your API Key as the username and your API Secret as the password
      scheme: basic
      type: http
    legacyApiKeyHeader:
      in: header
      name: Authorization
      type: apiKey