For the complete documentation index, see llms.txt. This page is also available as Markdown.

V1

This directory documents the registered OpenAlgo v1 REST API and the separate WebSocket protocol. The source of truth for REST registration is restx_api/__init__.py; request validation is defined in restx_api/schemas.py, restx_api/data_schemas.py, and restx_api/account_schema.py.

Base URLs

REST API:  http://127.0.0.1:5000/api/v1
WebSocket: ws://127.0.0.1:8765

Replace the local host with the configured HTTPS/WSS domain in a remote deployment.

Authentication

Most POST endpoints accept the OpenAlgo API key as apikey in a JSON object. GET endpoints accept it as the apikey query parameter. Telegram and WhatsApp management endpoints may also accept X-API-KEY; the Telegram webhook authenticates with X-Telegram-Bot-Api-Secret-Token instead of an OpenAlgo key.

{
  "apikey": "<your_app_apikey>"
}

Never put broker credentials or broker access tokens in these requests. The OpenAlgo API key resolves the active broker session server-side.

Registered REST Inventory

The current v1 surface contains 57 method/path pairs. A resource with both GET and POST counts as two endpoints.

Order Management

Method
Path
Documentation

POST

/placeorder

POST

/placesmartorder

POST

/optionsorder

POST

/optionsmultiorder

POST

/basketorder

POST

/splitorder

POST

/modifyorder

POST

/cancelorder

POST

/cancelallorder

POST

/closeposition

POST

/placegttorder

POST

/modifygttorder

POST

/cancelgttorder

POST

/gttorderbook

Order And Account Information

Method
Path
Documentation

POST

/orderstatus

POST

/openposition

POST

/funds

POST

/margin

POST

/orderbook

POST

/tradebook

POST

/positionbook

POST

/holdings

Market Data And Symbols

Method
Path
Documentation

POST

/quotes

POST

/multiquotes

POST

/depth

POST

/history

POST

/intervals

GET

/ticker/<string:symbol>

POST

/search

POST

/expiry

GET

/instruments

Options Analytics

Method
Path
Documentation

POST

/optionsymbol

POST

/optionchain

POST

/syntheticfuture

POST

/optiongreeks

POST

/multioptiongreeks

Calendar, Analyzer, And Preferences

Method
Path
Documentation

POST

/market/holidays

POST

/market/timings

POST

/analyzer

POST

/analyzer/toggle

POST

/pnl/symbols

There is no public /api/v1/checkholiday endpoint. Use /market/timings for a date; its response identifies holiday/closed sessions through the returned market schedule.

Messaging

Method
Path
Documentation

GET, POST

/telegram/config

POST

/telegram/start

POST

/telegram/stop

POST

/telegram/webhook

GET

/telegram/users

POST

/telegram/broadcast

POST

/telegram/notify

GET

/telegram/stats

GET, POST

/telegram/preferences

POST

/whatsapp/notify

The Telegram resource contributes 11 method/path pairs. Its webhook acknowledges validated updates but does not yet dispatch them, and the REST broadcast handler currently returns zero delivery counts. Those limitations are documented on the Telegram page.

WebSocket Protocol

WebSocket streaming is not mounted below /api/v1. Clients connect to the proxy on port 8765, authenticate, and send action messages.

Supported actions are authenticate, subscribe, unsubscribe, unsubscribe_all, get_broker_info, get_supported_brokers, and ping.

Order Constants

Exchanges

NSE, BSE, NFO, BFO, CDS, BCD, MCX, NCDEX, NCO, NSE_INDEX, BSE_INDEX, MCX_INDEX, GLOBAL_INDEX, and CRYPTO are recognized by the shared validation constants. Broker capability metadata determines which subset is usable for the active broker.

Products And Price Types

Kind
Values

Product

MIS, CNC, NRML

Price type

MARKET, LIMIT, SL, SL-M

Action

BUY, SELL (lowercase is normalized by order schemas)

Regular order, smart-order, basket, split, and modify schemas accept numeric quantities. Fractional quantities are allowed only for CRYPTO; non-crypto quantities must be whole numbers. Options order quantities remain positive integers.

Response And Status Conventions

Most JSON resources return status: "success" or status: "error", but broker payloads are normalized only at the wrapper level and some resources intentionally return CSV, plain text, or an empty webhook acknowledgement. Treat each endpoint page as authoritative for its payload.

Common status codes are:

Code
Meaning

200

Request handled successfully

400

Invalid JSON, schema validation failure, unsupported mode, or invalid request state

401

Missing or invalid authentication on endpoints that use 401

403

Invalid API key or operation blocked by mode/policy

404

Broker module, symbol, order, or linked messaging user not found

429

Flask-Limiter rejected the request

500

Unhandled internal or broker error

Rate Limits

Defaults from .sample.env are API_RATE_LIMIT="50 per second", ORDER_RATE_LIMIT="10 per second", and SMART_ORDER_RATE_LIMIT="10 per second". Some messaging endpoints use their own limiter. All values are deployment configuration and may contain compound semicolon-separated limits. See rate limiting.

Client Libraries

The Python client is available as openalgo and is pinned by this application at 2.0.2. Go and Node.js examples in examples/ demonstrate direct REST integration; they are not declared here as separately versioned official SDK releases.

Last updated