{
  "openapi": "3.1.0",
  "info": {
    "title": "Deriv API (independent, unofficial description by Broker API Hub)",
    "version": "2026-10-12",
    "description": "An independent, unofficial description of the Deriv API, built by Broker API Hub from Deriv's public documentation. It is not Deriv's own specification, and Broker API Hub is not affiliated with or endorsed by Deriv.\n\nIt is generated from 5 endpoint records. Every operation carries x-source, the page it was read on, and x-checked, the date that page was last checked. No operation here is recorded as conflicting or unverified. An operation this file does not list is not recorded here, which is not evidence that it does not exist.\n\nSecurity schemes are only the authentication headers the endpoint records list. How a credential is obtained and how long it lasts is on https://openbrokerapi.com/brokers/deriv.\n\nResponse schemas: none is recorded.\n\n2 operations carry a mock reply as an example under the default response. Its values are invented.\n\nWhere this file and Deriv'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, Deriv API OpenAPI description, openbrokerapi.com/specs/deriv.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/deriv",
    "x-base-addresses": {
      "rest": "https://api.derivws.com"
    },
    "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": "Deriv's own documentation",
    "url": "https://developers.deriv.com/docs/limits"
  },
  "servers": [
    {
      "url": "https://api.derivws.com",
      "description": "Recorded on the Deriv record as \"rest\"."
    }
  ],
  "tags": [
    {
      "name": "Accounts"
    },
    {
      "name": "General"
    },
    {
      "name": "Session"
    }
  ],
  "paths": {
    "/trading/v1/options/accounts": {
      "get": {
        "operationId": "accounts",
        "summary": "Lists your Options trading accounts, each with its ID, balance, currency, status and whether it is demo or real.",
        "description": "Read on Deriv's own documentation page on 12 Oct 2026: method, path, headers, parameters and response fields. Deriv lists the scope needed as trade. The page marks Deriv-App-ID as required in its table and says in the same row that OAuth bearer tokens do not need it, so it is recorded as optional. Deriv's limits page (developers.deriv.com/docs/limits/), read the same day, gives the REST limits as 80 requests a minute for a logged-in user, and 300 requests a minute and 1,000 requests in 10 minutes for an IP address. This note first gave 60 requests per minute per token from Deriv's API overview: on a second reading on 12 Oct 2026 the overview shows no such figure, so it is withdrawn. Deriv's trading and market data calls run over WebSocket, not HTTP, so they have no method and path and are not recorded as endpoints here.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "Deriv's own reference for this operation",
          "url": "https://developers.deriv.com/llms/get-accounts.md"
        },
        "parameters": [
          {
            "name": "Deriv-App-ID",
            "in": "header",
            "required": false,
            "description": "Your application identifier. Deriv says it is required when you authenticate with a personal access token and not when you use an OAuth bearer token.",
            "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,
                  "data": [
                    {
                      "account_id": "MOCK-ACC-01",
                      "balance": 10000,
                      "currency": "USD",
                      "group": "row",
                      "status": "active",
                      "account_type": "demo"
                    }
                  ],
                  "meta": {
                    "endpoint": "/trading/v1/options/accounts",
                    "method": "GET"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://developers.deriv.com/llms/get-accounts.md",
        "x-checked": "2026-10-12",
        "x-version": "v1",
        "x-page": "https://openbrokerapi.com/brokers/deriv/endpoints/accounts"
      },
      "post": {
        "operationId": "post-accounts",
        "summary": "Creates an Options trading account, demo or real. If an identical account already exists Deriv returns it with a 200 in place of a 201.",
        "description": "Read on Deriv's own documentation page on 12 Oct 2026: method, path, headers, parameters and response fields. Deriv lists the scope needed as account_manage. The response fields were not read, so no mock is shown. Deriv's limits page (developers.deriv.com/docs/limits/), read the same day, gives the REST limits as 80 requests a minute for a logged-in user, and 300 requests a minute and 1,000 requests in 10 minutes for an IP address. This note first gave 60 requests per minute per token from Deriv's API overview: on a second reading on 12 Oct 2026 the overview shows no such figure, so it is withdrawn.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "Deriv's own reference for this operation",
          "url": "https://developers.deriv.com/llms/create-account.md"
        },
        "parameters": [
          {
            "name": "Deriv-App-ID",
            "in": "header",
            "required": false,
            "description": "Your application identifier. Deriv says it is required when you authenticate with a personal access token and not when you use an OAuth bearer token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Send application/json.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "description": "Account currency. The one value listed is USD."
                  },
                  "group": {
                    "type": "string",
                    "description": "Account group. The one value listed is row."
                  },
                  "account_type": {
                    "type": "string",
                    "description": "demo or real."
                  }
                },
                "required": [
                  "currency",
                  "group",
                  "account_type"
                ]
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://developers.deriv.com/llms/create-account.md",
        "x-checked": "2026-10-12",
        "x-version": "v1",
        "x-page": "https://openbrokerapi.com/brokers/deriv/endpoints/post-accounts"
      }
    },
    "/trading/v1/options/accounts/{account_id}/reset-demo-balance": {
      "post": {
        "operationId": "post-account-reset-demo-balance",
        "summary": "Resets the balance of an Options trading demo account. Demo only: it moves no real money.",
        "description": "Read on Deriv's own documentation page on 12 Oct 2026: method, path, headers, parameters and response fields. Deriv lists the scope needed as trade. The page documents no request body and its response section is empty, so no mock is shown. Deriv's limits page (developers.deriv.com/docs/limits/), read the same day, gives the REST limits as 80 requests a minute for a logged-in user, and 300 requests a minute and 1,000 requests in 10 minutes for an IP address. This note first gave 60 requests per minute per token from Deriv's API overview: on a second reading on 12 Oct 2026 the overview shows no such figure, so it is withdrawn.",
        "tags": [
          "Accounts"
        ],
        "externalDocs": {
          "description": "Deriv's own reference for this operation",
          "url": "https://developers.deriv.com/llms/reset-demo-balance.md"
        },
        "parameters": [
          {
            "name": "Deriv-App-ID",
            "in": "header",
            "required": false,
            "description": "Your application identifier. Deriv says it is required when you authenticate with a personal access token and not when you use an OAuth bearer token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Send application/json.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "ID of the demo account.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://developers.deriv.com/llms/reset-demo-balance.md",
        "x-checked": "2026-10-12",
        "x-version": "v1",
        "x-page": "https://openbrokerapi.com/brokers/deriv/endpoints/post-account-reset-demo-balance"
      }
    },
    "/trading/v1/options/accounts/{accountId}/otp": {
      "post": {
        "operationId": "post-account-otp",
        "summary": "Exchanges your bearer token for a one time WebSocket URL for one trading account. You then connect to that URL to trade: this is the step between logging in and the WebSocket.",
        "description": "Read on Deriv's own documentation page on 12 Oct 2026: method, path, headers, parameters and response fields. Deriv lists the scope needed as trade. The URL returned points at the real or the demo WebSocket gateway according to the account. Deriv's limits page (developers.deriv.com/docs/limits/), read the same day, gives the REST limits as 80 requests a minute for a logged-in user, and 300 requests a minute and 1,000 requests in 10 minutes for an IP address. This note first gave 60 requests per minute per token from Deriv's API overview: on a second reading on 12 Oct 2026 the overview shows no such figure, so it is withdrawn. Deriv's trading and market data calls run over WebSocket, not HTTP, so they have no method and path and are not recorded as endpoints here.",
        "tags": [
          "Session"
        ],
        "externalDocs": {
          "description": "Deriv's own reference for this operation",
          "url": "https://developers.deriv.com/llms/websocket.md"
        },
        "parameters": [
          {
            "name": "Deriv-App-ID",
            "in": "header",
            "required": false,
            "description": "Your application identifier. Deriv says it is required when you authenticate with a personal access token and not when you use an OAuth bearer token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "description": "ID of the Options trading account the URL is for.",
            "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,
                  "data": {
                    "url": "wss://api.derivws.com/trading/v1/options/ws/demo?otp=MOCK"
                  },
                  "meta": {
                    "endpoint": "/trading/v1/options/accounts/MOCK-ACC-01/otp",
                    "method": "POST"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ],
        "x-source": "https://developers.deriv.com/llms/websocket.md",
        "x-checked": "2026-10-12",
        "x-version": "v1",
        "x-page": "https://openbrokerapi.com/brokers/deriv/endpoints/post-account-otp"
      }
    },
    "/v1/health": {
      "get": {
        "operationId": "health",
        "summary": "A health check on the REST gateway. Deriv says it needs no authentication, no parameters and no body.",
        "description": "Read on Deriv's own documentation page on 12 Oct 2026: method, path, headers, parameters and response fields. The response fields were not read, so no mock is shown. Deriv's trading and market data calls run over WebSocket, not HTTP, so they have no method and path and are not recorded as endpoints here.",
        "tags": [
          "General"
        ],
        "externalDocs": {
          "description": "Deriv's own reference for this operation",
          "url": "https://developers.deriv.com/llms/health.md"
        },
        "x-source": "https://developers.deriv.com/llms/health.md",
        "x-checked": "2026-10-12",
        "x-version": "v1",
        "x-page": "https://openbrokerapi.com/brokers/deriv/endpoints/health"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Authorization": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "A header the Deriv endpoint records list on requests. Read its value from your own environment. Never paste it into a web page or a chat."
      }
    }
  }
}