{
  "openapi": "3.1.0",
  "info": {
    "title": "IG API (independent, unofficial description by Broker API Hub)",
    "version": "2026-10-12",
    "description": "An independent, unofficial description of the IG API, built by Broker API Hub from IG's public documentation. It is not IG's own specification, and Broker API Hub is not affiliated with or endorsed by IG.\n\nIt is generated from 49 endpoint records. Every operation carries x-source, the page it was read on, and x-checked, the date that page was last checked. 7 operations carry x-status because the record is 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/brokers/ig.\n\nResponse schemas: 18 of the 49 operations carry a response block written by hand for an earlier file on this site, each schema with its own x-source. Those operations are marked x-carried.\n\n28 operations carry a mock reply as an example under the default response. Its values are invented.\n\nWhere this file and IG'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, IG API OpenAPI description, openbrokerapi.com/specs/ig.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/brokers/ig",
    "x-base-addresses": {
      "live": "https://api.ig.com/gateway/deal",
      "demo": "https://demo-api.ig.com/gateway/deal"
    },
    "x-base-addresses-note": "The base addresses exactly as the broker record words them. Only an entry that is a plain address is listed under servers."
  },
  "externalDocs": {
    "description": "IG's own documentation",
    "url": "https://labs.ig.com/"
  },
  "servers": [
    {
      "url": "https://demo-api.ig.com/gateway/deal",
      "description": "Recorded on the IG record as \"demo\"."
    },
    {
      "url": "https://api.ig.com/gateway/deal",
      "description": "Recorded on the IG record as \"live\"."
    }
  ],
  "tags": [
    {
      "name": "Accounts"
    },
    {
      "name": "Applications"
    },
    {
      "name": "Client sentiment"
    },
    {
      "name": "Costs and charges"
    },
    {
      "name": "Dealing"
    },
    {
      "name": "History"
    },
    {
      "name": "Markets"
    },
    {
      "name": "Prices"
    },
    {
      "name": "Session"
    },
    {
      "name": "Watchlists"
    }
  ],
  "paths": {
    "/accounts": {
      "get": {
        "operationId": "accounts",
        "summary": "List every account under the login (spread bet, CFD and so on) with balance, deposit, profit and loss and available funds.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/accounts.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "accounts": [
                    {
                      "accountId": "MOCK123",
                      "accountName": "Spread bet (mock)",
                      "accountType": "SPREADBET",
                      "currency": "GBP",
                      "preferred": true,
                      "status": "ENABLED",
                      "balance": {
                        "balance": 10000,
                        "deposit": 450,
                        "profitLoss": 37.5,
                        "available": 9587.5
                      }
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/GetAccountsV1Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/accounts.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/accounts"
      }
    },
    "/accounts/preferences": {
      "get": {
        "operationId": "accounts-preferences",
        "summary": "Read the preferences held on the account. The one preference documented is whether trailing stops are switched on.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/accounts-preferences.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "trailingStopsEnabled": true
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/accounts-preferences.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/accounts-preferences"
      },
      "put": {
        "operationId": "put-accounts-preferences",
        "summary": "Change the account preferences. The documented body carries one field, which switches trailing stops on or off.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/accounts-preferences.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "trailingStopsEnabled": {
                    "type": "boolean",
                    "description": "The new trailing stop preference. The page marks no field as required."
                  }
                }
              }
            }
          }
        },
        "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,
                  "status": "SUCCESS"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/accounts-preferences.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-accounts-preferences"
      }
    },
    "/categories": {
      "get": {
        "operationId": "categories",
        "summary": "The categories of instrument switched on for the account, each with a code and a flag saying whether it can be traded.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Markets"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/categories.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "categories": [
                    {
                      "code": "MOCK_CATEGORY",
                      "nonTradeable": false
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/categories.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/categories"
      }
    },
    "/categories/{categoryId}/instruments": {
      "get": {
        "operationId": "category-instruments",
        "summary": "Every instrument in one category, paged, with its epic, name, status and current bid and offer.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Markets"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/categories-category-id-instruments.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "categoryId",
            "in": "path",
            "required": true,
            "description": "Category identifier, the code from GET /categories.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "required": false,
            "description": "Page to fetch, counted from 0. Default 0.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Instruments per page, 1 to 1000. Default 150.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "referenceEpic",
            "in": "query",
            "required": false,
            "description": "Underlying epic. Applies only when categoryId is OPTIONS.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maturityType",
            "in": "query",
            "required": false,
            "description": "Expiry identifier such as DAILY or WEEKLY. Applies only when categoryId is OPTIONS.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "instruments": [
                    {
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "instrumentName": "FTSE 100 (mock)",
                      "expiry": "DFB",
                      "instrumentType": "INDICES",
                      "otcTradeable": true,
                      "marketStatus": "TRADEABLE",
                      "delayTime": 0,
                      "bid": 7601.5,
                      "offer": 7602.5,
                      "high": 7670,
                      "low": 7590,
                      "netChange": 12.5,
                      "percentageChange": 0.16,
                      "updateTime": "08:00:00",
                      "scalingFactor": 1
                    }
                  ],
                  "metadata": {
                    "pageNumber": 0,
                    "pageSize": 150
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/categories-category-id-instruments.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/category-instruments"
      }
    },
    "/client-sentiment": {
      "get": {
        "operationId": "client-sentiment",
        "summary": "The share of IG clients holding long and short positions in each of a list of markets, as two percentages per market.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated since 2024) calls clientsentiment/{marketId} without one. The two disagree and neither was tested against a host here, so the record is marked conflicting.",
        "tags": [
          "Client sentiment"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/client-sentiment.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketIds",
            "in": "query",
            "required": false,
            "description": "Market identifiers, separated by commas. The page marks it optional.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "clientSentiments": [
                    {
                      "marketId": "MOCKMKT",
                      "longPositionPercentage": 62,
                      "shortPositionPercentage": 38
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/client-sentiment.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment"
      }
    },
    "/client-sentiment/{marketId}": {
      "get": {
        "operationId": "client-sentiment-by-market-id",
        "summary": "The share of IG clients holding long and short positions in one market, as two percentages.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated since 2024) calls clientsentiment/{marketId} without one. The two disagree and neither was tested against a host here, so the record is marked conflicting.",
        "tags": [
          "Client sentiment"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/client-sentiment-market-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketId",
            "in": "path",
            "required": true,
            "description": "Market identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "marketId": "MOCKMKT",
                  "longPositionPercentage": 62,
                  "shortPositionPercentage": 38
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/client-sentiment-market-id.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment-by-market-id"
      }
    },
    "/client-sentiment/related/{marketId}": {
      "get": {
        "operationId": "client-sentiment-related",
        "summary": "Client sentiment for the markets IG relates to the one you name: the long and short percentages for each.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated since 2024) calls clientsentiment/related/{marketId} without one. The two disagree and neither was tested against a host here, so the record is marked conflicting.",
        "tags": [
          "Client sentiment"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/client-sentiment-related-market-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketId",
            "in": "path",
            "required": true,
            "description": "Market identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "clientSentiments": [
                    {
                      "marketId": "MOCKMKT2",
                      "longPositionPercentage": 55,
                      "shortPositionPercentage": 45
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/client-sentiment-related-market-id.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/client-sentiment-related"
      }
    },
    "/confirms/{dealReference}": {
      "get": {
        "operationId": "confirms-by-deal-reference",
        "summary": "Deal confirmation for a dealReference. This is where you learn whether the deal was ACCEPTED or REJECTED, and why.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/confirms-deal-reference.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dealReference",
            "in": "path",
            "required": true,
            "description": "Reference returned by a dealing call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0001",
                  "dealId": "DIAAAAMOCK01",
                  "dealStatus": "ACCEPTED",
                  "reason": "SUCCESS",
                  "status": "OPEN",
                  "epic": "IX.D.FTSE.DAILY.IP",
                  "direction": "BUY",
                  "size": 1,
                  "level": 7650.2
                },
                "schema": {
                  "$ref": "#/components/schemas/GetConfirmsDealReferenceV1Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/confirms-deal-reference.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/confirms-by-deal-reference"
      }
    },
    "/history/activity": {
      "get": {
        "operationId": "history-activity",
        "summary": "Account activity (deals, amendments, order changes) over a date range, with optional detail.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. The page also lists optional dealId and filter query parameters for version 3, which are not recorded here.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-activity.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 3.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start date time, ISO format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End date time, ISO format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "detailed",
            "in": "query",
            "required": false,
            "description": "True for full deal details.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Results per page.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "activities": [
                    {
                      "date": "2026-09-18T08:01:12",
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "dealId": "DIAAAAMOCK01",
                      "type": "POSITION",
                      "status": "ACCEPTED",
                      "description": "Position opened: MOCK"
                    }
                  ],
                  "metadata": {
                    "paging": {
                      "size": 1,
                      "next": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GetHistoryActivityV3Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-activity.html",
        "x-checked": "2026-10-12",
        "x-version": "3",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-activity"
      }
    },
    "/history/activity/{fromDate}/{toDate}": {
      "get": {
        "operationId": "history-activity-by-dates",
        "summary": "Account activity between two dates, both given in the path. This is the version 1 form: every value in the reply is a string.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-activity-dates.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "path",
            "required": true,
            "description": "Start date, written dd-mm-yyyy.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "toDate",
            "in": "path",
            "required": true,
            "description": "End date, written dd-mm-yyyy.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "activities": [
                    {
                      "activityHistoryId": "MOCK1",
                      "activity": "Order",
                      "actionStatus": "ACCEPT",
                      "channel": "WEB",
                      "date": "17/09/26",
                      "time": "08:00",
                      "dealId": "MOCKDEAL1",
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "marketName": "FTSE 100",
                      "period": "DFB",
                      "size": "+1",
                      "level": "7601.5",
                      "stop": "-",
                      "stopType": "N",
                      "limit": "-",
                      "currency": "GBP",
                      "result": "Position opened: MOCKDEAL1"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-activity-dates.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-activity-by-dates"
      }
    },
    "/history/activity/{lastPeriod}": {
      "get": {
        "operationId": "history-activity-by-period",
        "summary": "Account activity for a period counted back from now, given in milliseconds. This is the version 1 form: every value in the reply is a string.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-activity-period.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastPeriod",
            "in": "path",
            "required": true,
            "description": "Length of the period to look back over, in milliseconds.",
            "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,
                  "activities": [
                    {
                      "activityHistoryId": "MOCK1",
                      "activity": "Order",
                      "actionStatus": "ACCEPT",
                      "channel": "WEB",
                      "date": "17/09/26",
                      "time": "08:00",
                      "dealId": "MOCKDEAL1",
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "marketName": "FTSE 100",
                      "period": "DFB",
                      "size": "+1",
                      "level": "7601.5",
                      "stop": "-",
                      "stopType": "N",
                      "limit": "-",
                      "currency": "GBP",
                      "result": "Position opened: MOCKDEAL1"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-activity-period.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-activity-by-period"
      }
    },
    "/history/transactions": {
      "get": {
        "operationId": "history-transactions",
        "summary": "Cash transactions (realised profit and loss, funding, deposits). This is the one you want for a trade journal or tax spreadsheet.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-transactions.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "ALL, ALL_DEAL, DEPOSIT, WITHDRAWAL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start date time.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End date time.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxSpanSeconds",
            "in": "query",
            "required": false,
            "description": "Span limit when from and to are omitted.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Results per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "required": false,
            "description": "Page to fetch.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "transactions": [
                    {
                      "date": "2026-09-18",
                      "instrumentName": "FTSE 100 (mock)",
                      "size": "+1",
                      "openLevel": "7650.2",
                      "closeLevel": "7680.2",
                      "profitAndLoss": "£30.00",
                      "transactionType": "DEAL",
                      "currency": "GBP"
                    }
                  ],
                  "metadata": {
                    "pageData": {
                      "pageNumber": 1,
                      "totalPages": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GetHistoryTransactionsV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-transactions.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-transactions"
      }
    },
    "/history/transactions/{transactionType}/{fromDate}/{toDate}": {
      "get": {
        "operationId": "history-transactions-by-dates",
        "summary": "Transaction history of one type between two dates, all three given in the path. The version 1 form of the transactions call.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-transactions-dates.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "transactionType",
            "in": "path",
            "required": true,
            "description": "ALL, ALL_DEAL, DEPOSIT or WITHDRAWAL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "path",
            "required": true,
            "description": "Start date, written dd-mm-yyyy.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "toDate",
            "in": "path",
            "required": true,
            "description": "End date, written dd-mm-yyyy.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "transactions": []
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-transactions-dates.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-transactions-by-dates"
      }
    },
    "/history/transactions/{transactionType}/{lastPeriod}": {
      "get": {
        "operationId": "history-transactions-by-period",
        "summary": "Transaction history of one type for a period counted back from now, given in milliseconds. The version 1 form of the transactions call.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "History"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/history-transactions-period.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "transactionType",
            "in": "path",
            "required": true,
            "description": "ALL, ALL_DEAL, DEPOSIT or WITHDRAWAL.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lastPeriod",
            "in": "path",
            "required": true,
            "description": "Length of the period to look back over, in milliseconds.",
            "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,
                  "transactions": []
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/history-transactions-period.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/history-transactions-by-period"
      }
    },
    "/indicativecostsandcharges/close": {
      "post": {
        "operationId": "post-indicative-costs-close",
        "summary": "Ask for an indicative breakdown of the costs and charges of closing an open deal. Nothing is traded.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page limits the call to a list of IG website identifiers, so it may not answer for every account. Required is recorded for the fields the page marks as not null.",
        "tags": [
          "Costs and charges"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/indicative-costs-and-charges-close.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ask": {
                    "type": "number",
                    "description": "Current ask price of the market."
                  },
                  "bid": {
                    "type": "number",
                    "description": "Current bid price of the market."
                  },
                  "dealCurrencyCode": {
                    "type": "string",
                    "description": "Currency the deal is in."
                  },
                  "dealReference": {
                    "type": "string",
                    "description": "Your reference for the deal the quote is for."
                  },
                  "size": {
                    "type": "number",
                    "description": "Deal size."
                  },
                  "direction": {
                    "type": "string",
                    "description": "BUY or SELL."
                  },
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic."
                  },
                  "instrumentId": {
                    "type": "string",
                    "description": "Instrument identifier."
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "True where the deal carries a guaranteed stop."
                  },
                  "knockoutPremium": {
                    "type": "number",
                    "description": "Knockout premium, for knockout products."
                  },
                  "priceLevel": {
                    "type": "number",
                    "description": "Price level of the deal."
                  },
                  "stopLevel": {
                    "type": "number",
                    "description": "Stop level."
                  },
                  "openingLevel": {
                    "type": "number",
                    "description": "Level the deal was opened at."
                  }
                },
                "required": [
                  "ask",
                  "bid",
                  "dealCurrencyCode",
                  "dealReference",
                  "size",
                  "openingLevel"
                ]
              }
            }
          }
        },
        "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,
                  "close": {
                    "indicativeQuoteReference": "MOCKQUOTE2",
                    "notionalValue": 7650,
                    "closingSpread": 1,
                    "closingCommission": 0,
                    "closingFxFee": 0,
                    "guaranteedStopReturn": 0
                  },
                  "currencyCodeISO": "GBP"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/indicative-costs-and-charges-close.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-close"
      }
    },
    "/indicativecostsandcharges/durablemedium/{indicativeQuoteReference}": {
      "get": {
        "operationId": "indicative-costs-durable-medium",
        "summary": "Download an indicative costs and charges quote made earlier, as a PDF. The reference comes back from the open, close and edit quote calls.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The response is a PDF file, not JSON. The page limits the call to a list of IG website identifiers.",
        "tags": [
          "Costs and charges"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/indicative-costs-and-charges-durable-medium.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "indicativeQuoteReference",
            "in": "path",
            "required": true,
            "description": "Reference of the quote, from an earlier costs and charges call.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/indicative-costs-and-charges-durable-medium.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/indicative-costs-durable-medium"
      }
    },
    "/indicativecostsandcharges/edit": {
      "post": {
        "operationId": "post-indicative-costs-edit",
        "summary": "Ask for an indicative breakdown of the costs and charges of editing an order, split into its stop and its limit. Nothing is traded.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page limits the call to a list of IG website identifiers, so it may not answer for every account. Required is recorded for the fields the page marks as not null.",
        "tags": [
          "Costs and charges"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/indicative-costs-and-charges-edit.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ask": {
                    "type": "number",
                    "description": "Current ask price of the market."
                  },
                  "bid": {
                    "type": "number",
                    "description": "Current bid price of the market."
                  },
                  "dealCurrencyCode": {
                    "type": "string",
                    "description": "Currency the deal is in."
                  },
                  "dealReference": {
                    "type": "string",
                    "description": "Your reference for the deal the quote is for."
                  },
                  "size": {
                    "type": "number",
                    "description": "Deal size."
                  },
                  "direction": {
                    "type": "string",
                    "description": "BUY or SELL."
                  },
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic."
                  },
                  "instrumentId": {
                    "type": "string",
                    "description": "Instrument identifier."
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "True where the deal carries a guaranteed stop."
                  },
                  "knockoutPremium": {
                    "type": "number",
                    "description": "Knockout premium, for knockout products."
                  },
                  "priceLevel": {
                    "type": "number",
                    "description": "Price level of the deal."
                  },
                  "stopLevel": {
                    "type": "number",
                    "description": "Stop level."
                  },
                  "openingLevel": {
                    "type": "number",
                    "description": "Level the deal was opened at."
                  },
                  "editType": {
                    "type": "string",
                    "description": "The kind of edit. The page lists no values."
                  },
                  "limitLevel": {
                    "type": "number",
                    "description": "Limit level."
                  }
                },
                "required": [
                  "ask",
                  "bid",
                  "dealCurrencyCode",
                  "dealReference",
                  "size",
                  "openingLevel"
                ]
              }
            }
          }
        },
        "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,
                  "currencyCodeISO": "GBP",
                  "stop": {
                    "indicativeQuoteReference": "MOCKQUOTE3",
                    "notionalValue": 7590,
                    "closingSpread": 1
                  },
                  "limit": {
                    "indicativeQuoteReference": "MOCKQUOTE4",
                    "notionalValue": 7700,
                    "closingSpread": 1
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/indicative-costs-and-charges-edit.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-edit"
      }
    },
    "/indicativecostsandcharges/history/from/{from}/to/{to}": {
      "get": {
        "operationId": "indicative-costs-history",
        "summary": "The indicative costs and charges quotes made between two date times, paged. Each entry carries the reference needed to download its PDF.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page limits the call to a list of IG website identifiers.",
        "tags": [
          "Costs and charges"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/indicative-costs-and-charges-history-dates.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "path",
            "required": true,
            "description": "Start, written yyyy-MM-dd'T'HH:mm:ss.SSSXXX.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "path",
            "required": true,
            "description": "End, in the same format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Entries per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "required": false,
            "description": "Page to fetch.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Filter by type. The page lists no values.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "costsAndChargesHistory": [
                    {
                      "indicativeQuoteReference": "MOCKQUOTE1",
                      "instrumentName": "FTSE 100 (mock)",
                      "direction": "BUY",
                      "type": "OPEN",
                      "createdTimestamp": "2026-09-17T08:00:00.000+00:00"
                    }
                  ],
                  "pagination": {
                    "pageNumber": 0,
                    "pageSize": 20,
                    "totalElements": 1,
                    "totalPages": 1
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/indicative-costs-and-charges-history-dates.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/indicative-costs-history"
      }
    },
    "/indicativecostsandcharges/open": {
      "post": {
        "operationId": "post-indicative-costs-open",
        "summary": "Ask for an indicative breakdown of the costs and charges of opening a deal: spread, commission, funding and currency conversion. Nothing is traded.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page limits the call to a list of IG website identifiers, so it may not answer for every account. Required is recorded for the fields the page marks as not null.",
        "tags": [
          "Costs and charges"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/indicative-costs-and-charges-open.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ask": {
                    "type": "number",
                    "description": "Current ask price of the market."
                  },
                  "bid": {
                    "type": "number",
                    "description": "Current bid price of the market."
                  },
                  "dealCurrencyCode": {
                    "type": "string",
                    "description": "Currency the deal is in."
                  },
                  "dealReference": {
                    "type": "string",
                    "description": "Your reference for the deal the quote is for."
                  },
                  "size": {
                    "type": "number",
                    "description": "Deal size."
                  },
                  "direction": {
                    "type": "string",
                    "description": "BUY or SELL."
                  },
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic."
                  },
                  "instrumentId": {
                    "type": "string",
                    "description": "Instrument identifier."
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "True where the deal carries a guaranteed stop."
                  },
                  "knockoutPremium": {
                    "type": "number",
                    "description": "Knockout premium, for knockout products."
                  },
                  "priceLevel": {
                    "type": "number",
                    "description": "Price level of the deal."
                  },
                  "stopLevel": {
                    "type": "number",
                    "description": "Stop level."
                  }
                },
                "required": [
                  "ask",
                  "bid",
                  "dealCurrencyCode",
                  "dealReference",
                  "size"
                ]
              }
            }
          }
        },
        "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,
                  "indicativeQuoteReference": "MOCKQUOTE1",
                  "currencyCodeISO": "GBP",
                  "notionalValue": 7602,
                  "openingSpread": 1,
                  "closingSpread": 1,
                  "openingCommission": 0,
                  "closingCommission": 0,
                  "openingFxFee": 0,
                  "closingFxFee": 0,
                  "overnightFundingFee": 0.5,
                  "borrowingCharge": 0,
                  "guaranteedStopDeposit": 0,
                  "inducements": 0
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/indicative-costs-and-charges-open.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-indicative-costs-open"
      }
    },
    "/markets": {
      "get": {
        "operationId": "markets",
        "summary": "Search markets by free text. Returns epics you then feed into every other call.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. IG documents the search on its own page, titled /markets?searchTerm={searchTerm}, and marks searchTerm optional there; it was recorded as required until 12 Oct 2026. Version 2 of the search adds pageNumber and pageSize.",
        "tags": [
          "Markets"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/markets-searchterm.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "required": false,
            "description": "Free text, for example FTSE or gold. The page marks it optional, but GET /markets without it is the separate call that takes a mandatory epics list.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "markets": [
                    {
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "instrumentName": "FTSE 100 (mock)",
                      "instrumentType": "INDICES",
                      "expiry": "DFB",
                      "bid": 7655.1,
                      "offer": 7656.1,
                      "marketStatus": "TRADEABLE"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/GetMarketsV1Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/markets-searchterm.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/markets"
      }
    },
    "/markets/{epic}": {
      "get": {
        "operationId": "markets-by-epic",
        "summary": "Full market details for one epic: instrument, dealing rules (minimum size, stop distances) and snapshot.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. The page lists versions 1 to 4 of this call; this record describes version 3.",
        "tags": [
          "Markets"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/markets-epic.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 3.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "epic",
            "in": "path",
            "required": true,
            "description": "Instrument epic.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "instrument": {
                    "epic": "IX.D.FTSE.DAILY.IP",
                    "name": "FTSE 100 (mock)",
                    "type": "INDICES",
                    "currencies": [
                      {
                        "code": "GBP"
                      }
                    ]
                  },
                  "dealingRules": {
                    "minDealSize": {
                      "unit": "POINTS",
                      "value": 0.5
                    }
                  },
                  "snapshot": {
                    "marketStatus": "TRADEABLE",
                    "bid": 7655.1,
                    "offer": 7656.1
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GetMarketsEpicV3Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/markets-epic.html",
        "x-checked": "2026-10-12",
        "x-version": "3",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/markets-by-epic"
      }
    },
    "/operations/application": {
      "get": {
        "operationId": "operations-application",
        "summary": "List the API applications you own, each with its key, status and the request allowances set on it.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page describes the reply as a list of client applications. No mock is shown because the reply is a list, not an object.",
        "tags": [
          "Applications"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/operations-application.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/operations-application.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/operations-application"
      },
      "put": {
        "operationId": "put-operations-application",
        "summary": "Change one of your API applications: its status and its per account request allowances.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Applications"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/operations-application.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "apiKey": {
                    "type": "string",
                    "description": "Key of the application to change. Placeholder only: never paste a real key into this site."
                  },
                  "allowanceAccountOverall": {
                    "type": "number",
                    "description": "Requests per minute allowed per account."
                  },
                  "allowanceAccountTrading": {
                    "type": "number",
                    "description": "Trading requests per minute allowed per account."
                  },
                  "status": {
                    "type": "string",
                    "description": "DISABLED, ENABLED or REVOKED."
                  }
                },
                "required": [
                  "apiKey",
                  "allowanceAccountOverall",
                  "allowanceAccountTrading"
                ]
              }
            }
          }
        },
        "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,
                  "apiKey": "MOCK-KEY",
                  "name": "Mock application",
                  "status": "ENABLED",
                  "allowEquities": false,
                  "allowQuoteOrders": false,
                  "allowanceAccountOverall": 30,
                  "allowanceAccountTrading": 100,
                  "allowanceAccountHistoricalData": 10000,
                  "allowanceApplicationOverall": 60,
                  "concurrentSubscriptionsLimit": 40,
                  "createdDate": "2026-01-05"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/operations-application.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-operations-application"
      }
    },
    "/operations/application/disable": {
      "put": {
        "operationId": "put-operations-application-disable",
        "summary": "Disable the API key the request is sent with, so it stops serving requests. IG says a disabled key can be switched back on from the account pages of its platform.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The page documents no request body.",
        "tags": [
          "Applications"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/operations-application-disable.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "apiKey": "MOCK-KEY",
                  "name": "Mock application",
                  "status": "DISABLED",
                  "allowEquities": false,
                  "allowQuoteOrders": false,
                  "allowanceAccountOverall": 30,
                  "allowanceAccountTrading": 100,
                  "allowanceAccountHistoricalData": 10000,
                  "allowanceApplicationOverall": 60,
                  "concurrentSubscriptionsLimit": 40,
                  "createdDate": "2026-01-05"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/operations-application-disable.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-operations-application-disable"
      }
    },
    "/positions": {
      "get": {
        "operationId": "positions",
        "summary": "All open positions on the active account, each with its market snapshot.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/positions.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "positions": [
                    {
                      "position": {
                        "dealId": "DIAAAAMOCK01",
                        "direction": "BUY",
                        "size": 1,
                        "level": 7650.2,
                        "currency": "GBP",
                        "stopLevel": 7600,
                        "limitLevel": null,
                        "createdDateUTC": "2026-09-18T08:01:12"
                      },
                      "market": {
                        "epic": "IX.D.FTSE.DAILY.IP",
                        "instrumentName": "FTSE 100 (mock)",
                        "bid": 7655.1,
                        "offer": 7656.1,
                        "marketStatus": "TRADEABLE"
                      }
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/GetPositionsV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/positions.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/positions"
      }
    },
    "/positions/{dealId}": {
      "get": {
        "operationId": "positions-by-deal-id",
        "summary": "A single open position by deal ID.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/positions-deal-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dealId",
            "in": "path",
            "required": true,
            "description": "Deal identifier of the open position.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "position": {
                    "dealId": "DIAAAAMOCK01",
                    "direction": "BUY",
                    "size": 1,
                    "level": 7650.2
                  },
                  "market": {
                    "epic": "IX.D.FTSE.DAILY.IP",
                    "bid": 7655.1,
                    "offer": 7656.1
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GetPositionsDealIdV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/positions-deal-id.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/positions-by-deal-id"
      }
    },
    "/positions/otc": {
      "delete": {
        "operationId": "delete-positions-otc",
        "summary": "Close one or more positions. IG's official Java sample sends a DELETE with a request body; trading-ig sends a POST with the header _method: DELETE for clients that cannot put a body on a DELETE.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. Required is recorded for the fields the page marks as not null. The page does not mark direction or orderType as not null: that describes the page, not a test of what the host accepts. Its constraints say to set only one of dealId and epic, to set expiry when epic is given, and to set a level with a LIMIT or QUOTE order. The _method header is not on the reference page. IG's FAQ (labs.ig.com/faq.html, read the same day) says a client that cannot send a body on a DELETE can send a POST with the header _method: DELETE instead.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/positions-otc.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "_method",
            "in": "header",
            "required": false,
            "description": "Only if your HTTP client cannot send a DELETE with a body: send POST with _method: DELETE, as IG's FAQ describes.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dealId": {
                    "type": "string",
                    "description": "Deal to close (or identify by epic and expiry)."
                  },
                  "direction": {
                    "type": "string",
                    "description": "Opposite of the open position: SELL closes a BUY.",
                    "x-required-unmarked": true
                  },
                  "size": {
                    "type": "number",
                    "description": "Size to close."
                  },
                  "orderType": {
                    "type": "string",
                    "description": "MARKET, LIMIT or QUOTE.",
                    "x-required-unmarked": true
                  },
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic, if not closing by dealId."
                  },
                  "expiry": {
                    "type": "string",
                    "description": "Expiry, if not closing by dealId."
                  }
                },
                "required": [
                  "size"
                ],
                "x-required-unmarked": [
                  "direction",
                  "orderType"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0003"
                },
                "schema": {
                  "$ref": "#/components/schemas/DeletePositionsOtcV1Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/positions-otc.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/delete-positions-otc"
      },
      "post": {
        "operationId": "post-positions-otc",
        "summary": "Open an OTC position. Returns a dealReference only: the deal is not confirmed until you call GET /confirms/{dealReference}.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. Required is recorded for the fields the page marks as not null. The page does not mark direction or orderType as not null: that describes the page, not a test of what the host accepts. The page also lists an optional dealReference body field, which is not recorded here.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/positions-otc.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic, for example IX.D.FTSE.DAILY.IP."
                  },
                  "direction": {
                    "type": "string",
                    "description": "BUY or SELL.",
                    "x-required-unmarked": true
                  },
                  "size": {
                    "type": "number",
                    "description": "Deal size."
                  },
                  "orderType": {
                    "type": "string",
                    "description": "MARKET, LIMIT or QUOTE.",
                    "x-required-unmarked": true
                  },
                  "expiry": {
                    "type": "string",
                    "description": "\"DFB\" for daily funded spread bets, \"-\" for CFDs, or a contract month for futures style bets."
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Currency, for example GBP."
                  },
                  "forceOpen": {
                    "type": "boolean",
                    "description": "True to open a new position rather than net against an opposite one."
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "True for a guaranteed stop."
                  },
                  "level": {
                    "type": "number",
                    "description": "Price level for LIMIT or QUOTE orders."
                  },
                  "stopDistance": {
                    "type": "number",
                    "description": "Stop distance in points."
                  },
                  "limitDistance": {
                    "type": "number",
                    "description": "Limit distance in points."
                  },
                  "trailingStop": {
                    "type": "boolean",
                    "description": "True for a trailing stop."
                  },
                  "limitLevel": {
                    "type": "number",
                    "description": "Limit as a price level, instead of limitDistance."
                  },
                  "stopLevel": {
                    "type": "number",
                    "description": "Stop as a price level, instead of stopDistance."
                  },
                  "quoteId": {
                    "type": "string",
                    "description": "Quote ID, for orderType QUOTE."
                  },
                  "timeInForce": {
                    "type": "string",
                    "description": "Optional time in force for the order."
                  },
                  "trailingStopIncrement": {
                    "type": "number",
                    "description": "Trailing stop increment, used with trailingStop."
                  }
                },
                "required": [
                  "epic",
                  "size",
                  "expiry",
                  "currencyCode",
                  "forceOpen",
                  "guaranteedStop"
                ],
                "x-required-unmarked": [
                  "direction",
                  "orderType"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0001"
                },
                "schema": {
                  "$ref": "#/components/schemas/PostPositionsOtcV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/positions-otc.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-positions-otc"
      }
    },
    "/positions/otc/{dealId}": {
      "put": {
        "operationId": "put-positions-otc-by-deal-id",
        "summary": "Amend the stop, limit or trailing stop on an open position.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. The page marks no body field as not null and also lists an optional guaranteedStop field, which is not recorded here.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/positions-otc-deal-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dealId",
            "in": "path",
            "required": true,
            "description": "Deal identifier.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "stopLevel": {
                    "type": "number",
                    "description": "New stop level."
                  },
                  "limitLevel": {
                    "type": "number",
                    "description": "New limit level."
                  },
                  "trailingStop": {
                    "type": "boolean",
                    "description": "Enable a trailing stop."
                  },
                  "trailingStopDistance": {
                    "type": "number",
                    "description": "Trailing stop distance."
                  },
                  "trailingStopIncrement": {
                    "type": "number",
                    "description": "Trailing stop increment."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0002"
                },
                "schema": {
                  "$ref": "#/components/schemas/PutPositionsOtcDealIdV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/positions-otc-deal-id.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-positions-otc-by-deal-id"
      }
    },
    "/prices/{epic}": {
      "get": {
        "operationId": "prices-by-epic",
        "summary": "Historical OHLC prices for an epic, paged. Each call eats into your weekly historical data allowance, so cache aggressively.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Prices"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/prices-epic.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 3.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "epic",
            "in": "path",
            "required": true,
            "description": "Instrument epic.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolution",
            "in": "query",
            "required": false,
            "description": "For example MINUTE, HOUR, DAY.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "description": "Start date time, ISO format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "description": "End date time, ISO format.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "description": "Maximum number of points.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "description": "Points per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "required": false,
            "description": "Page to fetch.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "prices": [
                    {
                      "snapshotTimeUTC": "2026-09-17T00:00:00",
                      "openPrice": {
                        "bid": 7601,
                        "ask": 7602
                      },
                      "closePrice": {
                        "bid": 7650,
                        "ask": 7651
                      },
                      "highPrice": {
                        "bid": 7670,
                        "ask": 7671
                      },
                      "lowPrice": {
                        "bid": 7590,
                        "ask": 7591
                      },
                      "lastTradedVolume": 12345
                    }
                  ],
                  "metadata": {
                    "allowance": {
                      "remainingAllowance": 9990,
                      "totalAllowance": 10000
                    },
                    "pageData": {
                      "pageNumber": 1,
                      "totalPages": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/GetPricesEpicV3Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/prices-epic.html",
        "x-checked": "2026-10-12",
        "x-version": "3",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/prices-by-epic"
      }
    },
    "/prices/{epic}/{resolution}/{numPoints}": {
      "get": {
        "operationId": "prices-by-num-points",
        "summary": "The most recent historical prices for an epic at one resolution, as a fixed number of data points. Each point counts against the historical data allowance.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Prices"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/prices-epic-resolution-numpoints.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "epic",
            "in": "path",
            "required": true,
            "description": "Instrument epic.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "description": "MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK or MONTH.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "numPoints",
            "in": "path",
            "required": true,
            "description": "How many data points to return.",
            "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,
                  "prices": [
                    {
                      "snapshotTime": "2026/09/17 08:00:00",
                      "openPrice": {
                        "bid": 7601,
                        "ask": 7602
                      },
                      "closePrice": {
                        "bid": 7650,
                        "ask": 7651
                      },
                      "highPrice": {
                        "bid": 7670,
                        "ask": 7671
                      },
                      "lowPrice": {
                        "bid": 7590,
                        "ask": 7591
                      },
                      "lastTradedVolume": 12345
                    }
                  ],
                  "instrumentType": "INDICES",
                  "allowance": {
                    "remainingAllowance": 9990,
                    "totalAllowance": 10000,
                    "allowanceExpiry": 3600
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/prices-epic-resolution-numpoints.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/prices-by-num-points"
      }
    },
    "/prices/{epic}/{resolution}/{startDate}/{endDate}": {
      "get": {
        "operationId": "prices-by-date-range",
        "summary": "Historical prices for an epic at one resolution between two date times given in the path. Each point counts against the historical data allowance.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Prices"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/prices-epic-dates-new.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "epic",
            "in": "path",
            "required": true,
            "description": "Instrument epic.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resolution",
            "in": "path",
            "required": true,
            "description": "SECOND, MINUTE, MINUTE_2, MINUTE_3, MINUTE_5, MINUTE_10, MINUTE_15, MINUTE_30, HOUR, HOUR_2, HOUR_3, HOUR_4, DAY, WEEK or MONTH.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "startDate",
            "in": "path",
            "required": true,
            "description": "Start, written yyyy-MM-dd HH:mm:ss.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endDate",
            "in": "path",
            "required": true,
            "description": "End, written yyyy-MM-dd HH:mm:ss. Must be later than the start.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "prices": [
                    {
                      "snapshotTime": "2026/09/17 08:00:00",
                      "openPrice": {
                        "bid": 7601,
                        "ask": 7602
                      },
                      "closePrice": {
                        "bid": 7650,
                        "ask": 7651
                      },
                      "highPrice": {
                        "bid": 7670,
                        "ask": 7671
                      },
                      "lowPrice": {
                        "bid": 7590,
                        "ask": 7591
                      },
                      "lastTradedVolume": 12345
                    }
                  ],
                  "instrumentType": "INDICES",
                  "allowance": {
                    "remainingAllowance": 9990,
                    "totalAllowance": 10000,
                    "allowanceExpiry": 3600
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/prices-epic-dates-new.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/prices-by-date-range"
      }
    },
    "/session": {
      "delete": {
        "operationId": "delete-session",
        "summary": "Log out and end the current session. The page documents no parameters and no response body.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/delete-session"
      },
      "get": {
        "operationId": "session",
        "summary": "Read the current session: client ID, active account and streaming endpoint. Optional fetchSessionTokens=true returns fresh CST headers.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fetchSessionTokens",
            "in": "query",
            "required": false,
            "description": "If true, session tokens are returned in the response headers.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "clientId": "000000",
                  "accountId": "MOCK123",
                  "timezoneOffset": 1,
                  "locale": "en_GB",
                  "currency": "GBP",
                  "lightstreamerEndpoint": "https://mock-apd.marketdatasystems.example"
                },
                "schema": {
                  "$ref": "#/components/schemas/GetSessionV1Response"
                }
              }
            },
            "headers": {
              "CST": {
                "description": "CST and X-SECURITY-TOKEN together authenticate every later request and must be sent as headers on each call.",
                "schema": {
                  "type": "string"
                }
              },
              "X-SECURITY-TOKEN": {
                "description": "CST and X-SECURITY-TOKEN together authenticate every later request and must be sent as headers on each call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/session"
      },
      "post": {
        "operationId": "post-session",
        "summary": "Log in with username and password. Returns CST and X-SECURITY-TOKEN in the response headers; send both on every later call.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path. The page marks identifier and password as required for version 2 and lists encryptedPassword as a flag. Version 3 also exists and returns OAuth tokens that expire after about a minute, a community figure from the trading-ig FAQ; IG Labs' own FAQ gives 12 hours between calls for the v2 CST and X-SECURITY-TOKEN pair, while IG's REST trading API guide says 6 hours at first, extended up to a maximum of 72 hours: two IG pages that disagree.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "identifier": {
                    "type": "string",
                    "description": "Your IG username (not your email)."
                  },
                  "password": {
                    "type": "string",
                    "description": "Your IG password. Never paste it into this site."
                  },
                  "encryptedPassword": {
                    "type": "boolean",
                    "description": "Optional. Leave it out, or send false, when you send your password as plain text over HTTPS. Send true only if you encrypted the password with the key from GET /session/encryptionKey."
                  }
                },
                "required": [
                  "identifier",
                  "password"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "accountType": "SPREADBET",
                  "currencyIsoCode": "GBP",
                  "currentAccountId": "MOCK123",
                  "lightstreamerEndpoint": "https://mock-apd.marketdatasystems.example",
                  "clientId": "000000",
                  "timezoneOffset": 1
                },
                "schema": {
                  "$ref": "#/components/schemas/PostSessionV2Response"
                }
              }
            },
            "headers": {
              "CST": {
                "description": "CST and X-SECURITY-TOKEN together authenticate every later request and must be sent as headers on each call.",
                "schema": {
                  "type": "string"
                }
              },
              "X-SECURITY-TOKEN": {
                "description": "CST and X-SECURITY-TOKEN together authenticate every later request and must be sent as headers on each call.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session.html",
        "x-checked": "2026-10-12",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-session"
      },
      "put": {
        "operationId": "put-session",
        "summary": "Switch the session to another of your accounts, and optionally make that account the default one.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "accountId": {
                    "type": "string",
                    "description": "Identifier of the account to switch to."
                  },
                  "defaultAccount": {
                    "type": "boolean",
                    "description": "True to make that account the default. Leave it out to keep the default as it is."
                  }
                },
                "required": [
                  "accountId"
                ]
              }
            }
          }
        },
        "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,
                  "dealingEnabled": true,
                  "hasActiveDemoAccounts": true,
                  "hasActiveLiveAccounts": false,
                  "trailingStopsEnabled": false
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-session"
      }
    },
    "/session/encryptionKey": {
      "get": {
        "operationId": "session-encryption-key",
        "summary": "Fetch the key and timestamp used to send a password in encrypted form when logging in. Only some logins need it.",
        "description": "The method, path, version and response fields were read on IG's own reference page on 12 Oct 2026. The page lists no request headers and does not say whether session tokens are needed, so only the API key and version headers from IG's REST trading API guide are recorded. The page's own description repeats the login wording.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session-encryption-key.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "encryptionKey": "MOCK-BASE64-KEY",
                  "timeStamp": 1789718400000
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session-encryption-key.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/session-encryption-key"
      }
    },
    "/session/refresh-token": {
      "post": {
        "operationId": "post-session-refresh-token",
        "summary": "Exchange a refresh token from a version 3 login for a new access token and a new refresh token.",
        "description": "The method, path, version, body and response fields were read on IG's own reference page on 12 Oct 2026. The page lists no request headers, so only the API key and version headers from IG's REST trading API guide are recorded. The guide says a refresh returns a new refresh token as well, and that refresh tokens also expire.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/session-refresh-token.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "refresh_token": {
                    "type": "string",
                    "description": "The refresh token from POST /session version 3, or from the last call here. Placeholder only: never paste a real token into this site."
                  }
                },
                "required": [
                  "refresh_token"
                ]
              }
            }
          }
        },
        "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,
                  "access_token": "MOCK-ACCESS",
                  "refresh_token": "MOCK-REFRESH",
                  "scope": "profile",
                  "token_type": "Bearer",
                  "expires_in": "60"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/session-refresh-token.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-session-refresh-token"
      }
    },
    "/watchlists": {
      "get": {
        "operationId": "watchlists",
        "summary": "All watchlists on the account, including the built in ones.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) uses the same path.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "watchlists": [
                    {
                      "id": "MOCKWL1",
                      "name": "My indices (mock)",
                      "editable": true,
                      "deleteable": true,
                      "defaultSystemWatchlist": false
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/GetWatchlistsV1Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/watchlists"
      },
      "post": {
        "operationId": "post-watchlists",
        "summary": "Create a watchlist with a name and, if you wish, a first set of markets. The reply says whether every market was added.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The documented status values are SUCCESS and SUCCESS_NOT_ALL_INSTRUMENTS_ADDED.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Name of the new watchlist."
                  },
                  "epics": {
                    "type": "array",
                    "description": "Epics of the markets to put in the watchlist."
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "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,
                  "watchlistId": "MOCKWL2",
                  "status": "SUCCESS"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-watchlists"
      }
    },
    "/watchlists/{watchlistId}": {
      "delete": {
        "operationId": "delete-watchlist-by-id",
        "summary": "Delete a watchlist. The list itself is removed, not the markets or any position in them.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists-watchlist-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "watchlistId",
            "in": "path",
            "required": true,
            "description": "Watchlist identifier, from GET /watchlists.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "status": "SUCCESS"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists-watchlist-id.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/delete-watchlist-by-id"
      },
      "get": {
        "operationId": "watchlist-by-id",
        "summary": "The markets in one watchlist, each with its epic, name, status and current bid and offer.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists-watchlist-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "watchlistId",
            "in": "path",
            "required": true,
            "description": "Watchlist identifier, from GET /watchlists.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "markets": [
                    {
                      "epic": "IX.D.FTSE.DAILY.IP",
                      "instrumentName": "FTSE 100 (mock)",
                      "instrumentType": "INDICES",
                      "expiry": "DFB",
                      "marketStatus": "TRADEABLE",
                      "bid": 7601.5,
                      "offer": 7602.5,
                      "high": 7670,
                      "low": 7590,
                      "netChange": 12.5,
                      "percentageChange": 0.16,
                      "lotSize": 1,
                      "scalingFactor": 1,
                      "delayTime": 0,
                      "streamingPricesAvailable": true,
                      "updateTime": "08:00:00",
                      "updateTimeUTC": "07:00:00"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists-watchlist-id.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/watchlist-by-id"
      },
      "put": {
        "operationId": "put-watchlist-by-id",
        "summary": "Add one market to an existing watchlist, by its epic.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists-watchlist-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "watchlistId",
            "in": "path",
            "required": true,
            "description": "Watchlist identifier, from GET /watchlists.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "epic": {
                    "type": "string",
                    "description": "Epic of the market to add."
                  }
                },
                "required": [
                  "epic"
                ]
              }
            }
          }
        },
        "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,
                  "status": "SUCCESS"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists-watchlist-id.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-watchlist-by-id"
      }
    },
    "/watchlists/{watchlistId}/{epic}": {
      "delete": {
        "operationId": "delete-watchlist-epic",
        "summary": "Take one market out of a watchlist. The watchlist and its other markets stay as they are.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day.",
        "tags": [
          "Watchlists"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/watchlists-watchlist-id-epic.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 1.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "watchlistId",
            "in": "path",
            "required": true,
            "description": "Watchlist identifier, from GET /watchlists.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "epic",
            "in": "path",
            "required": true,
            "description": "Epic of the market to remove.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "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,
                  "status": "SUCCESS"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/watchlists-watchlist-id-epic.html",
        "x-checked": "2026-10-12",
        "x-version": "1",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/delete-watchlist-epic"
      }
    },
    "/working-orders": {
      "get": {
        "operationId": "workingorders",
        "summary": "All working (pending) orders on the active account.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) calls workingorders without one, and that was the value recorded here until 12 Oct 2026. The two disagree and neither was tested against a host here, so the record is marked conflicting. The page labels the list in the reply working-orders, where the mock here keeps the workingOrders key of the earlier reading.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/working-orders.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "workingOrders": [
                    {
                      "workingOrderData": {
                        "dealId": "DIAAAAMOCK02",
                        "direction": "SELL",
                        "epic": "CS.D.GBPUSD.TODAY.IP",
                        "orderSize": 2,
                        "orderLevel": 1.355,
                        "orderType": "LIMIT",
                        "timeInForce": "GOOD_TILL_CANCELLED"
                      },
                      "marketData": {
                        "instrumentName": "GBP/USD (mock)",
                        "bid": 1.3301,
                        "offer": 1.3302
                      }
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/GetWorkingordersV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/working-orders.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/workingorders"
      }
    },
    "/working-orders/otc": {
      "post": {
        "operationId": "post-workingorders-otc",
        "summary": "Create a working order (LIMIT or STOP) that triggers at a level.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) calls workingorders/otc without one, and that was the value recorded here until 12 Oct 2026. The two disagree and neither was tested against a host here, so the record is marked conflicting. Required is recorded for the fields the page marks as not null. The page does not mark direction, type or timeInForce as not null: that describes the page, not a test of what the host accepts. The page also lists optional dealReference, forceOpen, limitLevel and stopLevel body fields, which are not recorded here.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/working-orders-otc.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "epic": {
                    "type": "string",
                    "description": "Instrument epic."
                  },
                  "direction": {
                    "type": "string",
                    "description": "BUY or SELL.",
                    "x-required-unmarked": true
                  },
                  "size": {
                    "type": "number",
                    "description": "Order size."
                  },
                  "level": {
                    "type": "number",
                    "description": "Trigger level."
                  },
                  "type": {
                    "type": "string",
                    "description": "LIMIT or STOP.",
                    "x-required-unmarked": true
                  },
                  "expiry": {
                    "type": "string",
                    "description": "DFB, a dash, or a contract month."
                  },
                  "currencyCode": {
                    "type": "string",
                    "description": "Currency code."
                  },
                  "timeInForce": {
                    "type": "string",
                    "description": "GOOD_TILL_CANCELLED or GOOD_TILL_DATE.",
                    "x-required-unmarked": true
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "Guaranteed stop flag."
                  },
                  "goodTillDate": {
                    "type": "string",
                    "description": "Expiry time when timeInForce is GOOD_TILL_DATE."
                  },
                  "stopDistance": {
                    "type": "number",
                    "description": "Stop distance."
                  },
                  "limitDistance": {
                    "type": "number",
                    "description": "Limit distance."
                  }
                },
                "required": [
                  "epic",
                  "size",
                  "level",
                  "expiry",
                  "currencyCode",
                  "guaranteedStop"
                ],
                "x-required-unmarked": [
                  "direction",
                  "type",
                  "timeInForce"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0004"
                },
                "schema": {
                  "$ref": "#/components/schemas/PostWorkingordersOtcV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/working-orders-otc.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/post-workingorders-otc"
      }
    },
    "/working-orders/otc/{dealId}": {
      "delete": {
        "operationId": "delete-workingorders-otc-by-deal-id",
        "summary": "Delete an OTC working order by its deal identifier. Returns a dealReference.",
        "description": "The method, path, version and parameters were re-read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. The mock reply is carried over from an earlier reading and was not compared field by field with the page. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated) calls workingorders/otc/{dealId} without one, and that was the value recorded here until 12 Oct 2026. The two disagree and neither was tested against a host here, so the record is marked conflicting. The page documents version 2 as a plain DELETE with the deal identifier in the path and no body; version 1 asks for an empty JSON body. The _method header was recorded as required until 12 Oct 2026. It is not on the reference page. IG's FAQ (labs.ig.com/faq.html, read the same day) says a client that cannot send a body on a DELETE can send a POST with the header _method: DELETE instead. So it is now recorded as optional.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/working-orders-otc-deal-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "_method",
            "in": "header",
            "required": false,
            "description": "Only if your HTTP client cannot send a DELETE with a body: IG's FAQ says to send a POST with this header set to DELETE. Version 2 of this call takes no body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dealId",
            "in": "path",
            "required": true,
            "description": "Working order deal ID.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. Example is mock data, not real account data.",
            "content": {
              "application/json": {
                "example": {
                  "dealReference": "MOCKREF0005"
                },
                "schema": {
                  "$ref": "#/components/schemas/DeleteWorkingordersOtcDealIdV2Response"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/working-orders-otc-deal-id.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "2",
        "x-carried": "responses",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/delete-workingorders-otc-by-deal-id"
      },
      "put": {
        "operationId": "put-working-orders-otc-by-deal-id",
        "summary": "Amend an OTC working order that has not filled: its level, type, stop, limit and expiry. Returns a dealReference to confirm, as dealing calls do.",
        "description": "The method, path, version, parameters and response fields were read on IG's own reference page on 12 Oct 2026. That page lists no request headers: the headers recorded here are the general ones in IG's REST trading API guide (labs.ig.com/rest-trading-api-guide.html), read the same day. IG's reference page prints this path with a hyphen. IG's own Java sample (RestAPI.java on GitHub, read the same day and marked deprecated since 2024) calls workingorders/otc/{dealId} without one. The two disagree and neither was tested against a host here, so the record is marked conflicting. Versions 1 and 2 list the same body fields.",
        "tags": [
          "Dealing"
        ],
        "externalDocs": {
          "description": "IG's own reference for this operation",
          "url": "https://labs.ig.com/reference/working-orders-otc-deal-id.html"
        },
        "parameters": [
          {
            "name": "VERSION",
            "in": "header",
            "required": true,
            "description": "Endpoint version. Send 2.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dealId",
            "in": "path",
            "required": true,
            "description": "Deal identifier of the working order.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "level": {
                    "type": "number",
                    "description": "The order level. The only field the page marks as not null."
                  },
                  "type": {
                    "type": "string",
                    "description": "LIMIT or STOP."
                  },
                  "timeInForce": {
                    "type": "string",
                    "description": "GOOD_TILL_CANCELLED or GOOD_TILL_DATE."
                  },
                  "goodTillDate": {
                    "type": "string",
                    "description": "Expiry for GOOD_TILL_DATE: yyyy/mm/dd hh:mm:ss in UTC, or a Unix timestamp in milliseconds."
                  },
                  "guaranteedStop": {
                    "type": "boolean",
                    "description": "True for a guaranteed stop."
                  },
                  "stopLevel": {
                    "type": "number",
                    "description": "Stop as a price level."
                  },
                  "stopDistance": {
                    "type": "number",
                    "description": "Stop as a distance."
                  },
                  "limitLevel": {
                    "type": "number",
                    "description": "Limit as a price level."
                  },
                  "limitDistance": {
                    "type": "number",
                    "description": "Limit as a distance."
                  }
                },
                "required": [
                  "level"
                ]
              }
            }
          }
        },
        "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,
                  "dealReference": "MOCKREF0002"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-IG-API-KEY": [],
            "CST": [],
            "X-SECURITY-TOKEN": []
          }
        ],
        "x-source": "https://labs.ig.com/reference/working-orders-otc-deal-id.html",
        "x-checked": "2026-10-12",
        "x-status": "conflicting",
        "x-version": "2",
        "x-page": "https://openbrokerapi.com/brokers/ig/endpoints/put-working-orders-otc-by-deal-id"
      }
    }
  },
  "components": {
    "schemas": {
      "GetAccountsV1Response": {
        "type": "object",
        "properties": {
          "accounts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string"
                },
                "accountName": {
                  "type": "string"
                },
                "accountType": {
                  "type": "string"
                },
                "currency": {
                  "type": "string"
                },
                "preferred": {
                  "type": "boolean"
                },
                "status": {
                  "type": "string"
                },
                "balance": {
                  "type": "object",
                  "properties": {
                    "balance": {
                      "type": "number"
                    },
                    "deposit": {
                      "type": "number"
                    },
                    "profitLoss": {
                      "type": "number"
                    },
                    "available": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "ErrorResponse": {
        "type": "object",
        "description": "Unverified: IG's reference at labs.ig.com/rest-trading-api-reference was refused on 19 Sep 2026, although other labs.ig.com pages opened that day. The community trading-ig client reads errors as a JSON object with an errorCode string, for example error.security.invalid-details.",
        "properties": {
          "errorCode": {
            "type": "string",
            "examples": [
              "error.security.invalid-details"
            ]
          }
        },
        "required": [
          "errorCode"
        ],
        "x-verified": false,
        "x-source": "https://raw.githubusercontent.com/ig-python/trading-ig/master/trading_ig/rest.py"
      },
      "GetConfirmsDealReferenceV1Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          },
          "dealId": {
            "type": "string"
          },
          "dealStatus": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "epic": {
            "type": "string"
          },
          "direction": {
            "type": "string"
          },
          "size": {
            "type": "number"
          },
          "level": {
            "type": "number"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetHistoryActivityV3Response": {
        "type": "object",
        "properties": {
          "activities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "epic": {
                  "type": "string"
                },
                "dealId": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                }
              }
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "paging": {
                "type": "object",
                "properties": {
                  "size": {
                    "type": "number"
                  },
                  "next": {}
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetHistoryTransactionsV2Response": {
        "type": "object",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "date": {
                  "type": "string"
                },
                "instrumentName": {
                  "type": "string"
                },
                "size": {
                  "type": "string"
                },
                "openLevel": {
                  "type": "string"
                },
                "closeLevel": {
                  "type": "string"
                },
                "profitAndLoss": {
                  "type": "string"
                },
                "transactionType": {
                  "type": "string"
                },
                "currency": {
                  "type": "string"
                }
              }
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "pageData": {
                "type": "object",
                "properties": {
                  "pageNumber": {
                    "type": "number"
                  },
                  "totalPages": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetMarketsV1Response": {
        "type": "object",
        "properties": {
          "markets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "epic": {
                  "type": "string"
                },
                "instrumentName": {
                  "type": "string"
                },
                "instrumentType": {
                  "type": "string"
                },
                "expiry": {
                  "type": "string"
                },
                "bid": {
                  "type": "number"
                },
                "offer": {
                  "type": "number"
                },
                "marketStatus": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetMarketsEpicV3Response": {
        "type": "object",
        "properties": {
          "instrument": {
            "type": "object",
            "properties": {
              "epic": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "type": {
                "type": "string"
              },
              "currencies": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "dealingRules": {
            "type": "object",
            "properties": {
              "minDealSize": {
                "type": "object",
                "properties": {
                  "unit": {
                    "type": "string"
                  },
                  "value": {
                    "type": "number"
                  }
                }
              }
            }
          },
          "snapshot": {
            "type": "object",
            "properties": {
              "marketStatus": {
                "type": "string"
              },
              "bid": {
                "type": "number"
              },
              "offer": {
                "type": "number"
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetPositionsV2Response": {
        "type": "object",
        "properties": {
          "positions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "position": {
                  "type": "object",
                  "properties": {
                    "contractSize": {
                      "type": "number",
                      "description": "Size of the contract"
                    },
                    "createdDate": {
                      "type": "string",
                      "description": "Local date the position was opened"
                    },
                    "createdDateUTC": {
                      "type": "string",
                      "description": "Date the position was opened"
                    },
                    "dealId": {
                      "type": "string",
                      "description": "Deal identifier"
                    },
                    "size": {
                      "type": "number",
                      "description": "Deal size"
                    },
                    "direction": {
                      "type": "string",
                      "description": "Deal direction",
                      "enum": [
                        "BUY",
                        "SELL"
                      ]
                    },
                    "limitLevel": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Limit level"
                    },
                    "level": {
                      "type": "number",
                      "description": "Level at which the position was opened"
                    },
                    "currency": {
                      "type": "string",
                      "description": "Position currency ISO code"
                    },
                    "controlledRisk": {
                      "type": "boolean",
                      "description": "True if position is risk controlled"
                    },
                    "stopLevel": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Stop level"
                    },
                    "trailingStep": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Trailing step size"
                    },
                    "trailingStopDistance": {
                      "type": [
                        "number",
                        "null"
                      ],
                      "description": "Trailing stop distance"
                    }
                  },
                  "x-source": "https://github.com/IG-Group/ig-webapi-java-sample/tree/master/ig-webapi-java-client/src/main/java/com/iggroup/webapi/samples/client/rest/dto/positions/getPositionsV2/Position.java",
                  "description": "The deal as opened, with its current stop and limit."
                },
                "market": {
                  "type": "object",
                  "properties": {
                    "instrumentName": {
                      "type": "string",
                      "description": "Instrument name"
                    },
                    "expiry": {
                      "type": "string",
                      "description": "Instrument expiry period"
                    },
                    "epic": {
                      "type": "string",
                      "description": "Instrument epic identifier"
                    },
                    "instrumentType": {
                      "type": "string",
                      "description": "Instrument type",
                      "enum": [
                        "BINARY",
                        "BUNGEE_CAPPED",
                        "BUNGEE_COMMODITIES",
                        "BUNGEE_CURRENCIES",
                        "BUNGEE_INDICES",
                        "COMMODITIES",
                        "CURRENCIES",
                        "INDICES",
                        "OPT_COMMODITIES",
                        "OPT_CURRENCIES",
                        "OPT_INDICES",
                        "OPT_RATES",
                        "OPT_SHARES",
                        "RATES",
                        "SECTORS",
                        "SHARES",
                        "SPRINT_MARKET",
                        "TEST_MARKET",
                        "UNKNOWN"
                      ]
                    },
                    "lotSize": {
                      "type": "number",
                      "description": "Instrument lot size"
                    },
                    "high": {
                      "type": "number",
                      "description": "High price"
                    },
                    "low": {
                      "type": "number",
                      "description": "Low price"
                    },
                    "percentageChange": {
                      "type": "number",
                      "description": "Price percentage change"
                    },
                    "netChange": {
                      "type": "number",
                      "description": "Price net change"
                    },
                    "bid": {
                      "type": "number",
                      "description": "Bid"
                    },
                    "offer": {
                      "type": "number",
                      "description": "Offer"
                    },
                    "updateTime": {
                      "type": "string",
                      "description": "Local time of last instrument price update"
                    },
                    "updateTimeUTC": {
                      "type": "string",
                      "description": "Time of last instrument price update"
                    },
                    "delayTime": {
                      "type": "integer",
                      "description": "Instrument price delay (minutes)"
                    },
                    "streamingPricesAvailable": {
                      "type": "boolean",
                      "description": "True if streaming prices are available, i.e. the market is tradeable and the client has appropriate permissions"
                    },
                    "marketStatus": {
                      "type": "string",
                      "description": "Market status",
                      "enum": [
                        "CLOSED",
                        "EDITS_ONLY",
                        "OFFLINE",
                        "ON_AUCTION",
                        "ON_AUCTION_NO_EDITS",
                        "SUSPENDED",
                        "TRADEABLE"
                      ]
                    },
                    "scalingFactor": {
                      "type": "integer",
                      "description": "Multiplying factor to determine actual pip value for the levels used by the instrument"
                    }
                  },
                  "x-source": "https://github.com/IG-Group/ig-webapi-java-sample/tree/master/ig-webapi-java-client/src/main/java/com/iggroup/webapi/samples/client/rest/dto/positions/getPositionsV2/Market.java",
                  "description": "A snapshot of the position's market when the call was answered."
                }
              },
              "x-source": "https://github.com/IG-Group/ig-webapi-java-sample/tree/master/ig-webapi-java-client/src/main/java/com/iggroup/webapi/samples/client/rest/dto/positions/getPositionsV2/PositionsItem.java",
              "description": "One open position: the deal and its market."
            },
            "description": "One entry per open position on the active account."
          }
        },
        "description": "Fields and descriptions from IG-Group's official Java sample DTOs (rest/dto/positions/getPositionsV2: Position.java and Market.java), read 2026-09-22. Java Float and BigDecimal are shown as number; nullable levels are marked. Not re-read from labs.ig.com, which refuses our fetcher.",
        "x-source": "https://github.com/IG-Group/ig-webapi-java-sample/tree/master/ig-webapi-java-client/src/main/java/com/iggroup/webapi/samples/client/rest/dto/positions/getPositionsV2",
        "x-checked": "2026-09-22"
      },
      "GetPositionsDealIdV2Response": {
        "type": "object",
        "properties": {
          "position": {
            "type": "object",
            "properties": {
              "dealId": {
                "type": "string"
              },
              "direction": {
                "type": "string"
              },
              "size": {
                "type": "number"
              },
              "level": {
                "type": "number"
              }
            }
          },
          "market": {
            "type": "object",
            "properties": {
              "epic": {
                "type": "string"
              },
              "bid": {
                "type": "number"
              },
              "offer": {
                "type": "number"
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "DeletePositionsOtcV1Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "PostPositionsOtcV2Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "PutPositionsOtcDealIdV2Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetPricesEpicV3Response": {
        "type": "object",
        "properties": {
          "prices": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "snapshotTimeUTC": {
                  "type": "string"
                },
                "openPrice": {
                  "type": "object",
                  "properties": {
                    "bid": {
                      "type": "number"
                    },
                    "ask": {
                      "type": "number"
                    }
                  }
                },
                "closePrice": {
                  "type": "object",
                  "properties": {
                    "bid": {
                      "type": "number"
                    },
                    "ask": {
                      "type": "number"
                    }
                  }
                },
                "highPrice": {
                  "type": "object",
                  "properties": {
                    "bid": {
                      "type": "number"
                    },
                    "ask": {
                      "type": "number"
                    }
                  }
                },
                "lowPrice": {
                  "type": "object",
                  "properties": {
                    "bid": {
                      "type": "number"
                    },
                    "ask": {
                      "type": "number"
                    }
                  }
                },
                "lastTradedVolume": {
                  "type": "number"
                }
              }
            }
          },
          "metadata": {
            "type": "object",
            "properties": {
              "allowance": {
                "type": "object",
                "properties": {
                  "remainingAllowance": {
                    "type": "number"
                  },
                  "totalAllowance": {
                    "type": "number"
                  }
                }
              },
              "pageData": {
                "type": "object",
                "properties": {
                  "pageNumber": {
                    "type": "number"
                  },
                  "totalPages": {
                    "type": "number"
                  }
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetSessionV1Response": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "string"
          },
          "accountId": {
            "type": "string"
          },
          "timezoneOffset": {
            "type": "number"
          },
          "locale": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "lightstreamerEndpoint": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "PostSessionV2Response": {
        "type": "object",
        "properties": {
          "accountType": {
            "type": "string"
          },
          "currencyIsoCode": {
            "type": "string"
          },
          "currentAccountId": {
            "type": "string"
          },
          "lightstreamerEndpoint": {
            "type": "string"
          },
          "clientId": {
            "type": "string"
          },
          "timezoneOffset": {
            "type": "number"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetWatchlistsV1Response": {
        "type": "object",
        "properties": {
          "watchlists": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "editable": {
                  "type": "boolean"
                },
                "deleteable": {
                  "type": "boolean"
                },
                "defaultSystemWatchlist": {
                  "type": "boolean"
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "GetWorkingordersV2Response": {
        "type": "object",
        "properties": {
          "workingOrders": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "workingOrderData": {
                  "type": "object",
                  "properties": {
                    "dealId": {
                      "type": "string"
                    },
                    "direction": {
                      "type": "string"
                    },
                    "epic": {
                      "type": "string"
                    },
                    "orderSize": {
                      "type": "number"
                    },
                    "orderLevel": {
                      "type": "number"
                    },
                    "orderType": {
                      "type": "string"
                    },
                    "timeInForce": {
                      "type": "string"
                    }
                  }
                },
                "marketData": {
                  "type": "object",
                  "properties": {
                    "instrumentName": {
                      "type": "string"
                    },
                    "bid": {
                      "type": "number"
                    },
                    "offer": {
                      "type": "number"
                    }
                  }
                }
              }
            }
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "PostWorkingordersOtcV2Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      },
      "DeleteWorkingordersOtcDealIdV2Response": {
        "type": "object",
        "properties": {
          "dealReference": {
            "type": "string"
          }
        },
        "description": "Fields as documented; types inferred from our mock example.",
        "x-verified": false,
        "x-checked": "2026-10-04",
        "x-source-note": "No vendor source. labs.ig.com was unreadable on 4 Oct 2026: its robots.txt answered HTTP 500 and the fetcher treats that as a blanket disallow, so the per endpoint reference pages could not be opened. The fields here are this site's reading. IG publishes no machine readable specification."
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Unverified. Bad request: a missing or malformed field. Body shape from the community trading-ig client.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "x-verified": false,
        "x-source": "https://raw.githubusercontent.com/ig-python/trading-ig/master/trading_ig/rest.py"
      },
      "Unauthorized": {
        "description": "Unverified. Unauthorised: wrong credentials (error.security.invalid-details) or an expired session. IG may also return an exceeded allowance error with 401.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "x-verified": false,
        "x-source": "https://trading-ig.readthedocs.io/en/latest/faq.html"
      },
      "Forbidden": {
        "description": "Unverified. Forbidden: invalid API key (error.security.api-key-invalid) or an exceeded allowance such as error.public-api.exceeded-account-allowance. IG signals rate limits with 403 or 401, not 429, according to the trading-ig FAQ.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "x-verified": false,
        "x-source": "https://trading-ig.readthedocs.io/en/latest/faq.html"
      },
      "NotFound": {
        "description": "Unverified. Not found: the deal, epic or reference does not exist. Status and body not confirmed from an IG source.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "x-verified": false,
        "x-source": "https://raw.githubusercontent.com/ig-python/trading-ig/master/trading_ig/rest.py"
      }
    },
    "securitySchemes": {
      "X-IG-API-KEY": {
        "type": "apiKey",
        "in": "header",
        "name": "X-IG-API-KEY",
        "description": "A header the IG endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      },
      "CST": {
        "type": "apiKey",
        "in": "header",
        "name": "CST",
        "description": "A header the IG endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      },
      "X-SECURITY-TOKEN": {
        "type": "apiKey",
        "in": "header",
        "name": "X-SECURITY-TOKEN",
        "description": "A header the IG endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      }
    }
  }
}