{
  "openapi": "3.1.0",
  "info": {
    "title": "TradeLocker API (independent, unofficial description by Broker API Hub)",
    "version": "2026-10-12",
    "description": "An independent, unofficial description of the TradeLocker API, built by Broker API Hub from TradeLocker API's public documentation. It is not TradeLocker API's own specification, and Broker API Hub is not affiliated with or endorsed by TradeLocker API.\n\nIt is generated from 23 endpoint records. Every operation carries x-source, the page it was read on, and x-checked, the date that page was last checked. No operation here is recorded as conflicting or unverified. An operation this file does not list is not recorded here, which is not evidence that it does not exist.\n\nSecurity schemes are only the authentication headers the endpoint records list. How a credential is obtained and how long it lasts is on https://openbrokerapi.com/platforms/tradelocker.\n\nResponse schemas: none is recorded.\n\n7 operations carry a mock reply as an example under the default response. Its values are invented.\n\nWhere this file and TradeLocker API's own documentation differ, the documentation wins. Educational only. Nothing here is advice.",
    "x-independent": true,
    "x-licence": "All rights reserved. Given for reference. Not part of the CC BY 4.0 downloads.",
    "x-cite": "Broker API Hub, TradeLocker API OpenAPI description, openbrokerapi.com/specs/tradelocker.json, newest check 2026-10-12",
    "x-generated": "2026-10-12",
    "x-generated-basis": "The newest checked date among the endpoint records in this file. It is not the date the file was built.",
    "x-page": "https://openbrokerapi.com/platforms/tradelocker",
    "x-base-addresses": {
      "live": "https://live.tradelocker.com/backend-api/",
      "demo": "https://demo.tradelocker.com/backend-api/"
    },
    "x-base-addresses-note": "The base addresses exactly as the platform record words them. Only an entry that is a plain address is listed under servers. A platform API is hosted for each broker or firm that offers it, so where the record holds no plain address the base address is the one your own broker gives you."
  },
  "externalDocs": {
    "description": "TradeLocker API's own documentation",
    "url": "https://public-api.tradelocker.com/"
  },
  "servers": [
    {
      "url": "https://demo.tradelocker.com/backend-api",
      "description": "Recorded on the TradeLocker API record as \"demo\"."
    },
    {
      "url": "https://live.tradelocker.com/backend-api",
      "description": "Recorded on the TradeLocker API record as \"live\"."
    }
  ],
  "tags": [
    {
      "name": "Account"
    },
    {
      "name": "Auth"
    },
    {
      "name": "Config"
    },
    {
      "name": "Instruments and Sessions"
    },
    {
      "name": "Market data"
    },
    {
      "name": "Trading"
    }
  ],
  "paths": {
    "/auth/jwt/all-accounts": {
      "get": {
        "operationId": "get-auth-jwt-all-accounts",
        "summary": "List every account under the login, each with its id and the accNum that the /trade calls need as a header.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. This call takes no accNum header: it is the call that returns it. The balance field is spelled aaccountBalance in the definition, with a doubled a, and the mock reply keeps that spelling. Its values are invented.",
        "tags": [
          "Auth"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getallaccounts"
        },
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "accounts": [
                    {
                      "id": "0000",
                      "name": "MOCK#ACCOUNT#1",
                      "currency": "USD",
                      "status": "ACTIVE",
                      "accNum": "1",
                      "aaccountBalance": 10000
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getallaccounts",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-auth-jwt-all-accounts"
      }
    },
    "/auth/jwt/refresh": {
      "post": {
        "operationId": "post-auth-jwt-refresh",
        "summary": "Exchange a refresh token for a new access token and a new refresh token, without sending the password again.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The definition lists no security requirement for this call. The documented success status is 201, with the same three fields as the login reply. The mock reply uses those field names with invented values.",
        "tags": [
          "Auth"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getjwtrefreshtokens"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "refreshToken": {
                    "type": "string",
                    "description": "The refreshToken from the last login or refresh. Read it from your own environment."
                  }
                },
                "required": [
                  "refreshToken"
                ]
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "accessToken": "MOCK_ACCESS_TOKEN",
                  "refreshToken": "MOCK_REFRESH_TOKEN",
                  "expireDate": "2026-01-01T00:00:00.000Z"
                }
              }
            }
          }
        },
        "x-source": "https://public-api.tradelocker.com/reference/getjwtrefreshtokens",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-refresh"
      }
    },
    "/auth/jwt/token": {
      "post": {
        "operationId": "post-auth-jwt-token",
        "summary": "Log in with an email, a password and a server name and receive an access token and a refresh token.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The definition lists no security requirement for this call. The documented success status is 201, with accessToken, refreshToken and expireDate all marked required in the reply, and expireDate described as the expiry of the access token. The mock reply uses those field names with invented values.",
        "tags": [
          "Auth"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getjwttokens"
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "The TradeLocker user's email. Read it from your own environment."
                  },
                  "password": {
                    "type": "string",
                    "description": "The TradeLocker user's password. Read it from your own environment. Never type it into this site."
                  },
                  "server": {
                    "type": "string",
                    "description": "The name of the broker server, the same one used when logging in to TradeLocker on the web."
                  }
                },
                "required": [
                  "email",
                  "password",
                  "server"
                ]
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "accessToken": "MOCK_ACCESS_TOKEN",
                  "refreshToken": "MOCK_REFRESH_TOKEN",
                  "expireDate": "2026-01-01T00:00:00.000Z"
                }
              }
            }
          }
        },
        "x-source": "https://public-api.tradelocker.com/reference/getjwttokens",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/post-auth-jwt-token"
      }
    },
    "/trade/accounts": {
      "get": {
        "operationId": "get-trade-accounts",
        "summary": "Read the details of the account selected by the accNum header: its name, currency, status, type, risk rules and trading rules.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply is a list d whose entries carry id and name (both marked required), currency, status, type (demo or live), riskRules and tradingRules. Documented status values: ACTIVE, CLOSED, FINRA_DAY_TRADER_PATTERN, LIQUIDATION_ONLY, SUSPENDED and TRADE_OFF. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getaccounts"
        },
        "parameters": [
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getaccounts",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-accounts"
      }
    },
    "/trade/accounts/{accountId}/instruments": {
      "get": {
        "operationId": "get-account-instruments",
        "summary": "List the instruments the account can trade, each with its tradableInstrumentId and the routes used for quotes and for trading.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. Each entry of d.instruments carries id, name, tradableInstrumentId, type, marketDataExchange and tradingExchange (all marked required) and a routes list among other fields. Documented type values: CRYPTO, EQUITY, EQUITY_CFD, ETF, FOREX, FUTURES, FUTURES_CFD, INDICES, OPTIONS and SPREADBET. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getinstruments"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language for the localised instrument name. One of: ar, en, es, fr, ja, ko, pl, pt, ru, tr, ua, zh_sm, zh_tr.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getinstruments",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-instruments"
      }
    },
    "/trade/accounts/{accountId}/orders": {
      "delete": {
        "operationId": "delete-account-orders",
        "summary": "Cancel every pending order on the account, or only those in one instrument.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. Documented success statuses are 200, with a status s of ok, and 204. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/cancelallorders"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": false,
            "description": "Cancel only the orders in this instrument.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/cancelallorders",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-orders"
      },
      "get": {
        "operationId": "get-account-orders",
        "summary": "List the account's orders that are not yet final: those neither filled, cancelled nor rejected.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply holds each row as a list of values with no field names. The names of the columns are served by GET /trade/config, in its ordersConfig part. The rows are in d.orders. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getorders"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start of the interval, as a Unix timestamp in milliseconds, UTC. Without it every non-final order is returned.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End of the interval, as a Unix timestamp in milliseconds, UTC. Without it every non-final order is returned.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": false,
            "description": "Return only orders in this instrument.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getorders",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders"
      },
      "post": {
        "operationId": "post-account-orders",
        "summary": "Place a market, limit or stop order on the account, with an optional stop loss and take profit. The reply carries the new orderId.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. An accepted order is not a fill: TradeLocker's page on order and position identifiers says a position with its own positionId exists only once the order fills. The mock reply uses the field names of the definition with invented values.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/placeorder"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "qty": {
                    "type": "number",
                    "description": "Order size, as the number of units to buy or sell."
                  },
                  "routeId": {
                    "type": "number",
                    "description": "The route identifier of the instrument. TradeLocker's getting started page says to use the TRADE route when placing orders."
                  },
                  "side": {
                    "type": "string",
                    "description": "One of: buy, sell. An order that closes a position takes the side opposite to the position."
                  },
                  "tradableInstrumentId": {
                    "type": "integer",
                    "description": "The identifier of the instrument, as tradableInstrumentId in the list of instruments."
                  },
                  "type": {
                    "type": "string",
                    "description": "One of: limit, market, stop. A limit order needs price and a stop order needs stopPrice."
                  },
                  "validity": {
                    "type": "string",
                    "description": "One of: GTC, IOC. The page says IOC for a market order and GTC for a limit or stop order."
                  },
                  "price": {
                    "type": "number",
                    "description": "The limit price of a limit order. The page says it can be 0 for a market order."
                  },
                  "stopPrice": {
                    "type": "number",
                    "description": "The stop price. Needed when type is stop."
                  },
                  "stopLoss": {
                    "type": "number",
                    "description": "The stop loss, read according to stopLossType."
                  },
                  "stopLossType": {
                    "type": "string",
                    "description": "One of: absolute, offset, trailingOffset."
                  },
                  "takeProfit": {
                    "type": "number",
                    "description": "The take profit, an absolute price or an offset in pips according to takeProfitType. Sent together with takeProfitType."
                  },
                  "takeProfitType": {
                    "type": "string",
                    "description": "One of: absolute, offset. Sent together with takeProfit."
                  },
                  "trStopOffset": {
                    "type": "number",
                    "description": "The trailing offset in pips, for the trailingOffset stop loss type."
                  },
                  "strategyId": {
                    "type": "string",
                    "description": "A label of up to 31 characters attached to the order, shown again in the lists of orders and positions."
                  }
                },
                "required": [
                  "qty",
                  "routeId",
                  "side",
                  "tradableInstrumentId",
                  "type",
                  "validity"
                ]
              }
            }
          }
        },
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "d": {
                    "orderId": "1"
                  },
                  "s": "ok"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/placeorder",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/post-account-orders"
      }
    },
    "/trade/accounts/{accountId}/ordersHistory": {
      "get": {
        "operationId": "get-account-orders-history",
        "summary": "List the account's orders that reached a final status: filled, cancelled or rejected.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply holds each row as a list of values with no field names. The names of the columns are served by GET /trade/config, in its ordersHistoryConfig part. The rows are in d.ordersHistory, beside a boolean hasMore that is true when the chosen interval holds more rows than were returned. TradeLocker's getting started page says the most rows one request returns is a limit read from GET /trade/config. Its page on order and position identifiers says this is the call that matches an orderId to the positionId it opened. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getordershistory"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start of the interval, as a Unix timestamp in milliseconds, UTC. Without it every final order is returned.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End of the interval, as a Unix timestamp in milliseconds, UTC. Without it every final order is returned.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": false,
            "description": "Return only orders in this instrument.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getordershistory",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-orders-history"
      }
    },
    "/trade/accounts/{accountId}/positions": {
      "delete": {
        "operationId": "delete-account-positions",
        "summary": "Place closing orders for every open position on the account, or only those in one instrument. The page says closure is not guaranteed and may not be immediate.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. The page says the platform first tries an immediate or cancel closing order and then a good till cancelled one, so execution can be delayed. The reply has a positions list inside d. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/closeallpositions"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": false,
            "description": "Close only the positions in this instrument.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "strategyId",
            "in": "query",
            "required": false,
            "description": "A strategy label. The reference gives it no further description.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/closeallpositions",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-account-positions"
      },
      "get": {
        "operationId": "get-account-positions",
        "summary": "List every position currently open on the account.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply holds each row as a list of values with no field names. The names of the columns are served by GET /trade/config, in its positionsConfig part. The rows are in d.positions. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getpositions"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getpositions",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-positions"
      }
    },
    "/trade/accounts/{accountId}/state": {
      "get": {
        "operationId": "get-account-state",
        "summary": "Read the current state of one account, such as its balance, available funds and profit and loss.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply holds the values as one list, d.accountDetailsData, with no field names. The names of the values are served by GET /trade/config, in its accountDetailsConfig part. No mock reply is recorded.",
        "tags": [
          "Account"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getstate"
        },
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "The account's identifier, the id that GET /auth/jwt/all-accounts returns for it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getstate",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-account-state"
      }
    },
    "/trade/config": {
      "get": {
        "operationId": "get-trade-config",
        "summary": "Read the configuration for the account: the column names of the positions, orders and account tables, the rate limit of each route and the row limits.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply is an object d with customerAccess, accountDetailsConfig, positionsConfig, ordersConfig, ordersHistoryConfig, filledOrdersConfig, rateLimits and limits. Each config part has an id, a title and a list of columns. Each rateLimits entry has rateLimitType, measure (SECONDS or MINUTES), intervalNum and limit. TradeLocker's getting started page says the rate limit of every route is read here and that the documentation gives no fixed figure. No mock reply is recorded.",
        "tags": [
          "Config"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getconfigusingget"
        },
        "parameters": [
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getconfigusingget",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-config"
      }
    },
    "/trade/dailyBar": {
      "get": {
        "operationId": "get-daily-bar",
        "summary": "Read the current daily bar of one instrument: open, high, low, close and volume.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The mock reply uses the field names of the definition (o, h, l, c and v inside d, and the status s) with invented values.",
        "tags": [
          "Market data"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getdailybar"
        },
        "parameters": [
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "required": true,
            "description": "The route identifier of the instrument. TradeLocker's getting started page says to use the INFO route for quote calls. Both routes are listed for each instrument by GET /trade/accounts/{accountId}/instruments.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "barType",
            "in": "query",
            "required": true,
            "description": "Which prices the bar is built from. One of: ASK, BID, TRADE.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": true,
            "description": "The identifier of the instrument, as tradableInstrumentId in the list of instruments.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "d": {
                    "o": 1.1,
                    "h": 1.2,
                    "l": 1,
                    "c": 1.15,
                    "v": 1000
                  },
                  "s": "ok"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getdailybar",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-daily-bar"
      }
    },
    "/trade/history": {
      "get": {
        "operationId": "get-history",
        "summary": "Download historical bars for one instrument between two times, at a resolution from one minute to one month.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The page says a request that would return more than 20,000 bars is rejected, that a daily bar is timed at 00:00 UTC, and that a range with no data is answered with the status no_data. The mock reply uses the field names of the definition with invented values.",
        "tags": [
          "Market data"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/gethistory"
        },
        "parameters": [
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "required": true,
            "description": "The route identifier of the instrument. TradeLocker's getting started page says to use the INFO route for quote calls. Both routes are listed for each instrument by GET /trade/accounts/{accountId}/instruments.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": true,
            "description": "Time of the earliest bar wanted, inclusive, as a Unix timestamp in milliseconds, UTC.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "resolution",
            "in": "query",
            "required": true,
            "description": "Bar size. One of: 1M, 1W, 1D, 4H, 1H, 30m, 15m, 5m, 1m.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "description": "Time of the latest bar wanted, inclusive, as a Unix timestamp in milliseconds, UTC. A time in the future returns up to the newest bar held.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": true,
            "description": "The identifier of the instrument, as tradableInstrumentId in the list of instruments.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "d": {
                    "barDetails": [
                      {
                        "t": 1767225600000,
                        "o": 1.1,
                        "h": 1.2,
                        "l": 1,
                        "c": 1.15,
                        "v": 1000
                      }
                    ]
                  },
                  "s": "ok"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/gethistory",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-history"
      }
    },
    "/trade/instruments/{tradableInstrumentId}": {
      "get": {
        "operationId": "get-instrument-details",
        "summary": "Read the dealing details of one instrument, such as lot size and step, smallest and largest lot, tick size, quoting currency and trade session.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply object d marks name, type, quotingCurrency, symbolStatus, marketDataExchange and tradingExchange as required and also lists lotSize, lotStep, minLot, maxLot, leverage, tickSize, tickCost, tradeSessionId and tradeSessionStatusId among other fields. Documented symbolStatus values: CLOSED, FULLY_OPEN and TRADING_HALT. No mock reply is recorded.",
        "tags": [
          "Instruments and Sessions"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getinstrumentdetails"
        },
        "parameters": [
          {
            "name": "tradableInstrumentId",
            "in": "path",
            "required": true,
            "description": "The identifier of the instrument, as tradableInstrumentId in the list of instruments.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "required": true,
            "description": "The route identifier of the instrument. TradeLocker's getting started page says to use the TRADE route for this call.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Language for the localised instrument name. One of: ar, en, es, fr, ja, ko, pl, pt, ru, tr, ua, zh_sm, zh_tr.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getinstrumentdetails",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-instrument-details"
      }
    },
    "/trade/orders/{orderId}": {
      "delete": {
        "operationId": "delete-order",
        "summary": "Cancel one pending order. It works only before the order has been executed.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. Documented success statuses are 200, with a status s of ok, and 204. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/cancelorder"
        },
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "The identifier of the order, as returned when it was placed.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/cancelorder",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-order"
      },
      "patch": {
        "operationId": "patch-order",
        "summary": "Change a pending order: its price, size, validity, stop loss or take profit.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. The definition requires a request body and marks none of its fields as required. The page refers to the order placing call for what each field means, and the descriptions here follow that call. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/modifyorder"
        },
        "parameters": [
          {
            "name": "orderId",
            "in": "path",
            "required": true,
            "description": "The identifier of the order to change.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "price": {
                    "type": "number",
                    "description": "New limit price."
                  },
                  "qty": {
                    "type": "number",
                    "description": "New order size."
                  },
                  "stopPrice": {
                    "type": "number",
                    "description": "New stop price."
                  },
                  "validity": {
                    "type": "string",
                    "description": "One of: GTC, IOC."
                  },
                  "stopLoss": {
                    "type": "number",
                    "description": "New stop loss, read according to stopLossType."
                  },
                  "stopLossType": {
                    "type": "string",
                    "description": "One of: absolute, offset, trailingOffset."
                  },
                  "takeProfit": {
                    "type": "number",
                    "description": "New take profit, read according to takeProfitType."
                  },
                  "takeProfitType": {
                    "type": "string",
                    "description": "One of: absolute, offset."
                  },
                  "trStopOffset": {
                    "type": "number",
                    "description": "New trailing offset."
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/modifyorder",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-order"
      }
    },
    "/trade/positions/{positionId}": {
      "delete": {
        "operationId": "delete-position",
        "summary": "Place an order that closes one open position, in full or in part. The page says closure is not guaranteed and may not be immediate.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. The definition requires a request body and does not mark qty as required. The page says the platform first tries an immediate or cancel closing order and then a good till cancelled one, and that the positionId for a known orderId can be found through the orders history call. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/closeposition"
        },
        "parameters": [
          {
            "name": "positionId",
            "in": "path",
            "required": true,
            "description": "The identifier of the position. It is not the orderId of the order that opened it.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "strategyId",
            "in": "query",
            "required": false,
            "description": "A strategy label. The reference gives it no further description.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "qty": {
                    "type": "number",
                    "description": "How many lots to close. The page says 0 closes the whole position.",
                    "x-required-unmarked": true
                  }
                },
                "x-required-unmarked": [
                  "qty"
                ]
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/closeposition",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/delete-position"
      },
      "patch": {
        "operationId": "patch-position",
        "summary": "Change the stop loss, the take profit or both on an open position. Sending null for one removes it.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reference names the optional header developer-api-key, while TradeLocker's getting started page calls the Developer Program key tl-developer-api-key and says it unlocks less restrictive rate limits. This record keeps the name on the reference page. The definition requires a request body and marks none of its fields as required. No mock reply is recorded.",
        "tags": [
          "Trading"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/modifyposition"
        },
        "parameters": [
          {
            "name": "positionId",
            "in": "path",
            "required": true,
            "description": "The identifier of the position to change.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "strategyId",
            "in": "query",
            "required": false,
            "description": "A strategy label. The reference gives it no further description.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "stopLoss": {
                    "type": "number",
                    "description": "New stop loss. The page says null removes it."
                  },
                  "takeProfit": {
                    "type": "number",
                    "description": "New take profit. The page says null removes it."
                  },
                  "trailingOffset": {
                    "type": "number",
                    "description": "A trailing offset. The reference gives it no description."
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          },
          {
            "Authorization": [],
            "developer-api-key": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/modifyposition",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/patch-position"
      }
    },
    "/trade/quotes": {
      "get": {
        "operationId": "get-quotes",
        "summary": "Read the current bid and ask of one instrument, with the size at each.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. In the reply ap is the ask price, as the best ask size, bp the bid price and bs the best bid size. The mock reply uses those field names with invented values.",
        "tags": [
          "Market data"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getquotes"
        },
        "parameters": [
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "routeId",
            "in": "query",
            "required": true,
            "description": "The route identifier of the instrument. TradeLocker's getting started page says to use the INFO route for quote calls. Both routes are listed for each instrument by GET /trade/accounts/{accountId}/instruments.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "tradableInstrumentId",
            "in": "query",
            "required": true,
            "description": "The identifier of the instrument, as tradableInstrumentId in the list of instruments.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "A mock reply held on this site's record. The values are invented and the record holds no status code for it.",
            "content": {
              "application/json": {
                "example": {
                  "_mock": true,
                  "d": {
                    "ap": 1.1002,
                    "as": 100000,
                    "bp": 1.1,
                    "bs": 100000
                  },
                  "s": "ok"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getquotes",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-quotes"
      }
    },
    "/trade/sessions/{sessionId}": {
      "get": {
        "operationId": "get-trade-session",
        "summary": "Read one trade session: its time zone, its opening periods, its holidays and whether trading is blocked.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The reply object d marks blockTrading and timeZone as required and also lists holidays and five period objects: session_preopen, session_beforemarket, session_regular, session_aftermarket and session_postclose. No mock reply is recorded.",
        "tags": [
          "Instruments and Sessions"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/gettradesession"
        },
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "The identifier of the trade session, the tradeSessionId in an instrument's details.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/gettradesession",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-trade-session"
      }
    },
    "/trade/sessionStatuses/{sessionStatusId}": {
      "get": {
        "operationId": "get-session-status",
        "summary": "Read which order operations and order types a trade session allows while it is in a given session status.",
        "description": "Read on 12 Oct 2026 on TradeLocker's own reference page for this call, in the Markdown version the documentation site serves at the same address with .md on the end. That page carries the call's OpenAPI definition, headed Trading API version 2.11.0: the method, path, parameters and required marks here are that definition's. The page describes the operations as new, modify and cancel and the order types as manual, market, stop, limit, stop limit and trailing stop. No mock reply is recorded.",
        "tags": [
          "Instruments and Sessions"
        ],
        "externalDocs": {
          "description": "TradeLocker API's own reference for this operation",
          "url": "https://public-api.tradelocker.com/reference/getsessionstatususingget"
        },
        "parameters": [
          {
            "name": "sessionStatusId",
            "in": "path",
            "required": true,
            "description": "The identifier of the trade session status, the tradeSessionStatusId in an instrument's details.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "accNum",
            "in": "header",
            "required": true,
            "description": "The account number that selects which of the login's accounts the call acts on. It is the accNum from GET /auth/jwt/all-accounts, not the accountId.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://public-api.tradelocker.com/reference/getsessionstatususingget",
        "x-checked": "2026-10-12",
        "x-page": "https://openbrokerapi.com/platforms/tradelocker/endpoints/get-session-status"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Authorization": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "A header the TradeLocker API endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      },
      "developer-api-key": {
        "type": "apiKey",
        "in": "header",
        "name": "developer-api-key",
        "description": "A header the TradeLocker API endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      }
    }
  }
}