Introduction
The Breeze API is a powerful API through which you can fetch live/historical data, automate your trading strategies, and monitor your portfolio in real time.
An AppKey and secret_key pair is issued that allows you to connect to the server. You have to register a redirect url where you will be sent after the login.
Breeze API is designed to accept 100 API calls per minute and 5000 API calls per day.
All inputs are form-encoded parameters and responses are in the form of JSON. The success and the error states are indicated by standard HTTP codes and are accompanied by JSON data.
| Asset Class | NSE | 
|---|---|
| Equity | Yes | 
| Equity Futures | Yes | 
| Equity Options | Yes | 
Currently, securities listed on BSE and MCX are not available on Breeze API.
Learning Hub
YouTube Playlist: https://www.youtube.com/playlist?list=PLI9bulJO9v7aJ2x_YvchqhPuUkI6O1_z5
GitHub webinar sample codes: Click Here.
For any queries regarding Breeze API email to breezeapi@icicisecurities.com
How To Navigate
The documentation specifies various API endpoints which can be used to perform many functions as stated below.
In this documentation, you will find about the following:
- The computation of the checksum
- Sending the common request headers
- API Parameters, its data type and description
- Language specific guides
- Sample JSON Response
Checksum Computation & Login
Registration
Authentication is done following the OAuth2.0 protocol. It ensures that all the fields in the request are safe from tampering.
Visit the Breeze API portal to register an app by providing the following information:
- App Name
- Redirect URL : https://127.0.0.1
After the app is successfully registered, you will get the AppKey and secret_key pair. These keys will be unique to the app registered. The AppKey is the identity of the app for the API system and secret_key is used to encrypt messages sent to the API system by the client system.
All requests must contain:
- App Key
- Secret Key
- Session Token
- Checksum
- Timestamp
Checksum Computation
- Checksum is computed via SHA256 hash (Time Stamp + JSON Post Data + secret_key)
- All JSON Data should be stringified before sending it to the I-Direct system.
Login
Navigate to the Breeze API Login with your URL-encoded AppKey to initiate the login flow. https://api.icicidirect.com/apiuser/login?api_key=AppKey
YouTube Link:
https://youtu.be/BE877n6TURM?si=1wrcnpxUe7S_a101
Upon successful login you will have an API_Session in the address bar. Use this API_Session value against key named SessionToken in the CustomerDetails API to obtain a session_token value, which is then used as SessionToken for signing all subsequent requests.
Request Headers
| Key | Value | Description | 
|---|---|---|
| X-Checksum | -- | Token followed by combination of ((ISO8601 UTC DateTime Format with 0 milliseconds) + JSONPostData + secret_key ) | 
| X-Timestamp | 2024-06-01T10:23:56.000Z | ISO8601 UTC DateTime Format with 0 milliseconds | 
| X-AppKey | -- | AppKey which is received during registration | 
| X-SessionToken | -- | SessionToken value is received in CustomerDetails API | 
Errors
Exceptions and Errors
The API server generates name of the exception for error responses. While writing your code, you can raise corresponding exceptions after defining them in your language/library. The table below shows the list of exceptions and common error codes.
| Error Code | Error Type | 
|---|---|
| 400 | Bad Request | 
| 401 | Unauthorized | 
| 403 | Forbidden | 
| 404 | Non Found | 
| 408 | Request Timeout | 
| 200 | OK | 
Instruments
You can download the Security Master file for token mapping at your end here. It is generated/updated daily at 8:00 AM.
CustomerDetails
CustomerDetails
YouTube Link:
https://youtu.be/BE877n6TURM?si=1wrcnpxUe7S_a101
var axios = require('axios');
var data = JSON.stringify({
    "SessionToken": "58593",
    "AppKey": "8g791^N029R47I831B8153=^O2f#7u8g"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/customerdetails',
    headers: { 
        'Content-Type': 'application/json'
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
payload = json.dumps({
  "SessionToken": "Your Session_token goes here",
  "AppKey": "Your App_Key goes here"
})
headers = {
  'Content-Type': 'application/json',
}
response = requests.request("GET", url, headers=headers, data=payload)
data = json.loads(response.text)
print(data)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/customerdetails")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/customerdetails");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "\n" +
@"    ""SessionToken"": ""58593"",
" + "\n" +
@"    ""AppKey"": ""8g791^N029R47I831B8153=^O2f#7u8g""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{
    "Success": {
        "exg_trade_date": {
            "NSE": "17-Apr-2025",
            "BSE": "17-Apr-2025",
            "FNO": "17-Apr-2025",
            "NDX": "17-Apr-2025"
        },
        "exg_status": {
            "NSE": "O",
            "BSE": "O",
            "FNO": "Y",
            "NDX": "O"
        },
        "segments_allowed": {
            "Trading": "Y",
            "Equity": "Y",
            "Derivatives": "Y",
            "Currency": "Z"
        },
        "idirect_userid": "379XTZ300",
        "session_token": "QUgzNzkzMDA6NDUwNTM0MjI=",
        "idirect_user_name": "JOHN SMITH",
        "idirect_ORD_TYP": "N",
        "idirect_lastlogin_time": "17-Apr-2025 11:50:42",
        "mf_holding_mode_popup_flg": "N",
        "commodity_exchange_status": "N",
        "commodity_trade_date": "17-Apr-2025",
        "commodity_allowed": "O"
    },
    "Status": 200,
    "Error": null
}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/customerdetails | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| SessionToken | String | SessionKey is received after logging into the breeze website | Yes | 
| AppKey | String | AppKey is received during registration | Yes | 
DematHoldings
GetDematHoldings
var axios = require('axios');
var data = JSON.stringify({});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/dematholdings',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/dematholdings"
payload = json.dumps({})
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/dematholdings")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/dematholdings");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
  [{'stock_code': 'UNITEC',
  'stock_ISIN': 'INE694A01020',
  'quantity': '1',
  'demat_total_bulk_quantity': '1',
  'demat_avail_quantity': '0',
  'blocked_quantity': '0',
  'demat_allocated_quantity': '1'
  }],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/dematholdings | 
Body Parameters
Note: Demat Holdings API does not require body parameters
Funds
GetFunds
var axios = require('axios');
var data = JSON.stringify({});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/funds',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/funds"
payload = json.dumps({})
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/funds")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/funds");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
  {'bank_account': '123456789012',
  'total_bank_balance': 800000000.0,
  'allocated_equity': 200000000.0,
  'allocated_fno': 200000000.0,
  'allocated_commodity': 200000000.0,
  'allocated_currency': 200000000.0,
  'block_by_trade_equity': 0.0,
  'block_by_trade_fno': 12500000.53,
  'block_by_trade_commodity': 0.0,
  'block_by_trade_currency': 0.0,
  'block_by_trade_balance': 15500000,
  'unallocated_balance': '87500000'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/funds | 
Body Parameters
Note: Get Funds API does not require body parameters
SetFunds
var axios = require('axios');
var data = JSON.stringify({
    "transaction_type": "Credit",
    "amount": "10000",
    "segment": "FNO"
});
var config = {
    method: 'post',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/funds',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here",
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/funds"
payload = json.dumps({
  "transaction_type": "credit",
  "amount": "200",
  "segment": "Equity"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"transaction_type\": \"Credit\",\r\n    \"amount\": \"10000\",\r\n    \"segment\": \"FNO\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/funds")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/funds");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""transaction_type"": ""Credit"",
" + "\n" +
@"    ""amount"": ""10000"",
" + "\n" +
@"    ""segment"": ""FNO""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{
    "Success": {
        "status": "Success"
    },
    "Status": 200,
    "Error": null
}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/funds | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| transaction_type | String | "Debit", "Credit" | Yes | 
| amount | String | Numeric String of strike price | Yes | 
| segment | String | "Equity", "FNO" | Yes | 
HistoricalCharts
GetHistoricalChartsList
var axios = require('axios');
var data = JSON.stringify({
    "interval": "day",
    "from_date": "2022-05-02T07:00:00.000Z",
    "to_date": "2022-05-03T07:00:00.000Z",
    "stock_code": "ITC",
    "exchange_code": "NSE",
    "product_type": "Cash"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/historicalcharts',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/historicalcharts"
payload = json.dumps({
    "interval": "day",
    "from_date": "2025-02-03T09:20:00.000Z",
    "to_date": "2025-02-03T09:20:00.000Z",
    "stock_code": "ITC",
    "exchange_code": "NSE",
    "product_type": "Cash"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/historicalcharts")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/historicalcharts");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""interval"": ""day"",
" + "\n" +
@"    ""from_date"": ""2022-05-02T07:00:00.000Z"",
" + "\n" +
@"    ""to_date"": ""2022-05-03T07:00:00.000Z"",
" + "\n" +
@"    ""stock_code"": ""ITC"",
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""product_type"": ""Cash""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [
  {'datetime': '2025-02-03 09:21:00',
 'stock_code': 'RELIND',
 'exchange_code': 'NSE',
 'product_type': None,
 'expiry_date': None,
 'right': None,
 'strike_price': None,
 'open': '1249.85',
 'high': '1250.75',
 'low': '1248.95',
 'close': '1249.95',
 'volume': '1951',
 'open_interest': None,
 'count': 7},
{'datetime': '2025-02-03 09:22:00',
 'stock_code': 'RELIND',
 'exchange_code': 'NSE',
 'product_type': None,
 'expiry_date': None,
 'right': None,
 'strike_price': None,
 'open': '1249.75',
 'high': '1250.5',
 'low': '1247.95',
 'close': '1249',
 'volume': '1810',
 'open_interest': None,
 'count': 8}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/historicalcharts | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| interval | String | "1minute","5minute","30minute","1day" | Yes | 
| from_date | String | ISO 8601 | Yes | 
| to_date | String | ISO 8601 | Yes | 
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| exchange_code | String | "NSE", "NFO" | Yes | 
| product_type | String | "futures","options","cash" | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric String of strike price | Yes | 
Note: For product_type cash,btst and margin; the expiry_date, right and strike_price are optional.
Margin Calculator
margin calculator
var axios = require('axios');
var data = JSON.stringify({
    "list_of_positions": [
        {
            "strike_price": "0",
            "quantity": "15",
            "right": "others",
            "product": "futures",
            "action": "buy",
            "price": "46230.85",
            "expiry_date": "31-Aug-2023",
            "stock_code": "CNXBAN",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "37000",
            "quantity": "15",
            "right": "Call",
            "product": "options",
            "action": "buy",
            "price": "9100",
            "expiry_date": "27-Jul-2023",
            "stock_code": "CNXBAN",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "0",
            "quantity": "50",
            "right": "others",
            "product": "futureplus",
            "action": "buy",
            "price": "19800",
            "expiry_date": "27-Jul-2023",
            "stock_code": "NIFTY",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "19600",
            "quantity": "50",
            "right": "call",
            "product": "optionplus",
            "action": "buy",
            "price": "245.05",
            "expiry_date": "27-Jul-2023",
            "stock_code": "NIFTY",
            "cover_order_flow": "sell",
            "fresh_order_type": "limit",
            "cover_limit_rate": "180.00",
            "cover_sltp_price": "200.00",
            "fresh_limit_rate": "245.05",
            "open_quantity": "50"
        }
    ],
    "exchange_code": "NFO"
});
var config = {
    method: 'post',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/margincalculator',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/margincalculator"
payload = json.dumps({
    "list_of_positions":[{
            "strike_price": "0",
            "quantity": "30",
            "right": "others",
            "product": "futures",
            "action": "buy",
            "price": "49500",
            "expiry_date": "27-Feb-2025",
            "stock_code": "CNXBAN",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "50000",
            "quantity": "30",
            "right": "Call",
            "product": "options",
            "action": "buy",
            "price": "1150",
            "expiry_date": "27-Feb-2025",
            "stock_code": "CNXBAN",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "0",
            "quantity": "75",
            "right": "others",
            "product": "futures",
            "action": "buy",
            "price": "23400",
            "expiry_date": "27-Feb-2025",
            "stock_code": "NIFTY",
            "cover_order_flow": "N",
            "fresh_order_type": "N",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        },
        {
            "strike_price": "23400",
            "quantity": "75",
            "right": "call",
            "product": "options",
            "action": "buy",
            "price": "577",
            "expiry_date": "27-Feb-2025",
            "stock_code": "NIFTY",
            "cover_order_flow": "sell",
            "fresh_order_type": "limit",
            "cover_limit_rate": "0",
            "cover_sltp_price": "0",
            "fresh_limit_rate": "0",
            "open_quantity": "0"
        }],
    "exchange_code": "NFO"
    }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"list_of_positions\": [\r\n                {\r\n            \"strike_price\": \"0\",\r\n            \"quantity\": \"15\",\r\n            \"right\": \"others\",\r\n            \"product\": \"futures\",\r\n            \"action\": \"buy\",\r\n            \"price\": \"46230.85\",\r\n            \"expiry_date\": \"31-Aug-2023\",\r\n            \"stock_code\": \"CNXBAN\",\r\n            \"cover_order_flow\": \"N\",\r\n            \"fresh_order_type\": \"N\",\r\n            \"cover_limit_rate\": \"0\",\r\n            \"cover_sltp_price\": \"0\",\r\n            \"fresh_limit_rate\": \"0\",\r\n            \"open_quantity\": \"0\"\r\n        },\r\n                {\r\n            \"strike_price\": \"37000\",\r\n            \"quantity\": \"15\",\r\n            \"right\": \"Call\",\r\n            \"product\": \"options\",\r\n            \"action\": \"buy\",\r\n            \"price\": \"9100\",\r\n            \"expiry_date\": \"27-Jul-2023\",\r\n            \"stock_code\": \"CNXBAN\",\r\n            \"cover_order_flow\": \"N\",\r\n            \"fresh_order_type\": \"N\",\r\n            \"cover_limit_rate\": \"0\",\r\n            \"cover_sltp_price\": \"0\",\r\n            \"fresh_limit_rate\": \"0\",\r\n            \"open_quantity\": \"0\"\r\n        },\r\n                {\r\n            \"strike_price\": \"0\",\r\n            \"quantity\": \"50\",\r\n            \"right\": \"others\",\r\n            \"product\": \"futureplus\",\r\n            \"action\": \"buy\",\r\n            \"price\": \"19800\",\r\n            \"expiry_date\": \"27-Jul-2023\",\r\n            \"stock_code\": \"NIFTY\",\r\n            \"cover_order_flow\": \"N\",\r\n            \"fresh_order_type\": \"N\",\r\n            \"cover_limit_rate\": \"0\",\r\n            \"cover_sltp_price\": \"0\",\r\n            \"fresh_limit_rate\": \"0\",\r\n            \"open_quantity\": \"0\"\r\n        },\r\n                {\r\n            \"strike_price\": \"19600\",\r\n            \"quantity\": \"50\",\r\n            \"right\": \"call\",\r\n            \"product\": \"optionplus\",\r\n            \"action\": \"buy\",\r\n            \"price\": \"245.05\",\r\n            \"expiry_date\": \"27-Jul-2023\",\r\n            \"stock_code\": \"NIFTY\",\r\n            \"cover_order_flow\": \"sell\",\r\n            \"fresh_order_type\": \"limit\",\r\n            \"cover_limit_rate\": \"180.00\",\r\n            \"cover_sltp_price\": \"200.00\",\r\n            \"fresh_limit_rate\": \"245.05\",\r\n            \"open_quantity\": \"50\"\r\n        }\r\n    ],\r\n    \"exchange_code\": \"NFO\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/margincalculator")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/margincalculator");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""list_of_positions"": [
" + "\n" +
@"                {
" + "\n" +
@"            ""strike_price"": ""0"",
" + "\n" +
@"            ""quantity"": ""15"",
" + "\n" +
@"            ""right"": ""others"",
" + "\n" +
@"            ""product"": ""futures"",
" + "\n" +
@"            ""action"": ""buy"",
" + "\n" +
@"            ""price"": ""46230.85"",
" + "\n" +
@"            ""expiry_date"": ""31-Aug-2023"",
" + "\n" +
@"            ""stock_code"": ""CNXBAN"",
" + "\n" +
@"            ""cover_order_flow"": ""N"",
" + "\n" +
@"            ""fresh_order_type"": ""N"",
" + "\n" +
@"            ""cover_limit_rate"": ""0"",
" + "\n" +
@"            ""cover_sltp_price"": ""0"",
" + "\n" +
@"            ""fresh_limit_rate"": ""0"",
" + "\n" +
@"            ""open_quantity"": ""0""
" + "\n" +
@"        },
" + "\n" +
@"                {
" + "\n" +
@"            ""strike_price"": ""37000"",
" + "\n" +
@"            ""quantity"": ""15"",
" + "\n" +
@"            ""right"": ""Call"",
" + "\n" +
@"            ""product"": ""options"",
" + "\n" +
@"            ""action"": ""buy"",
" + "\n" +
@"            ""price"": ""9100"",
" + "\n" +
@"            ""expiry_date"": ""27-Jul-2023"",
" + "\n" +
@"            ""stock_code"": ""CNXBAN"",
" + "\n" +
@"            ""cover_order_flow"": ""N"",
" + "\n" +
@"            ""fresh_order_type"": ""N"",
" + "\n" +
@"            ""cover_limit_rate"": ""0"",
" + "\n" +
@"            ""cover_sltp_price"": ""0"",
" + "\n" +
@"            ""fresh_limit_rate"": ""0"",
" + "\n" +
@"            ""open_quantity"": ""0""
" + "\n" +
@"        },
" + "\n" +
@"                {
" + "\n" +
@"            ""strike_price"": ""0"",
" + "\n" +
@"            ""quantity"": ""50"",
" + "\n" +
@"            ""right"": ""others"",
" + "\n" +
@"            ""product"": ""futureplus"",
" + "\n" +
@"            ""action"": ""buy"",
" + "\n" +
@"            ""price"": ""19800"",
" + "\n" +
@"            ""expiry_date"": ""27-Jul-2023"",
" + "\n" +
@"            ""stock_code"": ""NIFTY"",
" + "\n" +
@"            ""cover_order_flow"": ""N"",
" + "\n" +
@"            ""fresh_order_type"": ""N"",
" + "\n" +
@"            ""cover_limit_rate"": ""0"",
" + "\n" +
@"            ""cover_sltp_price"": ""0"",
" + "\n" +
@"            ""fresh_limit_rate"": ""0"",
" + "\n" +
@"            ""open_quantity"": ""0""
" + "\n" +
@"        },
" + "\n" +
@"                {
" + "\n" +
@"            ""strike_price"": ""19600"",
" + "\n" +
@"            ""quantity"": ""50"",
" + "\n" +
@"            ""right"": ""call"",
" + "\n" +
@"            ""product"": ""optionplus"",
" + "\n" +
@"            ""action"": ""buy"",
" + "\n" +
@"            ""price"": ""245.05"",
" + "\n" +
@"            ""expiry_date"": ""27-Jul-2023"",
" + "\n" +
@"            ""stock_code"": ""NIFTY"",
" + "\n" +
@"            ""cover_order_flow"": ""sell"",
" + "\n" +
@"            ""fresh_order_type"": ""limit"",
" + "\n" +
@"            ""cover_limit_rate"": ""180.00"",
" + "\n" +
@"            ""cover_sltp_price"": ""200.00"",
" + "\n" +
@"            ""fresh_limit_rate"": ""245.05"",
" + "\n" +
@"            ""open_quantity"": ""50""
" + "\n" +
@"        }
" + "\n" +
@"    ],
" + "\n" +
@"    ""exchange_code"": ""NFO""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': {'margin_calulation': [{'strike_price': '0',
  'quantity': '30',
  'right': 'Others',
  'product': 'Futures',
  'action': 'Buy',
  'price': '49500',
  'expiry_date': '27-Feb-2025',
  'stock_code': 'CNXBAN'},
 {'strike_price': '50000',
  'quantity': '30',
  'right': 'Call',
  'product': 'Options',
  'action': 'Buy',
  'price': '1150',
  'expiry_date': '27-Feb-2025',
  'stock_code': 'CNXBAN'},
 {'strike_price': '0',
  'quantity': '75',
  'right': 'Others',
  'product': 'Futures',
  'action': 'Buy',
  'price': '23400',
  'expiry_date': '27-Feb-2025',
  'stock_code': 'NIFTY '},
 {'strike_price': '23400',
  'quantity': '75',
  'right': 'Call',
  'product': 'Options',
  'action': 'Buy',
  'price': '577',
  'expiry_date': '27-Feb-2025',
  'stock_code': 'NIFTY '}],
'non_span_margin_required': '0',
'order_value': '493011.26',
'order_margin': '0',
'trade_margin': None,
'block_trade_margin': '0',
'span_margin_required': '493011.26'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/margincalculator | 
Body Parameters
| Parameter | Data Type | Description | 
|---|---|---|
| strike_price | String | Numeric String of strike price | 
| Quantity | String | Number of quantity to place the order | 
| right | String | "call","put","others" | 
| product | String | "options","futures" | 
| action | String | "buy","sell" | 
| price | String | Numeric Currency | 
| expiry_date | String | ISO 8601 | 
| stock_code | String | "NIFTY","CNXBAN" | 
Margin
GetMargins
var axios = require('axios');
var data = JSON.stringify({
    "exchange_code": "NSE"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/margin',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/margin"
payload = json.dumps({
  "exchange_code": "NSE"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/margin")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/margin");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""exchange_code"": ""NSE""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': {'limit_list': [],
'cash_limit': 1000000.00,
'amount_allocated': 100000.00,
'block_by_trade': 0.0,
'isec_margin': 0.0},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/margin | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NSE", "NFO" | Yes | 
Order
OrderPlacement
var axios = require('axios');
var data = JSON.stringify({
    "stock_code": "ITC",
    "exchange_code": "NSE",
    "product": "cash",
    "action": "buy",
    "order_type": "market",
    "quantity": "1",
    "price": "263.15",
    "validity": "ioc"
});
var config = {
    method: 'post',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/order"
payload = json.dumps({
  "stock_code": "NIFTY",
  "exchange_code": "NFO",
  "product": "options",
  "action": "buy",
  "order_type": "limit",
  "quantity": "25",
  "price": "1",
  "validity": "day",
  "stoploss": "",
  "validity_date": "2024-07-23T06:00:00.000Z",
  "disclosed_quantity": "0",
  "expiry_date": "2024-09-12T06:00:00.000Z",
  "right": "call",
  "strike_price": "25000",
  "user_remark": "testing" 
  }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"stock_code\": \"ITC\",\r\n    \"exchange_code\": \"NSE\",\r\n    \"product\": \"cash\",\r\n    \"action\": \"buy\",\r\n    \"order_type\": \"market\",\r\n    \"quantity\": \"1\",\r\n    \"price\": \"263.15\",\r\n    \"validity\": \"ioc\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/order")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/order");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""stock_code"": ""ITC"",
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""product"": ""cash"",
" + "\n" +
@"    ""action"": ""buy"",
" + "\n" +
@"    ""order_type"": ""market"",
" + "\n" +
@"    ""quantity"": ""1"",
" + "\n" +
@"    ""price"": ""263.15"",
" + "\n" +
@"    ""validity"": ""ioc""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
{'order_id': '202502051400001234',
'message': 'Successfully Placed the order',
'user_remark': ''},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| exchange_code | String | "NSE", "NFO" | Yes | 
| product | String | "futures","options","optionplus","cash","btst","margin" | Yes | 
| action | String | "buy", "sell" | Yes | 
| order_type | String | "limit","market","stoploss" | Yes | 
| stoploss | Double | Numeric Currency | No | 
| quantity | String | Number of quantity to place the order | Yes | 
| price | String | Numeric Currency | Yes | 
| validity | String | "day","ioc" | No | 
| validity_date | String | ISO 8601 | No | 
| disclosed_quantity | String | Number of quantity to be disclosed | No | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric Currency | Yes | 
| user_remark | String | Users are free to add their comment/tag to the order | No | 
Note:
1) For user_remark, no space and special character are allowed.
2) The validity_date parameter has no impact on the order execution and even if you pass it while placing the order, it will be excluded from order processing.
GetOrderDetail
var axios = require('axios');
var data = JSON.stringify({
    "exchange_code": "NSE",
    "order_id": "20220601N100000019"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/order"
payload = json.dumps({
  "exchange_code": "NFO",
  "order_id": "20250205N300001234"
  }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/order")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/order");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""order_id"": ""20220601N100000019""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [
  {'order_id': '20250205N300001234',
 'exchange_order_id': None,
 'exchange_code': 'NSE',
 'stock_code': 'ITC',
 'product_type': 'Cash',
 'action': 'Buy',
 'order_type': 'Limit',
 'stoploss': '0.00',
 'quantity': '1',
 'price': '420.00',
 'validity': 'Day',
 'disclosed_quantity': '0',
 'expiry_date': None,
 'right': None,
 'strike_price': 0.0,
 'average_price': '0',
 'cancelled_quantity': '0',
 'pending_quantity': '1',
 'status': 'Ordered',
 'user_remark': '',
 'order_datetime': '05-Feb-2025 09:26',
 'parent_order_id': None,
 'modification_number': None,
 'exchange_acknowledgement_date': None,
 'SLTP_price': None,
 'exchange_acknowledge_number': None,
 'initial_limit': None,
 'intial_sltp': None,
 'LTP': None,
 'limit_offset': None,
 'mbc_flag': None,
 'cutoff_price': None,
 'validity_date': ''}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NSE", "NFO" | Yes | 
| order_id | String | Order ID recieved during order placement | Yes | 
GetOrderList
var axios = require('axios');
var data = JSON.stringify({
    "exchange_code": "NSE",
    "from_date": "2022-05-29T10:00:00.000Z",
    "to_date": "2022-05-31T10:00:00.000Z"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/order"
payload = json.dumps({
  "exchange_code": "NSE",
  "from_date": "2025-02-28T10:00:00.000Z",
  "to_date": "2025-03-04T10:00:00.000Z"
  }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/order")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/order");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""from_date"": ""2022-05-29T10:00:00.000Z"",
" + "\n" +
@"    ""to_date"": ""2022-05-31T10:00:00.000Z""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [
  {'order_id': '20250205N300001234',
 'exchange_order_id': None,
 'exchange_code': 'NSE',
 'stock_code': 'ITC',
 'product_type': 'Cash',
 'action': 'Buy',
 'order_type': 'Limit',
 'stoploss': '0.00',
 'quantity': '1',
 'price': '420.00',
 'validity': 'Day',
 'disclosed_quantity': '0',
 'expiry_date': None,
 'right': None,
 'strike_price': 0.0,
 'average_price': '0',
 'cancelled_quantity': '0',
 'pending_quantity': '1',
 'status': 'Ordered',
 'user_remark': '',
 'order_datetime': '05-Feb-2025 09:26',
 'parent_order_id': None,
 'modification_number': None,
 'exchange_acknowledgement_date': None,
 'SLTP_price': None,
 'exchange_acknowledge_number': None,
 'initial_limit': None,
 'intial_sltp': None,
 'LTP': None,
 'limit_offset': None,
 'mbc_flag': None,
 'cutoff_price': None,
 'validity_date': ''}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NSE", "NFO" | Yes | 
| from_date | String | ISO 8601 - Day should not be less than 10 days from to_date | Yes | 
| to_date | String | ISO 8601 - Day should not be more than 10 days from from_date | Yes | 
OrderCancellation
var axios = require('axios');
var data = JSON.stringify({
    "order_id": "20220601N100000019",
    "exchange_code": "NSE"
});
var config = {
    method: 'delete',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/order"
payload = json.dumps({
  "order_id": "202409062500014529",
  "exchange_code": "NFO"
  }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"order_id\": \"20220601N100000019\",\r\n    \"exchange_code\": \"NSE\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/order")
    .method("DELETE", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/order");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""order_id"": ""20220601N100000019"",
" + "\n" +
@"    ""exchange_code"": ""NSE""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
{'order_id': '20250205N300001234',
'message': 'Your Order Canceled successfully.'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | DELETE | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| order_id | String | Order ID recieved during order placement | Yes | 
| exchange_code | String | "NSE", "NFO" | Yes | 
Types of Order Status
| Status | 
|---|
| Requested | 
| Queued | 
| Ordered | 
| Partially Executed | 
| Executed | 
| Rejected | 
| Expired | 
| Partially Executed And Expired | 
| Partially Executed And Cancelled | 
| Freezed | 
| Cancelled | 
OrderModification
var axios = require('axios');
var data = JSON.stringify({
    "order_id": "20220601N100000019",
    "exchange_code": "NSE",
    "quantity": "2",
    "price": "263.15",
    "stoploss": "",
    "disclosed_quantity": "",
    "order_type": "limit",
    "validity": "",
    "expiry_date": "",
    "right": "",
    "strike_price": ""
});
var config = {
    method: 'put',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/order"
payload = json.dumps({
"order_id": "202502051400012345",
  "exchange_code": "NFO",
  "quantity": "25",
  "price": "1",
  "stoploss": "",
  "disclosed_quantity": "0",
  "order_type": "limit",
  "validity": "day",
  }, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"order_id\":\"20220601N100000019\",\r\n    \"exchange_code\":\"NSE\",\r\n    \"quantity\": \"2\",\r\n    \"price\": \"263.15\",\r\n    \"stoploss\":\"\",\r\n    \"disclosed_quantity\":\"\",\r\n    \"order_type\":\"limit\",\r\n    \"validity\":\"\",\r\n    \"expiry_date\":\"\",\r\n    \"right\":\"\",\r\n    \"strike_price\":\"\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/order")
    .method("PUT", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/order");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""order_id"":""20220601N100000019"",
" + "\n" +
@"    ""exchange_code"":""NSE"",
" + "\n" +
@"    ""quantity"": ""2"",
" + "\n" +
@"    ""price"": ""263.15"",
" + "\n" +
@"    ""stoploss"":"""",
" + "\n" +
@"    ""disclosed_quantity"":"""",
" + "\n" +
@"    ""order_type"":""limit"",
" + "\n" +
@"    ""validity"":"""",
" + "\n" +
@"    ""expiry_date"":"""",
" + "\n" +
@"    ""right"":"""",
" + "\n" +
@"    ""strike_price"":""""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
{'message': 'Successfully Modified the order',
'order_id': '202502051400012345'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | PUT | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| order_id | String | Order ID recieved during order placement | Yes | 
| exchange_code | String | "NSE", "NFO" | Yes | 
| order_type | String | "limit","market","stoploss" | No | 
| stoploss | String | Numeric String of strike price | No | 
| quantity | String | Modify number of quantity on placed order | Yes | 
| price | String | Numeric String of strike price | No | 
| validity | String | "day","ioc" | No | 
| validity_date | String | ISO 8601 | No | 
| disclosed_quantity | String | Modify number of disclosed quantity on placed order | No | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric Currency | Yes | 
Note: The validity_date parameter has no impact on the modification of the order and even if you pass it while modifying the order, it will be excluded from order modification processing.
Breeze Limit price calculation
limit calculator
var axios = require('axios');
var data = JSON.stringify({
    "strike_price": "19200",
    "product_type": "optionplus",
    "expiry_date": "13-JUL-2023",
    "underlying": "NIFTY",
    "exchange_code": "NFO",
    "order_flow": "Buy",
    "stop_loss_trigger": "200.00",
    "option_type": "Call",
    "source_flag": "P",
    "limit_rate": "",
    "order_reference": "",
    "available_quantity": "",
    "market_type": "limit",
    "fresh_order_limit": "218.65"
});
var config = {
    method: 'post',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/fnolmtpriceandqtycal',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/fnolmtpriceandqtycal"
payload = json.dumps({
    "strike_price": "22800",
    "product_type": "optionplus",
    "expiry_date": "20-Mar-2025",
    "underlying": "NIFTY",
    "exchange_code": "NFO",
    "order_flow": "Buy",
    "stop_loss_trigger": "0",
    "option_type": "Put",
    "source_flag": "P",
    "limit_rate": "",
    "order_reference": "",
    "available_quantity": "75",
    "market_type": "limit",
    "fresh_order_limit": "85"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{ \r\n    \"strike_price\": \"19200\",                                    \r\n    \"product_type\":\"optionplus\",                 \r\n    \"expiry_date\": \"13-JUL-2023\",\r\n    \"underlying\" : \"NIFTY\",\r\n    \"exchange_code\":\"NFO\",\r\n    \"order_flow\" :\"Buy\",\r\n    \"stop_loss_trigger\":\"200.00\",\r\n    \"option_type\":\"Call\",\r\n    \"source_flag\" : \"P\",\r\n    \"limit_rate\" : \"\",\r\n    \"order_reference\":\"\",\r\n    \"available_quantity\":\"\",\r\n    \"market_type\":\"limit\",\r\n    \"fresh_order_limit\":\"218.65\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/fnolmtpriceandqtycal")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/fnolmtpriceandqtycal");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{ 
" + "\n" +
@"    ""strike_price"": ""19200"",                                    
" + "\n" +
@"    ""product_type"":""optionplus"",                 
" + "\n" +
@"    ""expiry_date"": ""13-JUL-2023"",
" + "\n" +
@"    ""underlying"" : ""NIFTY"",
" + "\n" +
@"    ""exchange_code"":""NFO"",
" + "\n" +
@"    ""order_flow"" :""Buy"",
" + "\n" +
@"    ""stop_loss_trigger"":""200.00"",
" + "\n" +
@"    ""option_type"":""Call"",
" + "\n" +
@"    ""source_flag"" : ""P"",
" + "\n" +
@"    ""limit_rate"" : """",
" + "\n" +
@"    ""order_reference"":"""",
" + "\n" +
@"    ""available_quantity"":"""",
" + "\n" +
@"    ""market_type"":""limit"",
" + "\n" +
@"    ""fresh_order_limit"":""218.65""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': 
{'available_quantity': '0',
'action_id': '0',
'order_margin': '0',
'limit_rate': '16'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/fnolmtpriceandqtycal | 
Body Parameters
| Parameter | Data Type | Description | 
|---|---|---|
| strike_price | String | Numeric String of strike price | 
| product_type | String | "optionplus" | 
| expiry_date | String | ISO 8601 | 
| exchange_code | String | "NSE","NFO" | 
| stop_loss_trigger | String | Numeric Currency | 
| option_type | String | "call","put" | 
| order_reference | String | -- | 
| available_quantity | -- | -- | 
| market_type | String | "limit","market" | 
| fresh_order_limit | String | Numeric currency | 
PortfolioHoldings
GetPortfolioHoldings
var axios = require('axios');
var data = JSON.stringify({
    "exchange_code": "NSE",
    "from_date": "",
    "to_date": "",
    "stock_code": "JKPAP",
    "portfolio_type": ""
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/portfolioholdings',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/portfolioholdings"
payload = json.dumps({
  "exchange_code": "NSE",
  "from_date": "2024-09-01T06:00:00.000Z",
  "to_date": "2024-09-05T06:00:00.000Z",
  "stock_code": "",
  "portfolio_type": ""
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/portfolioholdings")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/portfolioholdings");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""exchange_code"":""NSE"",
" + "\n" +
@"    ""from_date"":"""",
" + "\n" +
@"    ""to_date"":"""",
" + "\n" +
@"    ""stock_code"":""JKPAP"",
" + "\n" +
@"    ""portfolio_type"":""""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success':[
{'stock_code': 'NIFTY',
'exchange_code': 'NFO',
'quantity': '0',
'average_price': '0',
'booked_profit_loss': None,
'current_market_price': '0',
'change_percentage': None,
'answer_flag': None,
'product_type': 'Options',
'expiry_date': '01-Aug-2024',
'strike_price': '25200',
'right': 'Call',
'category_index_per_stock':'I',
'action': 'NA',
'realized_profit': '-349.26',
'unrealized_profit': '0',
'open_position_value': '0',
'portfolio_charges': '5.51'}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/portfolioholdings | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NSE", "NFO" | Yes | 
| from_date | String | ISO 8601 | Yes | 
| to_date | String | ISO 8601 | Yes | 
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| portfolio_type | String | -- | No | 
PortfolioPositions
GetPortfolioPositions
var axios = require('axios');
var data = JSON.stringify({});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/portfoliopositions',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/portfoliopositions"
payload = json.dumps({})
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/portfoliopositions")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/portfoliopositions");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [{'segment': 'fno',
 'product_type': 'Options',
 'exchange_code': 'NFO',
 'stock_code': 'NIFTY',
 'expiry_date': '27-Feb-2025',
 'strike_price': '24800',
 'right': 'Call',
 'action': 'NA',
 'quantity': '0',
 'average_price': '0',
 'settlement_id': None,
 'margin_amount': None,
 'ltp': '29.95',
 'price': '28.85',
 'stock_index_indicator': 'Index',
 'cover_quantity': '0',
 'stoploss_trigger': '0',
 'stoploss': None,
 'take_profit': None,
 'available_margin': None,
 'squareoff_mode': None,
 'mtf_sell_quantity': None,
 'mtf_net_amount_payable': None,
 'mtf_expiry_date': None,
 'order_id': '',
 'cover_order_flow': None,
 'cover_order_executed_quantity': None,
 'pledge_status': None,
 'pnl': None,
 'underlying': 'NIFTY',
 'order_segment_code': None}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/portfoliopositions | 
Body Parameters
Note: Get Portfolio Positions API does not require body parameters
Quotes
GetQuotes
var axios = require('axios');
var data = JSON.stringify({
    "stock_code": "CNXBAN",
    "exchange_code": "NFO",
    "expiry_date": "2022-05-26T06:00:00.000Z",
    "product_type": "Futures",
    "right": "Others",
    "strike_price": "0"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/quotes',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/quotes"
payload = json.dumps({
  "stock_code": "NIFTY",
  "exchange_code": "NFO",
  "expiry_date": "2025-03-06T06:00:00.000Z",
  "product_type": "options",
  "right": "call",
  "strike_price": "22500"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/quotes")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/quotes");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""stock_code"": ""CNXBAN"",
" + "\n" +
@"    ""exchange_code"": ""NFO"",
" + "\n" +
@"    ""expiry_date"": ""2022-05-26T06:00:00.000Z"",
" + "\n" +
@"    ""product_type"": ""Futures"",
" + "\n" +
@"    ""right"": ""Others"",
" + "\n" +
@"    ""strike_price"": ""0""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [{'exchange_code': 'NFO',
 'product_type': 'Future',
 'stock_code': 'NIFTY',
 'expiry_date': '27-Feb-2025',
 'right': '*',
 'strike_price': 0.0,
 'ltp': 23832.85,
 'ltt': '05-Feb-2025 09:36:56',
 'best_bid_price': 23832.0,
 'best_bid_quantity': '1500',
 'best_offer_price': 23833.8,
 'best_offer_quantity': '150',
 'open': 23825.0,
 'high': 23840.6,
 'low': 23808.0,
 'previous_close': 23785.4,
 'ltp_percent_change': 0.2,
 'upper_circuit': 26163.95,
 'lower_circuit': 21406.9,
 'total_quantity_traded': '623325',
 'spot_price': '23783.7'}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/quotes | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "AXIBAN","TATMOT" | Yes | 
| exchange_code | String | "NSE","NFO" | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| product_type | String | "futures","options","optionplus","cash","btst","margin" | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric String of strike price | Yes | 
SquareOff
SquareOff
var axios = require('axios');
var data = JSON.stringify({
    "source_flag": "",
    "stock_code": "NIFTY",
    "exchange_code": "NFO",
    "quantity": "50",
    "price": "0",
    "action": "Sell",
    "order_type": "Market",
    "validity": "Day",
    "stoploss_price": "0",
    "disclosed_quantity": "0",
    "protection_percentage": "",
    "settlement_id": "",
    "margin_amount": "",
    "open_quantity": "",
    "cover_quantity": "",
    "product_type": "Futures",
    "expiry_date": "2021-12-30",
    "right": "Others",
    "strike_price": "0",
    "validity_date": "2021-12-16T06:00:00.000Z",
    "alias_name": "",
    "trade_password": ""
});
var config = {
    method: 'post',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/squareoff',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/squareoff"
payload = json.dumps({
  "stock_code": "NIFTY",
  "exchange_code": "NFO",
  "quantity": "25",
  "price": "1",
  "action": "sell",
  "order_type": "limit",
  "order_rate": "",
  "validity": "day",
  "disclosed_quantity": "0",
  "product_type": "options",
  "expiry_date": "2024-09-12T06:00:00.000Z",
  "right": "put",
  "strike_price": "25000",
  "validity_date": "2024-07-23T06:00:00.000Z",
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n  \"source_flag\": \"\",\r\n  \"stock_code\": \"NIFTY\",\r\n  \"exchange_code\": \"NFO\",\r\n  \"quantity\": \"50\",\r\n  \"price\": \"0\",\r\n  \"action\": \"Sell\",\r\n  \"order_type\": \"Market\",\r\n  \"validity\": \"Day\",\r\n  \"stoploss_price\": \"0\",\r\n  \"disclosed_quantity\": \"0\",\r\n  \"protection_percentage\": \"\",\r\n  \"settlement_id\": \"\",\r\n  \"margin_amount\": \"\",\r\n  \"open_quantity\": \"\",\r\n  \"cover_quantity\": \"\",\r\n  \"product_type\": \"Futures\",\r\n  \"expiry_date\": \"2021-12-30\",\r\n  \"right\": \"Others\",\r\n  \"strike_price\": \"0\",\r\n  \"validity_date\": \"2021-12-16T06:00:00.000Z\",\r\n  \"alias_name\": \"\",\r\n  \"trade_password\": \"\"\r\n}");
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/squareoff")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/squareoff");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"  ""source_flag"": """",
" + "\n" +
@"  ""stock_code"": ""NIFTY"",
" + "\n" +
@"  ""exchange_code"": ""NFO"",
" + "\n" +
@"  ""quantity"": ""50"",
" + "\n" +
@"  ""price"": ""0"",
" + "\n" +
@"  ""action"": ""Sell"",
" + "\n" +
@"  ""order_type"": ""Market"",
" + "\n" +
@"  ""validity"": ""Day"",
" + "\n" +
@"  ""stoploss_price"": ""0"",
" + "\n" +
@"  ""disclosed_quantity"": ""0"",
" + "\n" +
@"  ""protection_percentage"": """",
" + "\n" +
@"  ""settlement_id"": """",
" + "\n" +
@"  ""margin_amount"": """",
" + "\n" +
@"  ""open_quantity"": """",
" + "\n" +
@"  ""cover_quantity"": """",
" + "\n" +
@"  ""product_type"": ""Futures"",
" + "\n" +
@"  ""expiry_date"": ""2021-12-30"",
" + "\n" +
@"  ""right"": ""Others"",
" + "\n" +
@"  ""strike_price"": ""0"",
" + "\n" +
@"  ""validity_date"": ""2021-12-16T06:00:00.000Z"",
" + "\n" +
@"  ""alias_name"": """",
" + "\n" +
@"  ""trade_password"": """"
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': {'order_id': '202502052500001234',
'message': 'Successfully Placed the order',
'indicator': '0'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/squareoff | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| source_flag | String | -- | No | 
| stock_code | String | "NIFTY" | Yes | 
| exchange_code | String | "NSE","NFO" | Yes | 
| quantity | String | Number of quantity to sqaure off the orders | Yes | 
| price | String | Numeric String of strike price | No | 
| action | String | "buy","sell" | Yes | 
| order_type | String | "limit","market","stoploss" | No | 
| validity | String | "day","ioc" | No | 
| stoploss_price | String | Numeric String of strike price | No | 
| disclosed_quantity | String | Number of disclosed quantity to squareoff order | No | 
| protection_percentage | String | -- | No | 
| settlement_id | String | Numeric String of strike price | No | 
| margin_amount | String | Numeric String of strike price | No | 
| open_quantity | String | Number of open quantity to squareoff order | No | 
| cover_quantity | String | Number of cover quantity to squareoff order | No | 
| product_type | String | "futures","options","cash","eatm","margin" | No | 
| expiry_date | String | Date when contract will expire | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric String of strike price | Yes | 
| validity_date | String | Validity date of squareoff order | No | 
| alias_name | -- | -- | |
| trade_password | String | -- | No | 
Note: The validity_date parameter has no impact on the square off order execution and even if you pass it while squaring off the position, it will be excluded from square off order processing.
Trades
GetTradeList
var axios = require('axios');
var data = JSON.stringify({
    "from_date": "2022-05-28T06:00:00.000Z",
    "to_date": "2022-06-01T06:00:00.000Z",
    "exchange_code": "NSE",
    "product_type": "",
    "action": "",
    "stock_code": ""
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/trades',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/trades"
payload = json.dumps({
  "from_date": "2025-02-05T06:00:00.000Z",
  "to_date": "2025-02-05T06:00:00.000Z",
  "exchange_code": "NSE",
  "product_type": "",
  "action": "",
  "stock_code": ""
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/trades")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/trades");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""from_date"": ""2022-05-28T06:00:00.000Z"",
" + "\n" +
@"    ""to_date"": ""2022-06-01T06:00:00.000Z"",
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""product_type"": """",
" + "\n" +
@"    ""action"": """",
" + "\n" +
@"    ""stock_code"": """"
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [{'book_type': 'Trade-Book',
 'trade_date': '05-Feb-2025',
 'stock_code': 'ITC',
 'action': 'Buy',
 'quantity': '1',
 'average_cost': '452.20',
 'brokerage_amount': '0.00',
 'product_type': 'Margin',
 'exchange_code': 'NSE',
 'order_id': '20250205N300012345',
 'segment': 'M',
 'settlement_code': '2025027',
 'dp_id': 'IN1234566',
 'client_id': '12345678',
 'ltp': '451.95',
 'eatm_withheld_amount': '0.00',
 'cash_withheld_amount': '0.00',
 'total_taxes': '0.00',
 'order_type': 'Market',
 'expiry_date': None,
 'right': None,
 'strike_price': None},
{'book_type': 'Trade-Book',
 'trade_date': '05-Feb-2025',
 'stock_code': 'ITC',
 'action': 'Sell',
 'quantity': '1',
 'average_cost': '452.55',
 'brokerage_amount': '0.00',
 'product_type': 'Margin',
 'exchange_code': 'NSE',
 'order_id': '20250205N300012345',
 'segment': 'M',
 'settlement_code': '2025012',
 'dp_id': 'IN1234566',
 'client_id': '12345678',
 'ltp': '451.95',
 'eatm_withheld_amount': '0.00',
 'cash_withheld_amount': '0.00',
 'total_taxes': '0.00',
 'order_type': 'Market',
 'expiry_date': None,
 'right': None,
 'strike_price': None}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/trades | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| from_date | String | ISO 8601 | Yes | 
| to_date | String | ISO 8601 | Yes | 
| exchange_code | String | "NSE","NFO" | Yes | 
| product_type | String | "futures","options","optionplus","cash","btst","margin" | No | 
| action | String | "buy","sell" | No | 
| stock_code | String | "AXIBAN","TATMOT" | No | 
GetTradeDetail
var axios = require('axios');
var data = JSON.stringify({
    "exchange_code": "NSE",
    "order_id": "20210928N100000067"
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/trades',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/trades"
payload = json.dumps({
    "exchange_code": "NSE",
    "order_id": "20250205N300012345"
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/trades")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/trades");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""order_id"": ""20210928N100000067""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [{'settlement_id': '1234567',
 'exchange_trade_id': '123456789',
 'executed_quantity': '1',
 'action': 'B',
 'total_transaction_cost': '0',
 'brokerage_amount': '0',
 'taxes': '0',
 'eatm_withheld_amount': '0',
 'cash_withheld_amount': '0',
 'execution_price': '452.2',
 'stock_code': 'ITC',
 'exchange_code': 'NSE',
 'trade_id': '2025/1234/12345678',
 'exchange_trade_time': '05-Feb-2025 10:41:24'}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/trades | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NSE","NFO" | Yes | 
| order_id | String | Order ID recieved during order placement | Yes | 
OptionChain
GetOptionChain
var axios = require('axios');
var data = JSON.stringify({
    "stock_code": "NIFTY",
    "exchange_code": "NFO",
    "expiry_date": "2022-08-25T06:00:00.000Z",
    "product_type": "Futures",
    "right": "",
    "strike_price": ""
});
var config = {
    method: 'get',
    url: 'https://api.icicidirect.com/breezeapi/api/v1/OptionChain',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/optionchain"
payload = json.dumps({
  "stock_code": "ICIBAN",
  "exchange_code": "NFO",
  "expiry_date": "2025-01-25T06:00:00.000Z",
  "product_type": "futures",
}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://api.icicidirect.com/breezeapi/api/v1/OptionChain")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.icicidirect.com/breezeapi/api/v1/OptionChain");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""stock_code"": ""NIFTY"",
" + "\n" +
@"    ""exchange_code"": ""NFO"",
" + "\n" +
@"    ""expiry_date"": ""2022-08-25T06:00:00.000Z"",
" + "\n" +
@"    ""product_type"": ""Futures"",
" + "\n" +
@"    ""right"": """",
" + "\n" +
@"    ""strike_price"": """"
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON response
{'Success': [{'exchange_code': 'NFO',
 'product_type': 'Options',
 'stock_code': 'NIFTY',
 'expiry_date': '06-Feb-2025',
 'right': 'Call',
 'strike_price': 17600.0,
 'ltp': 0.0,
 'ltt': '',
 'best_bid_price': 0.0,
 'best_bid_quantity': '0',
 'best_offer_price': 0.0,
 'best_offer_quantity': '0',
 'open': 0.0,
 'high': 0.0,
 'low': 0.0,
 'previous_close': 0.0,
 'ltp_percent_change': 0.0,
 'upper_circuit': 6750.4,
 'lower_circuit': 5541.8,
 'total_quantity_traded': '0',
 'spot_price': '23787',
 'ltq': '0',
 'open_interest': 0.0,
 'chnge_oi': 0.0,
 'total_buy_qty': '0',
 'total_sell_qty': '0'},
{'exchange_code': 'NFO',
 'product_type': 'Options',
 'stock_code': 'NIFTY',
 'expiry_date': '06-Feb-2025',
 'right': 'Call',
 'strike_price': 17650.0,
 'ltp': 0.0,
 'ltt': '',
 'best_bid_price': 0.0,
 'best_bid_quantity': '0',
 'best_offer_price': 0.0,
 'best_offer_quantity': '0',
 'open': 0.0,
 'high': 0.0,
 'low': 0.0,
 'previous_close': 0.0,
 'ltp_percent_change': 0.0,
 'upper_circuit': 6700.45,
 'lower_circuit': 5491.85,
 'total_quantity_traded': '0',
 'spot_price': '23787',
 'ltq': '0',
 'open_interest': 0.0,
 'chnge_oi': 0.0,
 'total_buy_qty': '0',
 'total_sell_qty': '0'}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/OptionChain | 
Body Parameters
| Parameter | Data Type | Description | 
|---|---|---|
| stock_code | String | NIFTY | 
| exchange_code | String | NFO | 
| expiry_date | String | 2025-01-25T06:00:00.000Z" | 
| product_type | String | options | 
| right | String | "call","put" | 
| strike_price | String | 22500 | 
Preview Order
GetBrokeragecharges - Equity
var axios = require('axios');
var data = JSON.stringify({
    "stock_code": "ICIBAN",
    "exchange_code": "NSE",
    "product": "margin",
    "order_type": "limit",
    "price": "907.05",
    "action": "buy",
    "quantity": "1",
    "specialflag": "N"
});
var config = {
    method: 'get',
    url: 'https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/preview_order"
payload = json.dumps({    
    "stock_code": "ICIBAN",
    "exchange_code": "NSE",
    "product": "margin",
    "order_type": "limit",
    "price": "907.05",
    "action": "buy",
    "quantity": "1",
    "specialflag": "N"}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"    ""stock_code"": ""ICIBAN"",
" + "\n" +
@"    ""exchange_code"": ""NSE"",
" + "\n" +
@"    ""product"": ""margin"",
" + "\n" +
@"    ""order_type"":""limit"",
" + "\n" +
@"    ""price"":""907.05"",
" + "\n" +
@"    ""action"":""buy"",
" + "\n" +
@"    ""quantity"":""1"",
" + "\n" +
@"    ""specialflag"" : ""N""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON response
{"Success":
{"brokerage":0.63, 
"exchange_turnover_charges":0.03, 
"stamp_duty":0.14, 
"stt":0.91, 
"sebi_charges":0.0,
"gst":0.12,
"total_turnover_and_sebi_charges":0.03, 
"total_other_charges":1.19, 
"total_brokerage":1.83), 
"Status": 200, "Error":null}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/preview_order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "NIFTY" | Yes | 
| exchange_code | String | "NSE" | Yes | 
| product | String | "cash","btst","margin","mtf" | Yes | 
| order_type | String | "limit","market","stoploss" | Yes | 
| price | String | Numeric String of strike price | Yes | 
| action | String | "buy","sell" | Yes | 
| quantity | String | Number of quantity in string formatted | Yes | 
GetBrokeragecharges - Fno
var axios = require('axios');
var data = JSON.stringify({
    "stock_code": "NIFTY",
    "exchange_code": "NFO",
    "product": "optionplus",
    "order_type": "limit",
    "price": "171",
    "action": "buy",
    "quantity": "50",
    "expiry_date": "25-Jan-2023",
    "right": "call",
    "strike_price": "19000",
    "specialflag": "S",
    "stoploss": "190",
    "order_rate_fresh": "195.50"
});
var config = {
    method: 'get',
    url: 'https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order',
    headers: { 
        'Content-Type': 'application/json', 
        'X-Checksum': 'token ', 
        'X-Timestamp': '', 
        'X-AppKey': '', 
        'X-SessionToken': ''
    },
    data : data
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/preview_order"
payload = json.dumps({    
    "stock_code": "NIFTY",
    "exchange_code": "NFO",
    "product": "options",
    "order_type": "market",
    "price": "0",
    "action": "buy",
    "quantity": "75",
    "expiry_date": "06-Mar-2025",
    "right": "call",
    "strike_price": "22500",
    "specialflag": "N",
    "stoploss": "",
    "order_rate_fresh": "0"}, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order")
    .method("GET", null)
    .addHeader("Content-Type", "application/json")
    .addHeader("X-Checksum", "token ")
    .addHeader("X-Timestamp", "")
    .addHeader("X-AppKey", "")
    .addHeader("X-SessionToken", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://uatapi.icicidirect.com/iciciDirectWebApi_core/api/v1/preview_order");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("X-Checksum", "token ");
request.AddHeader("X-Timestamp", "");
request.AddHeader("X-AppKey", "");
request.AddHeader("X-SessionToken", "");
var body = @"{
" + "\n" +
@"   ""stock_code"": ""NIFTY"",
" + "\n" +
@"    ""exchange_code"": ""NFO"",
" + "\n" +
@"    ""product"": ""optionplus"",
" + "\n" +
@"    ""order_type"":""limit"",
" + "\n" +
@"    ""price"":""171"",
" + "\n" +
@"    ""action"":""buy"",
" + "\n" +
@"    ""quantity"":""50"",
" + "\n" +
@"    ""expiry_date"": ""25-Jan-2023"",
" + "\n" +
@"    ""right"": ""call"",
" + "\n" +
@"    ""strike_price"": ""19000"",
" + "\n" +
@"    ""specialflag"" : ""S"",
" + "\n" +
@"    ""stoploss"": ""190"",
" + "\n" +
@"    ""order_rate_fresh"": ""195.50""
" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{}"Success": 
    {"brokerage":7.0, 
    "exchange_turnover_charges":0.17, 
    "stamp_duty":0.01, 
    "stt":0.0, 
    "sebi_charges":0.0, 
    "gst":1.29,
    "total_turnover_and_sebi_charges": 0.17, 
    "total_other_charges": 1.47, 
    "total_brokerage":8.47), 
    "Status": 200, "Error":null}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/preview_order | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "NIFTY" | Yes | 
| exchange_code | String | "NFO" | Yes | 
| product | String | "futures","options","optionplus" | Yes | 
| order_type | String | "limit","market","stoploss" | Yes | 
| price | String | Numeric String of strike price | Yes | 
| action | String | "buy","sell" | Yes | 
| quantity | String | Number of quantity in string formatted | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric Currency | Yes | 
| stoploss | String | Numeric Currency | Yes | 
| order_rate_fresh | String | Numeric Currency | Yes | 
HistoricalChartsv2
GetHistoricalCharts
var axios = require('axios');
var config = {
    method: 'get',
    url: 'https://breezeapi.icicidirect.com/api/v2/historicalcharts?stock_code=NIFTY&exch_code=NFO&from_date=2022-11-10 09:15:00&to_date=2022-11-11 09:16:00&interval=day&product_type=Options&expiry_date=2022-11-24&right=Call&strike_price=18000',
    headers: { 
        'X-SessionToken': '', 
        'apikey': ''
    }
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://breezeapi.icicidirect.com/api/v2/historicalcharts?exch_code=BFO&stock_code=BSESEN&from_date=2025-02-25T00:00:00.000Z&to_date=2025-03-02T23:00:00.000Z&interval=1minute&product_type=options&expiry_date=2025-03-04&right=Call&strike_price=73000"
payload = ""
headers = {
    'Content-Type': 'application/json',
    'apiKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://breezeapi.icicidirect.com/api/v2/historicalcharts?stock_code=NIFTY&exch_code=NFO&from_date=2022-11-10 09:15:00&to_date=2022-11-11 09:16:00&interval=day&product_type=Options&expiry_date=2022-11-24&right=Call&strike_price=18000")
    .method("GET", null)
    .addHeader("X-SessionToken", "")
    .addHeader("apikey", "")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://breezeapi.icicidirect.com/api/v2/historicalcharts?stock_code=NIFTY&exch_code=NFO&from_date=2022-11-10 09:15:00&to_date=2022-11-11 09:16:00&interval=day&product_type=Options&expiry_date=2022-11-24&right=Call&strike_price=18000");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("X-SessionToken", "");
request.AddHeader("apikey", "");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'Success': [
  {'datetime': '2025-02-03 09:21:00',
    'stock_code': 'NIFTY',
    'exchange_code': 'NFO',
    'product_type': 'Options',
    'expiry_date': '06-FEB-25',
    'right': 'Call',
    'strike_price': '23200',
    'open': '201.15',
    'high': '203.9',
    'low': '195.5',
    'close': '197.55',
    'volume': '304575',
    'open_interest': '2435175',
    'count': 6},
  {'datetime': '2025-02-03 09:22:00',
    'stock_code': 'NIFTY',
    'exchange_code': 'NFO',
    'product_type': 'Options',
    'expiry_date': '06-FEB-25',
    'right': 'Call',
    'strike_price': '23200',
    'open': '196.85',
    'high': '201.8',
    'low': '196.5',
    'close': '200.3',
    'volume': '249000',
    'open_interest': '2435175',
    'count': 7}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://breezeapi.icicidirect.com/api/v2/historicalcharts | 
Headers
| Key | Description | 
|---|---|
| X-SessionToken | Session Token | 
| X-apikey | API Key | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| interval | String | "1minute","5minute","30minute","1day" | Yes | 
| from_date | String | ISO 8601 | Yes | 
| to_date | String | ISO 8601 | Yes | 
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| exchange_code | String | "NSE", "NFO" | Yes | 
| product_type | String | "futures","options","cash" | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric String of strike price | Yes | 
Order Notifications
live feeds for Order Updates
var axios = require('axios');
var config = {
    method: 'get',
    url: 'https://breezeapi.icicidirect.com',
    headers: { 
        'User-Agent': 'XYZABC', 
        'user': 'LZLAL', 
        'token': '12i299'
    }
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import base64 
import socketio
from datetime import datetime
#Get User ID and Session Token
session_key = "SESSION_TOKEN_FROM_CUSTOMER_DETAILS_API"
#e.g session_key = "QUYyOTUzMTM6NjY5ODc5NzY="
user_id, session_token = base64.b64decode(session_key.encode('ascii')).decode('ascii').split(":")
#e.g Decoded value - AF296713:66987976, after split user_id = AF295313, session_token = 6698797
# Python Socket IO Client
sio = socketio.Client()
auth = {"user": user_id, "token": session_token} 
print(auth)
sio.connect("https://livefeeds.icicidirect.com", headers={"User-Agent":"python-socketio[client]/socket"}, 
                auth=auth, transports="websocket", wait_timeout=3)
if sio.connected:
    print("Connection established successfully.")
else:
    print("Failed to connect.")
tux_to_user_value = {
    "orderFlow": {
        "B": "Buy",
        "S": "Sell",
        "N": "NA"
    },
    "limitMarketFlag": {
        "L": "Limit",
        "M": "Market",
        "S": "StopLoss"
    },
    "orderType": {
        "T": "Day",
        "I": "IoC",
        "V": "VTC"
    },
    "productType": {
        "F": "Futures",
        "O": "Options",
        "P": "FuturePlus",
        "U": "FuturePlus_sltp",
        "I": "OptionPlus",
        "C": "Cash",
        "Y": "eATM",
        "B": "BTST",
        "M": "Margin",
        "T": "MarginPlus"
    },
    "orderStatus": {
        "A": "All",
        "R": "Requested",
        "Q": "Queued",
        "O": "Ordered",
        "P": "Partially Executed",
        "E": "Executed",
        "J": "Rejected",
        "X": "Expired",
        "B": "Partially Executed And Expired",
        "D": "Partially Executed And Cancelled",
        "F": "Freezed",
        "C": "Cancelled"
    },
    "optionType": {
        "C": "Call",
        "P": "Put",
        "*": "Others"
    },
}
# parse market depth
def parse_market_depth(data, exchange):
    depth = []
    counter = 0
    for lis in data:
        counter += 1
        dict = {}
        if exchange == '1':
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BestSellRate-"+str(counter)] = lis[2]
            dict["BestSellQty-"+str(counter)] = lis[3]
            depth.append(dict)
        else:
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BuyNoOfOrders-"+str(counter)] = lis[2]
            dict["BuyFlag-"+str(counter)] = lis[3]
            dict["BestSellRate-"+str(counter)] = lis[4]
            dict["BestSellQty-"+str(counter)] = lis[5]
            dict["SellNoOfOrders-"+str(counter)] = lis[6]
            dict["SellFlag-"+str(counter)] = lis[7]
            depth.append(dict)
    return depth
# parsing logic
def parse_data(data):   
        if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0] and len(data) == 19:
            #if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0] and len(data) == 19:
            iclick_data = dict()
            #iclick_data['sequence_number'] = data[0]
            iclick_data['stock_name'] = data[0]
            iclick_data['stock_code'] = data[1]
            iclick_data['action_type'] = data[2]
            iclick_data['expiry_date'] = data[3]
            iclick_data['strike_price'] = data[4]
            iclick_data['option_type'] = data[5]
            iclick_data['stock_description'] = data[6]
            iclick_data['recommended_price_and_date'] = data[7]
            iclick_data['recommended_price_from'] = data[8]
            iclick_data['recommended_price_to'] = data[9]
            iclick_data['recommended_date'] = data[10]
            iclick_data['target_price'] = data[11]
            iclick_data['sltp_price'] = data[12]
            iclick_data['part_profit_percentage'] = data[13]
            iclick_data['profit_price'] = data[14]
            iclick_data['exit_price'] = data[15]
            iclick_data['recommended_update'] = data[16]
            iclick_data['iclick_status'] = data[17]
            iclick_data['subscription_type'] = data[18]
            return(iclick_data)
        if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0] and len(data) == 28:
            strategy_dict = dict()
            strategy_dict['strategy_date'] = data[0]
            strategy_dict['modification_date'] = data[1]
            strategy_dict['portfolio_id'] = data[2]
            strategy_dict['call_action'] = data[3]
            strategy_dict['portfolio_name'] = data[4]
            strategy_dict['exchange_code'] = data[5]
            strategy_dict['product_type'] = data[6]
            #strategy_dict['INDEX/STOCK'] = data[7]
            strategy_dict['underlying'] = data[8]
            strategy_dict['expiry_date'] = data[9]
            #strategy_dict['OCR_EXER_TYP'] = data[10]
            strategy_dict['option_type'] = data[11]
            strategy_dict['strike_price'] = data[12]
            strategy_dict['action'] = data[13]
            strategy_dict['recommended_price_from'] = data[14]
            strategy_dict['recommended_price_to'] = data[15]
            strategy_dict['minimum_lot_quantity'] = data[16]
            strategy_dict['last_traded_price'] = data[17]
            strategy_dict['best_bid_price'] = data[18]
            strategy_dict['best_offer_price'] = data[19]
            strategy_dict['last_traded_quantity'] = data[20]
            strategy_dict['target_price'] = data[21]           
            strategy_dict['expected_profit_per_lot'] = data[22]
            strategy_dict['stop_loss_price'] = data[23]
            strategy_dict['expected_loss_per_lot'] = data[24]
            strategy_dict['total_margin'] = data[25]
            strategy_dict['leg_no'] = data[26]
            strategy_dict['status'] = data[27]
            return(strategy_dict)
        if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0]:
            order_dict = {}
            order_dict["sourceNumber"] = data[0]                            #Source Number
            order_dict["group"] = data[1]                                   #Group
            order_dict["userId"] = data[2]                                  #User_id
            order_dict["key"] = data[3]                                     #Key
            order_dict["messageLength"] = data[4]                           #Message Length
            order_dict["requestType"] = data[5]                             #Request Type
            order_dict["messageSequence"] = data[6]                         #Message Sequence
            order_dict["messageDate"] = data[7]                             #Date
            order_dict["messageTime"] = data[8]                             #Time
            order_dict["messageCategory"] = data[9]                         #Message Category
            order_dict["messagePriority"] = data[10]                        #Priority
            order_dict["messageType"] = data[11]                            #Message Type
            order_dict["orderMatchAccount"] = data[12]                      #Order Match Account
            order_dict["orderExchangeCode"] = data[13]                      #Exchange Code
            if data[11] == '4' or data[11] == '5':
                order_dict["stockCode"] = data[14]                     #Stock Code
                order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[15]).upper(),str(data[15]))                          # Order Flow
                order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[16]).upper(),str(data[16]))                    #Limit Market Flag
                order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[17]).upper(),str(data[17]))                          #OrderType
                order_dict["orderLimitRate"] = data[18]                     #Limit Rate
                order_dict["productType"] = tux_to_user_value['productType'].get(str(data[19]).upper(),str(data[19]))                        #Product Type
                order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[20]).upper(),str(data[20]))                        # Order Status
                order_dict["orderDate"] = data[21]                          #Order  Date
                order_dict["orderTradeDate"] = data[22]                     #Trade Date
                order_dict["orderReference"] = data[23]                     #Order Reference
                order_dict["orderQuantity"] = data[24]                      #Order Quantity
                order_dict["openQuantity"] = data[25]                       #Open Quantity
                order_dict["orderExecutedQuantity"] = data[26]              #Order Executed Quantity
                order_dict["cancelledQuantity"] = data[27]                  #Cancelled Quantity
                order_dict["expiredQuantity"] = data[28]                    #Expired Quantity
                order_dict["orderDisclosedQuantity"] = data[29]             # Order Disclosed Quantity
                order_dict["orderStopLossTrigger"] = data[30]               #Order Stop Loss Triger
                order_dict["orderSquareFlag"] = data[31]                    #Order Square Flag
                order_dict["orderAmountBlocked"] = data[32]                 # Order Amount Blocked
                order_dict["orderPipeId"] = data[33]                        #Order PipeId
                order_dict["channel"] = data[34]                            #Channel
                order_dict["exchangeSegmentCode"] = data[35]                #Exchange Segment Code
                order_dict["exchangeSegmentSettlement"] = data[36]          #Exchange Segment Settlement 
                order_dict["segmentDescription"] = data[37]                 #Segment Description
                order_dict["marginSquareOffMode"] = data[38]                #Margin Square Off Mode
                order_dict["orderValidDate"] = data[40]                     #Order Valid Date
                order_dict["orderMessageCharacter"] = data[41]              #Order Message Character
                order_dict["averageExecutedRate"] = data[42]                #Average Exited Rate
                order_dict["orderPriceImprovementFlag"] = data[43]          #Order Price Flag
                order_dict["orderMBCFlag"] = data[44]                       #Order MBC Flag
                order_dict["orderLimitOffset"] = data[45]                   #Order Limit Offset
                order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
            elif data[11] == '6' or data[11] == '7':
                order_dict["stockCode"] = data[14]                         #stockCode
                order_dict["productType"] =  tux_to_user_value['productType'].get(str(data[15]).upper(),str(data[15]))                        #Product Type
                order_dict["optionType"] = tux_to_user_value['optionType'].get(str(data[16]).upper(),str(data[16]))                         #Option Type
                order_dict["exerciseType"] = data[17]                       #Exercise Type
                order_dict["strikePrice"] = data[18]                        #Strike Price
                order_dict["expiryDate"] = data[19]                         #Expiry Date
                order_dict["orderValidDate"] = data[20]                     #Order Valid Date
                order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[21]).upper(),str(data[21]))                          #Order  Flow
                order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[22]).upper(),str(data[22]))                    #Limit Market Flag
                order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[23]).upper(),str(data[23]))                          #Order Type
                order_dict["limitRate"] = data[24]                          #Limit Rate
                order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[25]).upper(),str(data[25]))                        #Order Status
                order_dict["orderReference"] = data[26]                     #Order Reference
                order_dict["orderTotalQuantity"] = data[27]                 #Order Total Quantity
                order_dict["executedQuantity"] = data[28]                   #Executed Quantity
                order_dict["cancelledQuantity"] = data[29]                  #Cancelled Quantity
                order_dict["expiredQuantity"] = data[30]                    #Expired Quantity
                order_dict["stopLossTrigger"] = data[31]                    #Stop Loss Trigger
                order_dict["specialFlag"] = data[32]                        #Special Flag
                order_dict["pipeId"] = data[33]                             #PipeId
                order_dict["channel"] = data[34]                            #Channel
                order_dict["modificationOrCancelFlag"] = data[35]           #Modification or Cancel Flag
                order_dict["tradeDate"] = data[36]                          #Trade Date
                order_dict["acknowledgeNumber"] = data[37]                  #Acknowledgement Number
                order_dict["stopLossOrderReference"] = data[37]             #Stop Loss Order Reference
                order_dict["totalAmountBlocked"] = data[38]                 # Total Amount Blocked
                order_dict["averageExecutedRate"] = data[39]                #Average Executed Rate
                order_dict["cancelFlag"] = data[40]                         #Cancel Flag
                order_dict["squareOffMarket"] = data[41]                    #SquareOff Market
                order_dict["quickExitFlag"] = data[42]                      #Quick Exit Flag
                order_dict["stopValidTillDateFlag"] = data[43]              #Stop Valid till Date Flag
                order_dict["priceImprovementFlag"] = data[44]               #Price Improvement Flag
                order_dict["conversionImprovementFlag"] = data[45]          #Conversion Improvement Flag
                order_dict["trailUpdateCondition"] = data[45]               #Trail Update Condition
                order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
            return order_dict
        exchange = str.split(data[0], '!')[0].split('.')[0]
        data_type = str.split(data[0], '!')[0].split('.')[1]
        if exchange == '6':
            data_dict = {}
            data_dict["symbol"] = data[0]
            data_dict["AndiOPVolume"] = data[1]
            data_dict["Reserved"] = data[2]
            data_dict["IndexFlag"] = data[3]
            data_dict["ttq"] = data[4]
            data_dict["last"] = data[5]
            data_dict["ltq"] = data[6]
            data_dict["ltt"] = datetime.fromtimestamp(data[7]).strftime('%c')
            data_dict["AvgTradedPrice"] = data[8]
            data_dict["TotalBuyQnt"] = data[9]
            data_dict["TotalSellQnt"] = data[10]
            data_dict["ReservedStr"] = data[11]
            data_dict["ClosePrice"] = data[12]
            data_dict["OpenPrice"] = data[13]
            data_dict["HighPrice"] = data[14]
            data_dict["LowPrice"] = data[15]
            data_dict["ReservedShort"] = data[16]
            data_dict["CurrOpenInterest"] = data[17]
            data_dict["TotalTrades"] = data[18]
            data_dict["HightestPriceEver"] = data[19]
            data_dict["LowestPriceEver"] = data[20]
            data_dict["TotalTradedValue"] = data[21]
            marketDepthIndex = 0
            for i in range(22, len(data)):
                data_dict["Quantity-"+str(marketDepthIndex)] = data[i][0]
                data_dict["OrderPrice-"+str(marketDepthIndex)] = data[i][1]
                data_dict["TotalOrders-"+str(marketDepthIndex)] = data[i][2]
                data_dict["Reserved-"+str(marketDepthIndex)] = data[i][3]
                data_dict["SellQuantity-"+str(marketDepthIndex)] = data[i][4]
                data_dict["SellOrderPrice-"+str(marketDepthIndex)] = data[i][5]
                data_dict["SellTotalOrders-"+str(marketDepthIndex)] = data[i][6]
                data_dict["SellReserved-"+str(marketDepthIndex)] = data[i][7]
                marketDepthIndex += 1
        if exchange == '3':
            nifty_data = dict()
            nifty_data['stock_code'] = data[0]
            nifty_data['open'] = data[1]
            nifty_data['high'] = data[2]
            nifty_data['low'] = data[3]
            nifty_data['previous_close'] = data[4]
            nifty_data['last_trade_price'] = data[5]
            nifty_data['last_trade_quantity'] = data[6]
            nifty_data['last_traded_time'] = data[7]
            nifty_data['total_traded_volume'] = data[8]
            nifty_data['percentage_change'] = data[9]
            nifty_data['absolute_change'] = data[10]
            nifty_data['weighted_average'] = data[11]
            nifty_data['bid_price'] = data[12]
            nifty_data['bid_quantity'] = data[13]
            nifty_data['offer_price'] = data[14]
            nifty_data['offer_quantity'] = data[15]
            nifty_data['open_interest_value'] = data[16]
            # nifty_data['expiry_date'] = data[17]
            return(nifty_data)  
        elif data_type == '1':
            data_dict = {
                "symbol": data[0],
                "open": data[1],
                "last": data[2],
                "high": data[3],
                "low": data[4],
                "change": data[5],
                "bPrice": data[6],
                "bQty": data[7],
                "sPrice": data[8],
                "sQty": data[9],
                "ltq": data[10],
                "avgPrice": data[11],
                "quotes": "Quotes Data"
            }
            # For NSE & BSE conversion
            if len(data) == 21:
                data_dict["ttq"] = data[12]
                data_dict["totalBuyQt"] = data[13]
                data_dict["totalSellQ"] = data[14]
                data_dict["ttv"] = data[15]
                data_dict["trend"] = data[16]
                data_dict["lowerCktLm"] = data[17]
                data_dict["upperCktLm"] = data[18]
                data_dict["ltt"] = datetime.fromtimestamp(
                    data[19]).strftime('%c')
                data_dict["close"] = data[20]
            # For FONSE & CDNSE conversion
            elif len(data) == 23:
                data_dict["OI"] = data[12]
                data_dict["CHNGOI"] = data[13]
                data_dict["ttq"] = data[14]
                data_dict["totalBuyQt"] = data[15]
                data_dict["totalSellQ"] = data[16]
                data_dict["ttv"] = data[17]
                data_dict["trend"] = data[18]
                data_dict["lowerCktLm"] = data[19]
                data_dict["upperCktLm"] = data[20]
                data_dict["ltt"] = datetime.fromtimestamp(
                    data[21]).strftime('%c')
                data_dict["close"] = data[22]
        else:
            data_dict = {
                "symbol": data[0],
                "time": datetime.fromtimestamp(data[1]).strftime('%c'),
                "depth": parse_market_depth(data[2], exchange),
                "quotes": "Market Depth"
            }
        if exchange == '4' and len(data) == 21:
            data_dict['exchange'] = 'NSE Equity'
        elif exchange == '1':
            data_dict['exchange'] = 'BSE'
        elif exchange == '13':
            data_dict['exchange'] = 'NSE Currency'
        elif exchange == '4' and len(data) == 23:
            data_dict['exchange'] = 'NSE Futures & Options'
        elif exchange == '6':
            data_dict['exchange'] = 'Commodity'
        return data_dict
# CallBack functions to receive feeds
def on_ticks(data):
    ticks = parse_data(data)
    print(ticks)
#Connect to receive feeds
sio.on('order', on_ticks)
sio.wait()
#Disconnect from the server
sio.emit("disconnect", "transport close")
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://breezeapi.icicidirect.com")
    .method("GET", null)
    .addHeader("User-Agent", "XYZABC")
    .addHeader("user", "LZLAL")
    .addHeader("token", "12i299")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://breezeapi.icicidirect.com");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
client.UserAgent = "XYZABC";
request.AddHeader("user", "LZLAL");
request.AddHeader("token", "12i299");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'sourceNumber': '1', 
'group': '', 
'userId': 'AG570549', 
'key': '', 
'messageLength': '\x19249', 
'requestType': '5', 
'messageSequence": '2025031001818814', 
'messageDate': '10-03-2025', 
'messageTime': '14:13:22', 
'messageCategory': 'Intraday Calls', 
'messagePriority': 'N', 
'messageType': '6', 
'orderMatchAccount': '8510232533', 
'orderExchangeCode': 'NFO', 
'stockCode': 'NIFTY', 
'productType': 'Options', 
'optionType': 'Call', 
'exerciseType': 'E", 
'strikePrice': '2310000', 
'expiryDate': '13-Mar-2025', 
'orderValidDate': '10-Mar-2025', 
'orderFlow': 'Buy', 
'limitMarketFlag': 'Limit', 
'orderType': 'Day', 
'limitRate: 100', 
'orderStatus": "Requested', 
'orderReference': '202503102500012717', 
'orderTotalQuantity': '600', 
'executedQuantity': '0', 
'cancelled Quantity': '0', 
'expiredQuantity': '0', 
'stopLossTrigger': '0', 
'specialFlag': 'N', 
'pipeId': '25', 
'channel': 'WEB', 
'modificationOrCancelFlag": 'Y', 
'tradeDate': '10-Mar-2025', 
'acknowledgeNumber':'',
stopLossOrderReference': '', 
'totalAmountBlocked': '', 
'averageExecutedRate': "0.000000", 
'cancelFlag': '0.000000', 
'squareOffMarket': 'N', 
'quickExitFlag': 'N', 
'stopValidTillDateFlag': 'Y', 
'priceImprovementFlag': 'N',
'conversion ImprovementFlag': 'N', 
'trailUpdateCondition': 'N', 
'systemPartnerCode': 'N'}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://livefeeds.icicidirect.com/ | 
| SourceNumber | Source Number | 
| userId | User ID | 
| messageLength | Message Length | 
| requestType | Request Type | 
| messageSequence | Message Sequence | 
| messageDate | Message Date | 
| messageTime | Message Time | 
| messageCategory | Message Category | 
| Intraday Calls | Intraday Calls | 
| messagePriority Message Priority | |
| messageType | Message Type | 
| orderMatchAccount | Order Match Account | 
| orderExchangeCode | Order Exchange Code | 
| stockCode | Stock Code | 
| orderFlow | Order Flow | 
| limitMarketFlag | Limit Market Flag | 
| orderType | Order Type | 
| orderLimitRate | Order Limit Rate | 
| productType | Product Type | 
| orderStatus | Order Status | 
| orderDate | Order Date | 
| orderTradeDate | Order Trade Date | 
| orderReference | Order Reference | 
| orderQuantity | Order Quantity | 
| openQuantity | Open Quantity | 
| orderExecutedQuantity | Order Executed Quantity | 
| cancelledQuantity | Cancelled Quantity | 
| expiredQuantity | Expired Quantity | 
| orderDisclosedQuantity | Order Disclosed Quantity | 
| orderStopLossTrigger | Order Stop Loss Trigger | 
| orderSquareFlag | Order Square Flag | 
| orderAmountBlocked | Order Amount Blocked | 
| orderPipeId | Order PipeId | 
| channel | Channel | 
| exchangeSegmentCode | Exchange Segment Code | 
| exchangeSegmentSettlement | Exchange Segment Settlement | 
| segmentDescription | Segment Description | 
| marginSquareOffMode | Margin Square Off Mode | 
| orderMessageCharacter | Order Message Character | 
| averageExecutedRate | Average Executed Rate | 
| orderPriceImprovementFlag | Order Price Improvement Flag | 
| orderMBCFlag | Order MBC Flag | 
| orderLimitOffset | Order Limit Offset | 
| systemPartnerCode | System Partner Code | 
Note : After every state change in order status, new notification would be received instantaneously.
Tick Data Stream
Tick By Tick Market Data
var axios = require('axios');
var config = {
    method: 'get',
    url: 'https://breezeapi.icicidirect.com',
    headers: { 
        'User-Agent': 'XYZABC', 
        'user': 'LZLAL', 
        'token': '12i299'
    }
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import base64 
import socketio
from datetime import datetime
#Get User ID and Session Token
session_key = "SESSION_TOKEN_FROM_CUSTOMER_DETAILS_API"
#e.g session_key = "QUYyOTUzMTM6NjY5ODc5NzY="
user_id, session_token = base64.b64decode(session_key.encode('ascii')).decode('ascii').split(":")
#e.g Decoded value - AF296713:66987976, after split user_id = AF295313, session_token = 6698797
# Python Socket IO Client
sio = socketio.Client()
script_code = "4.1!2885" #Subscribe more than one stock at a time
auth = {"user": user_id, "token": session_token} 
sio.connect("https://livestream.icicidirect.com", headers={"User-Agent":"python-socketio[client]/socket"}, 
                auth=auth, transports="websocket", wait_timeout=3)
if sio.connected:
    print("Connection established successfully!")
else:
    print("Failed to connect.")
tux_to_user_value = {
    "orderFlow": {
        "B": "Buy",
        "S": "Sell",
        "N": "NA"
    },
    "limitMarketFlag": {
        "L": "Limit",
        "M": "Market",
        "S": "StopLoss"
    },
    "orderType": {
        "T": "Day",
        "I": "IoC",
        "V": "VTC"
    },
    "productType": {
        "F": "Futures",
        "O": "Options",
        "P": "FuturePlus",
        "U": "FuturePlus_sltp",
        "I": "OptionPlus",
        "C": "Cash",
        "Y": "eATM",
        "B": "BTST",
        "M": "Margin",
        "T": "MarginPlus"
    },
    "orderStatus": {
        "A": "All",
        "R": "Requested",
        "Q": "Queued",
        "O": "Ordered",
        "P": "Partially Executed",
        "E": "Executed",
        "J": "Rejected",
        "X": "Expired",
        "B": "Partially Executed And Expired",
        "D": "Partially Executed And Cancelled",
        "F": "Freezed",
        "C": "Cancelled"
    },
    "optionType": {
        "C": "Call",
        "P": "Put",
        "*": "Others"
    },
}
# parse market depth
def parse_market_depth(self, data, exchange):
    depth = []
    counter = 0
    for lis in data:
        counter += 1
        dict = {}
        if exchange == '1':
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BestSellRate-"+str(counter)] = lis[2]
            dict["BestSellQty-"+str(counter)] = lis[3]
            depth.append(dict)
        else:
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BuyNoOfOrders-"+str(counter)] = lis[2]
            dict["BuyFlag-"+str(counter)] = lis[3]
            dict["BestSellRate-"+str(counter)] = lis[4]
            dict["BestSellQty-"+str(counter)] = lis[5]
            dict["SellNoOfOrders-"+str(counter)] = lis[6]
            dict["SellFlag-"+str(counter)] = lis[7]
            depth.append(dict)
    return depth
# parsing logic
def parse_data(data):
    if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0]:
        order_dict = {}
        order_dict["sourceNumber"] = data[0]                            #Source Number
        order_dict["group"] = data[1]                                   #Group
        order_dict["userId"] = data[2]                                  #User_id
        order_dict["key"] = data[3]                                     #Key
        order_dict["messageLength"] = data[4]                           #Message Length
        order_dict["requestType"] = data[5]                             #Request Type
        order_dict["messageSequence"] = data[6]                         #Message Sequence
        order_dict["messageDate"] = data[7]                             #Date
        order_dict["messageTime"] = data[8]                             #Time
        order_dict["messageCategory"] = data[9]                         #Message Category
        order_dict["messagePriority"] = data[10]                        #Priority
        order_dict["messageType"] = data[11]                            #Message Type
        order_dict["orderMatchAccount"] = data[12]                      #Order Match Account
        order_dict["orderExchangeCode"] = data[13]                      #Exchange Code
        if data[11] == '4' or data[11] == '5':
            order_dict["stockCode"] = data[14]                     #Stock Code
            order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[15]).upper(),str(data[15]))                          # Order Flow
            order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[16]).upper(),str(data[16]))                    #Limit Market Flag
            order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[17]).upper(),str(data[17]))                          #OrderType
            order_dict["orderLimitRate"] = data[18]                     #Limit Rate
            order_dict["productType"] = tux_to_user_value['productType'].get(str(data[19]).upper(),str(data[19]))                        #Product Type
            order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[20]).upper(),str(data[20]))                        # Order Status
            order_dict["orderDate"] = data[21]                          #Order  Date
            order_dict["orderTradeDate"] = data[22]                     #Trade Date
            order_dict["orderReference"] = data[23]                     #Order Reference
            order_dict["orderQuantity"] = data[24]                      #Order Quantity
            order_dict["openQuantity"] = data[25]                       #Open Quantity
            order_dict["orderExecutedQuantity"] = data[26]              #Order Executed Quantity
            order_dict["cancelledQuantity"] = data[27]                  #Cancelled Quantity
            order_dict["expiredQuantity"] = data[28]                    #Expired Quantity
            order_dict["orderDisclosedQuantity"] = data[29]             # Order Disclosed Quantity
            order_dict["orderStopLossTrigger"] = data[30]               #Order Stop Loss Triger
            order_dict["orderSquareFlag"] = data[31]                    #Order Square Flag
            order_dict["orderAmountBlocked"] = data[32]                 # Order Amount Blocked
            order_dict["orderPipeId"] = data[33]                        #Order PipeId
            order_dict["channel"] = data[34]                            #Channel
            order_dict["exchangeSegmentCode"] = data[35]                #Exchange Segment Code
            order_dict["exchangeSegmentSettlement"] = data[36]          #Exchange Segment Settlement 
            order_dict["segmentDescription"] = data[37]                 #Segment Description
            order_dict["marginSquareOffMode"] = data[38]                #Margin Square Off Mode
            order_dict["orderValidDate"] = data[40]                     #Order Valid Date
            order_dict["orderMessageCharacter"] = data[41]              #Order Message Character
            order_dict["averageExecutedRate"] = data[42]                #Average Exited Rate
            order_dict["orderPriceImprovementFlag"] = data[43]          #Order Price Flag
            order_dict["orderMBCFlag"] = data[44]                       #Order MBC Flag
            order_dict["orderLimitOffset"] = data[45]                   #Order Limit Offset
            order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
        elif data[11] == '6' or data[11] == '7':
            order_dict["stockCode"] = data[14]                         #stockCode
            order_dict["productType"] =  tux_to_user_value['productType'].get(str(data[15]).upper(),str(data[15]))                        #Product Type
            order_dict["optionType"] = tux_to_user_value['optionType'].get(str(data[16]).upper(),str(data[16]))                         #Option Type
            order_dict["exerciseType"] = data[17]                       #Exercise Type
            order_dict["strikePrice"] = data[18]                        #Strike Price
            order_dict["expiryDate"] = data[19]                         #Expiry Date
            order_dict["orderValidDate"] = data[20]                     #Order Valid Date
            order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[21]).upper(),str(data[21]))                          #Order  Flow
            order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[22]).upper(),str(data[22]))                    #Limit Market Flag
            order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[23]).upper(),str(data[23]))                          #Order Type
            order_dict["limitRate"] = data[24]                          #Limit Rate
            order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[25]).upper(),str(data[25]))                        #Order Status
            order_dict["orderReference"] = data[26]                     #Order Reference
            order_dict["orderTotalQuantity"] = data[27]                 #Order Total Quantity
            order_dict["executedQuantity"] = data[28]                   #Executed Quantity
            order_dict["cancelledQuantity"] = data[29]                  #Cancelled Quantity
            order_dict["expiredQuantity"] = data[30]                    #Expired Quantity
            order_dict["stopLossTrigger"] = data[31]                    #Stop Loss Trigger
            order_dict["specialFlag"] = data[32]                        #Special Flag
            order_dict["pipeId"] = data[33]                             #PipeId
            order_dict["channel"] = data[34]                            #Channel
            order_dict["modificationOrCancelFlag"] = data[35]           #Modification or Cancel Flag
            order_dict["tradeDate"] = data[36]                          #Trade Date
            order_dict["acknowledgeNumber"] = data[37]                  #Acknowledgement Number
            order_dict["stopLossOrderReference"] = data[37]             #Stop Loss Order Reference
            order_dict["totalAmountBlocked"] = data[38]                 # Total Amount Blocked
            order_dict["averageExecutedRate"] = data[39]                #Average Executed Rate
            order_dict["cancelFlag"] = data[40]                         #Cancel Flag
            order_dict["squareOffMarket"] = data[41]                    #SquareOff Market
            order_dict["quickExitFlag"] = data[42]                      #Quick Exit Flag
            order_dict["stopValidTillDateFlag"] = data[43]              #Stop Valid till Date Flag
            order_dict["priceImprovementFlag"] = data[44]               #Price Improvement Flag
            order_dict["conversionImprovementFlag"] = data[45]          #Conversion Improvement Flag
            order_dict["trailUpdateCondition"] = data[45]               #Trail Update Condition
            order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
        return order_dict
    exchange = str.split(data[0], '!')[0].split('.')[0]
    data_type = str.split(data[0], '!')[0].split('.')[1]
    if exchange == '6':
        data_dict = {}
        data_dict["symbol"] = data[0]
        data_dict["AndiOPVolume"] = data[1]
        data_dict["Reserved"] = data[2]
        data_dict["IndexFlag"] = data[3]
        data_dict["ttq"] = data[4]
        data_dict["last"] = data[5]
        data_dict["ltq"] = data[6]
        data_dict["ltt"] = datetime.fromtimestamp(data[7]).strftime('%c')
        data_dict["AvgTradedPrice"] = data[8]
        data_dict["TotalBuyQnt"] = data[9]
        data_dict["TotalSellQnt"] = data[10]
        data_dict["ReservedStr"] = data[11]
        data_dict["ClosePrice"] = data[12]
        data_dict["OpenPrice"] = data[13]
        data_dict["HighPrice"] = data[14]
        data_dict["LowPrice"] = data[15]
        data_dict["ReservedShort"] = data[16]
        data_dict["CurrOpenInterest"] = data[17]
        data_dict["TotalTrades"] = data[18]
        data_dict["HightestPriceEver"] = data[19]
        data_dict["LowestPriceEver"] = data[20]
        data_dict["TotalTradedValue"] = data[21]
        marketDepthIndex = 0
        for i in range(22, len(data)):
            data_dict["Quantity-"+str(marketDepthIndex)] = data[i][0]
            data_dict["OrderPrice-"+str(marketDepthIndex)] = data[i][1]
            data_dict["TotalOrders-"+str(marketDepthIndex)] = data[i][2]
            data_dict["Reserved-"+str(marketDepthIndex)] = data[i][3]
            data_dict["SellQuantity-"+str(marketDepthIndex)] = data[i][4]
            data_dict["SellOrderPrice-"+str(marketDepthIndex)] = data[i][5]
            data_dict["SellTotalOrders-"+str(marketDepthIndex)] = data[i][6]
            data_dict["SellReserved-"+str(marketDepthIndex)] = data[i][7]
            marketDepthIndex += 1
    elif data_type == '1':
        data_dict = {
            "symbol": data[0],
            "open": data[1],
            "last": data[2],
            "high": data[3],
            "low": data[4],
            "change": data[5],
            "bPrice": data[6],
            "bQty": data[7],
            "sPrice": data[8],
            "sQty": data[9],
            "ltq": data[10],
            "avgPrice": data[11],
            "quotes": "Quotes Data"
        }
        # For NSE & BSE conversion
        if len(data) == 21:
            data_dict["ttq"] = data[12]
            data_dict["totalBuyQt"] = data[13]
            data_dict["totalSellQ"] = data[14]
            data_dict["ttv"] = data[15]
            data_dict["trend"] = data[16]
            data_dict["lowerCktLm"] = data[17]
            data_dict["upperCktLm"] = data[18]
            data_dict["ltt"] = datetime.fromtimestamp(
                data[19]).strftime('%c')
            data_dict["close"] = data[20]
        # For FONSE & CDNSE conversion
        elif len(data) == 23:
            data_dict["OI"] = data[12]
            data_dict["CHNGOI"] = data[13]
            data_dict["ttq"] = data[14]
            data_dict["totalBuyQt"] = data[15]
            data_dict["totalSellQ"] = data[16]
            data_dict["ttv"] = data[17]
            data_dict["trend"] = data[18]
            data_dict["lowerCktLm"] = data[19]
            data_dict["upperCktLm"] = data[20]
            data_dict["ltt"] = datetime.fromtimestamp(
                data[21]).strftime('%c')
            data_dict["close"] = data[22]
    else:
        data_dict = {
            "symbol": data[0],
            "time": datetime.fromtimestamp(data[1]).strftime('%c'),
            "depth": parse_market_depth(data[2], exchange),
            "quotes": "Market Depth"
        }
    if exchange == '4' and len(data) == 21:
        data_dict['exchange'] = 'NSE Equity'
    elif exchange == '1':
        data_dict['exchange'] = 'BSE'
    elif exchange == '13':
        data_dict['exchange'] = 'NSE Currency'
    elif exchange == '4' and len(data) == 23:
        data_dict['exchange'] = 'NSE Futures & Options'
    elif exchange == '6':
        data_dict['exchange'] = 'Commodity'
    return data_dict
# CallBack functions to receive feeds
def on_ticks(data):
    ticks = parse_data(data)
    print(ticks)
sio.emit('join', script_code)
sio.on('stock', on_ticks)
sio.wait()
#Unwatch from the stock
sio.emit("leave", script_code)
#Disconnect from the server
sio.emit("disconnect", "transport close")
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://breezeapi.icicidirect.com")
    .method("GET", null)
    .addHeader("User-Agent", "XYZABC")
    .addHeader("user", "LZLAL")
    .addHeader("token", "12i299")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://breezeapi.icicidirect.com");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
client.UserAgent = "XYZABC";
request.AddHeader("user", "LZLAL");
request.AddHeader("token", "12i299");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'symbol': '4.112885', 
'open': 1240, 
'last': 1236.2, 
'high': 1244.8, 
'low': 1229.75, 
'change': -0.18, 
'bPrice': 1236.2, 
'boty': 63, 
'sPrice': 1236.55, 
'sQty': 18, 
'ltq': 100, 
'avgPrice': 1235.13, 
'quotes': 'Quotes Data', 
'ttq': 2158026, 
'totalBuyQt': 237149, 
'totalSello': 370391, 
'ttv': '266.54C', 
'trend': '', 
'lowerCktLm': 1114.6, 
'upperCktLm': 1362.2, 
'ltt': 'Tue Mar 11 09:38:22 2025', 
'close': 1238.4, 
'exchange': 'NSE Equity'}
Request Information
The WebSocket API uses WebSocket protocol to establish a single long standing TCP connection after an HTTP handshake to receive streaming quotes.To connect to the ICICI's WebSocket API, you will need a WebSocket client library in your choice of programming language we will provide the sample code supported in 4 languages(Python, C#, Javascript and Java). You can subscribe for stock-token on a single WebSocket connection and receive live stream for them.
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://livestream.icicidirect.com/ | 
| Symbol Stock | Token Value | 
| Open | Open Price | 
| Last | Last Price | 
| high | High Price | 
| Low | Low Price | 
| change | change | 
| bPrice | Buy Price | 
| bQty | Buy Quantity | 
| sPrice | Selling Price | 
| sQty | Selling Quantity | 
| ltq | Last Traded Quantity | 
| avgPrice | Average Price | 
| quotes | Quotes | 
| ttq | Total Traded Quantity | 
| totalBuyQt | Total Buy Quantity | 
| totalSellQt | Total Sell Quantity | 
| ttv | Total Traded Volume | 
| trend | trend | 
| lowerCktLM Lower | Circuit Limit | 
| upperCktLM | Upper Circuit Limit | 
| ltt | Last Traded Time | 
| close Close | Price | 
| exchange | Exchange | 
| stock_name | Stock Name | 
One Click F&O Stream
Oneclick Strategy
var axios = require('axios');
var config = {
    method: 'get',
    url: 'https://breezeapi.icicidirect.com',
    headers: { 
        'User-Agent': 'XYZABC', 
        'user': 'LZLAL', 
        'token': '12i299'
    }
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
#import required libraries
import base64 
import socketio
#Get User ID and Session Token
session_key = "SESSION_TOKEN_FROM_CUSTOMER_DETAILS_API"
#e.g session_key = "QUYyOTUzMTM6NjY5ODc5NzY="
user_id, session_token = base64.b64decode(session_key.encode('ascii')).decode('ascii').split(":")
#e.g Decoded value - AF296713:66987976, after split user_id = AF295313, session_token = 6698797
# Python Socket IO Client
sio = socketio.Client()
auth = {"user": user_id, "token": session_token}
sio.connect("https://livefeeds.icicidirect.com", headers={"User-Agent":"python-socketio[client]/socket"}, 
                auth=auth, transports="websocket", wait_timeout=3)
# Script Code of Stock or Instrument  e.g 4.1!1594, 1.1!500209 , 13.1!5023, 6.1!247457. 
script_code = ["one_click_fno"] #Subscribe more than one stock at a time
# channel_name = 'stock'
#parsing logic 
def parse_data(data):
    if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0] and len(data) == 28:
        strategy_dict = dict()
        strategy_dict['strategy_date'] = data[0]
        strategy_dict['modification_date'] = data[1]
        strategy_dict['portfolio_id'] = data[2]
        strategy_dict['call_action'] = data[3]
        strategy_dict['portfolio_name'] = data[4]
        strategy_dict['exchange_code'] = data[5]
        strategy_dict['product_type'] = data[6]
        #strategy_dict['INDEX/STOCK'] = data[7]
        strategy_dict['underlying'] = data[8]
        strategy_dict['expiry_date'] = data[9]
        #strategy_dict['OCR_EXER_TYP'] = data[10]
        strategy_dict['option_type'] = data[11]
        strategy_dict['strike_price'] = data[12]
        strategy_dict['action'] = data[13]
        strategy_dict['recommended_price_from'] = data[14]
        strategy_dict['recommended_price_to'] = data[15]
        strategy_dict['minimum_lot_quantity'] = data[16]
        strategy_dict['last_traded_price'] = data[17]
        strategy_dict['best_bid_price'] = data[18]
        strategy_dict['best_offer_price'] = data[19]
        strategy_dict['last_traded_quantity'] = data[20]
        strategy_dict['target_price'] = data[21]           
        strategy_dict['expected_profit_per_lot'] = data[22]
        strategy_dict['stop_loss_price'] = data[23]
        strategy_dict['expected_loss_per_lot'] = data[24]
        strategy_dict['total_margin'] = data[25]
        strategy_dict['leg_no'] = data[26]
        strategy_dict['status'] = data[27]
        return(strategy_dict)
#CallBack functions to receive feeds
def on_ticks(ticks):
    print(ticks)
    ticks = parse_data(ticks)
    print(ticks)
#Connect to receive feeds
sio.emit('join', script_code)
sio.on('stock', on_ticks)
#Unwatch from the stock
sio.emit("leave", script_code)
#Disconnect from the server
sio.emit("disconnect", "transport close")
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://breezeapi.icicidirect.com")
    .method("GET", null)
    .addHeader("User-Agent", "XYZABC")
    .addHeader("user", "LZLAL")
    .addHeader("token", "12i299")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://breezeapi.icicidirect.com");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
client.UserAgent = "XYZABC";
request.AddHeader("user", "LZLAL");
request.AddHeader("token", "12i299");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'strategy_date': '2025-02-07 14:29:29', 
'modification_date': '2025-02-07 14:29:29', 
'portfolio_id': '133444', 
'call_action': 'Call Initiated', 
'portfolio_name': 'Index Long Call', 
'exchange_code': 'NFO', 
'product_type': 'options', 
'underlying': 'NIFTY ', 
'expiry_date': '2025-02-13 00:00:00', 
'option_type': 'call', 
'strike_price': '23450', 
'action': 'buy', 
'recommended_price_from': '175', 
'recommended_price_to': '178', 
'minimum_lot_quantity': '75', 
'last_traded_price': '181.45', 
'best_bid_price': '181.5', 
'best_offer_price': '181.9', 
'last_traded_quantity': '23461.65', 
'target_price': '240', 
'expected_profit_per_lot': '4762.5', 
'stop_loss_price': '144.9', 
'expected_loss_per_lot': '2370', 
'total_margin': '13350', 
'leg_no': '1', 
'status': 'active'}
The One Click F&O is a functionality which lets you chose from range of strategies curated by our award winning research team. It helps you save hours and hours of research and analysis time required to make a trading decision. With this function of One Click F&O, our research team does all the heavy lifting of research and analysis of over 170 F&O stocks with different expiries in real time and develop high probability winning opportunities for our customers. For the strategies available, you can either chose the desired strategy and place order in a single click or opt for customising by copying our recommended strategy to suit your requirement. You can also view margin required, maximum profit/loss, timeframe to hold the strategy before making a trade.
Get User ID and Session Token
The User Id and session Token can be obtained by decoding the 'session_token' from base64 , This session token obtained via get_customer_details API. An example is given in python
Connect to Websocket Server
Websocket endpoint is https://livefeeds.icicidirect.com/. Please make sure to pass the auth credentials and User-Agent in headers
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://livefeeds.icicidirect.com/ | 
One Click Equity Stream
Oneclick Equity Strategy(iclick_2_gain)
var axios = require('axios');
var config = {
    method: 'get',
    url: 'https://breezeapi.icicidirect.com',
    headers: { 
        'User-Agent': 'XYZABC', 
        'user': 'LZLAL', 
        'token': '12i299'
    }
};
axios(config)
.then(function (response) {
    console.log(JSON.stringify(response.data));
})
.catch(function (error) {
    console.log(error);
});
import base64 
import socketio
from datetime import datetime
#Get User ID and Session Token
session_key = "SESSION_TOKEN_FROM_CUSTOMER_DETAILS_API"
#e.g session_key = "QUYyOTUzMTM6NjY5ODc5NzY="
user_id, session_token = base64.b64decode(session_key.encode('ascii')).decode('ascii').split(":")
#e.g Decoded value - AF296713:66987976, after split user_id = AF295313, session_token = 6698797
# Python Socket IO Client
sio = socketio.Client()
script_code = ["i_click_2_gain"] #Subscribe more than one stock at a time
auth = {"user": user_id, "token": session_token} 
sio.connect("https://livefeeds.icicidirect.com", headers={"User-Agent":"python-socketio[client]/socket"}, 
                auth=auth, transports="websocket", wait_timeout=3)
if sio.connected:
    print("Connection established successfully!")
else:
    print("Failed to connect.")
tux_to_user_value = {
    "orderFlow": {
        "B": "Buy",
        "S": "Sell",
        "N": "NA"
    },
    "limitMarketFlag": {
        "L": "Limit",
        "M": "Market",
        "S": "StopLoss"
    },
    "orderType": {
        "T": "Day",
        "I": "IoC",
        "V": "VTC"
    },
    "productType": {
        "F": "Futures",
        "O": "Options",
        "P": "FuturePlus",
        "U": "FuturePlus_sltp",
        "I": "OptionPlus",
        "C": "Cash",
        "Y": "eATM",
        "B": "BTST",
        "M": "Margin",
        "T": "MarginPlus"
    },
    "orderStatus": {
        "A": "All",
        "R": "Requested",
        "Q": "Queued",
        "O": "Ordered",
        "P": "Partially Executed",
        "E": "Executed",
        "J": "Rejected",
        "X": "Expired",
        "B": "Partially Executed And Expired",
        "D": "Partially Executed And Cancelled",
        "F": "Freezed",
        "C": "Cancelled"
    },
    "optionType": {
        "C": "Call",
        "P": "Put",
        "*": "Others"
    },
}
# parse market depth
def parse_market_depth(self, data, exchange):
    depth = []
    counter = 0
    for lis in data:
        counter += 1
        dict = {}
        if exchange == '1':
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BestSellRate-"+str(counter)] = lis[2]
            dict["BestSellQty-"+str(counter)] = lis[3]
            depth.append(dict)
        else:
            dict["BestBuyRate-"+str(counter)] = lis[0]
            dict["BestBuyQty-"+str(counter)] = lis[1]
            dict["BuyNoOfOrders-"+str(counter)] = lis[2]
            dict["BuyFlag-"+str(counter)] = lis[3]
            dict["BestSellRate-"+str(counter)] = lis[4]
            dict["BestSellQty-"+str(counter)] = lis[5]
            dict["SellNoOfOrders-"+str(counter)] = lis[6]
            dict["SellFlag-"+str(counter)] = lis[7]
            depth.append(dict)
    return depth
# parsing logic
def parse_data(data):
    if data and type(data) == list and len(data) > 0 and type(data[0]) == str and "!" not in data[0]:
        order_dict = {}
        order_dict["sourceNumber"] = data[0]                            #Source Number
        order_dict["group"] = data[1]                                   #Group
        order_dict["userId"] = data[2]                                  #User_id
        order_dict["key"] = data[3]                                     #Key
        order_dict["messageLength"] = data[4]                           #Message Length
        order_dict["requestType"] = data[5]                             #Request Type
        order_dict["messageSequence"] = data[6]                         #Message Sequence
        order_dict["messageDate"] = data[7]                             #Date
        order_dict["messageTime"] = data[8]                             #Time
        order_dict["messageCategory"] = data[9]                         #Message Category
        order_dict["messagePriority"] = data[10]                        #Priority
        order_dict["messageType"] = data[11]                            #Message Type
        order_dict["orderMatchAccount"] = data[12]                      #Order Match Account
        order_dict["orderExchangeCode"] = data[13]                      #Exchange Code
        if data[11] == '4' or data[11] == '5':
            order_dict["stockCode"] = data[14]                     #Stock Code
            order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[15]).upper(),str(data[15]))                          # Order Flow
            order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[16]).upper(),str(data[16]))                    #Limit Market Flag
            order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[17]).upper(),str(data[17]))                          #OrderType
            order_dict["orderLimitRate"] = data[18]                     #Limit Rate
            order_dict["productType"] = tux_to_user_value['productType'].get(str(data[19]).upper(),str(data[19]))                        #Product Type
            order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[20]).upper(),str(data[20]))                        # Order Status
            order_dict["orderDate"] = data[21]                          #Order  Date
            order_dict["orderTradeDate"] = data[22]                     #Trade Date
            order_dict["orderReference"] = data[23]                     #Order Reference
            order_dict["orderQuantity"] = data[24]                      #Order Quantity
            order_dict["openQuantity"] = data[25]                       #Open Quantity
            order_dict["orderExecutedQuantity"] = data[26]              #Order Executed Quantity
            order_dict["cancelledQuantity"] = data[27]                  #Cancelled Quantity
            order_dict["expiredQuantity"] = data[28]                    #Expired Quantity
            order_dict["orderDisclosedQuantity"] = data[29]             # Order Disclosed Quantity
            order_dict["orderStopLossTrigger"] = data[30]               #Order Stop Loss Triger
            order_dict["orderSquareFlag"] = data[31]                    #Order Square Flag
            order_dict["orderAmountBlocked"] = data[32]                 # Order Amount Blocked
            order_dict["orderPipeId"] = data[33]                        #Order PipeId
            order_dict["channel"] = data[34]                            #Channel
            order_dict["exchangeSegmentCode"] = data[35]                #Exchange Segment Code
            order_dict["exchangeSegmentSettlement"] = data[36]          #Exchange Segment Settlement 
            order_dict["segmentDescription"] = data[37]                 #Segment Description
            order_dict["marginSquareOffMode"] = data[38]                #Margin Square Off Mode
            order_dict["orderValidDate"] = data[40]                     #Order Valid Date
            order_dict["orderMessageCharacter"] = data[41]              #Order Message Character
            order_dict["averageExecutedRate"] = data[42]                #Average Exited Rate
            order_dict["orderPriceImprovementFlag"] = data[43]          #Order Price Flag
            order_dict["orderMBCFlag"] = data[44]                       #Order MBC Flag
            order_dict["orderLimitOffset"] = data[45]                   #Order Limit Offset
            order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
        elif data[11] == '6' or data[11] == '7':
            order_dict["stockCode"] = data[14]                         #stockCode
            order_dict["productType"] =  tux_to_user_value['productType'].get(str(data[15]).upper(),str(data[15]))                        #Product Type
            order_dict["optionType"] = tux_to_user_value['optionType'].get(str(data[16]).upper(),str(data[16]))                         #Option Type
            order_dict["exerciseType"] = data[17]                       #Exercise Type
            order_dict["strikePrice"] = data[18]                        #Strike Price
            order_dict["expiryDate"] = data[19]                         #Expiry Date
            order_dict["orderValidDate"] = data[20]                     #Order Valid Date
            order_dict["orderFlow"] = tux_to_user_value['orderFlow'].get(str(data[21]).upper(),str(data[21]))                          #Order  Flow
            order_dict["limitMarketFlag"] = tux_to_user_value['limitMarketFlag'].get(str(data[22]).upper(),str(data[22]))                    #Limit Market Flag
            order_dict["orderType"] = tux_to_user_value['orderType'].get(str(data[23]).upper(),str(data[23]))                          #Order Type
            order_dict["limitRate"] = data[24]                          #Limit Rate
            order_dict["orderStatus"] = tux_to_user_value['orderStatus'].get(str(data[25]).upper(),str(data[25]))                        #Order Status
            order_dict["orderReference"] = data[26]                     #Order Reference
            order_dict["orderTotalQuantity"] = data[27]                 #Order Total Quantity
            order_dict["executedQuantity"] = data[28]                   #Executed Quantity
            order_dict["cancelledQuantity"] = data[29]                  #Cancelled Quantity
            order_dict["expiredQuantity"] = data[30]                    #Expired Quantity
            order_dict["stopLossTrigger"] = data[31]                    #Stop Loss Trigger
            order_dict["specialFlag"] = data[32]                        #Special Flag
            order_dict["pipeId"] = data[33]                             #PipeId
            order_dict["channel"] = data[34]                            #Channel
            order_dict["modificationOrCancelFlag"] = data[35]           #Modification or Cancel Flag
            order_dict["tradeDate"] = data[36]                          #Trade Date
            order_dict["acknowledgeNumber"] = data[37]                  #Acknowledgement Number
            order_dict["stopLossOrderReference"] = data[37]             #Stop Loss Order Reference
            order_dict["totalAmountBlocked"] = data[38]                 # Total Amount Blocked
            order_dict["averageExecutedRate"] = data[39]                #Average Executed Rate
            order_dict["cancelFlag"] = data[40]                         #Cancel Flag
            order_dict["squareOffMarket"] = data[41]                    #SquareOff Market
            order_dict["quickExitFlag"] = data[42]                      #Quick Exit Flag
            order_dict["stopValidTillDateFlag"] = data[43]              #Stop Valid till Date Flag
            order_dict["priceImprovementFlag"] = data[44]               #Price Improvement Flag
            order_dict["conversionImprovementFlag"] = data[45]          #Conversion Improvement Flag
            order_dict["trailUpdateCondition"] = data[45]               #Trail Update Condition
            order_dict["systemPartnerCode"] = data[46]                  #System Partner Code
        return order_dict
    exchange = str.split(data[0], '!')[0].split('.')[0]
    data_type = str.split(data[0], '!')[0].split('.')[1]
    if exchange == '6':
        data_dict = {}
        data_dict["symbol"] = data[0]
        data_dict["AndiOPVolume"] = data[1]
        data_dict["Reserved"] = data[2]
        data_dict["IndexFlag"] = data[3]
        data_dict["ttq"] = data[4]
        data_dict["last"] = data[5]
        data_dict["ltq"] = data[6]
        data_dict["ltt"] = datetime.fromtimestamp(data[7]).strftime('%c')
        data_dict["AvgTradedPrice"] = data[8]
        data_dict["TotalBuyQnt"] = data[9]
        data_dict["TotalSellQnt"] = data[10]
        data_dict["ReservedStr"] = data[11]
        data_dict["ClosePrice"] = data[12]
        data_dict["OpenPrice"] = data[13]
        data_dict["HighPrice"] = data[14]
        data_dict["LowPrice"] = data[15]
        data_dict["ReservedShort"] = data[16]
        data_dict["CurrOpenInterest"] = data[17]
        data_dict["TotalTrades"] = data[18]
        data_dict["HightestPriceEver"] = data[19]
        data_dict["LowestPriceEver"] = data[20]
        data_dict["TotalTradedValue"] = data[21]
        marketDepthIndex = 0
        for i in range(22, len(data)):
            data_dict["Quantity-"+str(marketDepthIndex)] = data[i][0]
            data_dict["OrderPrice-"+str(marketDepthIndex)] = data[i][1]
            data_dict["TotalOrders-"+str(marketDepthIndex)] = data[i][2]
            data_dict["Reserved-"+str(marketDepthIndex)] = data[i][3]
            data_dict["SellQuantity-"+str(marketDepthIndex)] = data[i][4]
            data_dict["SellOrderPrice-"+str(marketDepthIndex)] = data[i][5]
            data_dict["SellTotalOrders-"+str(marketDepthIndex)] = data[i][6]
            data_dict["SellReserved-"+str(marketDepthIndex)] = data[i][7]
            marketDepthIndex += 1
    elif data_type == '1':
        data_dict = {
            "symbol": data[0],
            "open": data[1],
            "last": data[2],
            "high": data[3],
            "low": data[4],
            "change": data[5],
            "bPrice": data[6],
            "bQty": data[7],
            "sPrice": data[8],
            "sQty": data[9],
            "ltq": data[10],
            "avgPrice": data[11],
            "quotes": "Quotes Data"
        }
        # For NSE & BSE conversion
        if len(data) == 21:
            data_dict["ttq"] = data[12]
            data_dict["totalBuyQt"] = data[13]
            data_dict["totalSellQ"] = data[14]
            data_dict["ttv"] = data[15]
            data_dict["trend"] = data[16]
            data_dict["lowerCktLm"] = data[17]
            data_dict["upperCktLm"] = data[18]
            data_dict["ltt"] = datetime.fromtimestamp(
                data[19]).strftime('%c')
            data_dict["close"] = data[20]
        # For FONSE & CDNSE conversion
        elif len(data) == 23:
            data_dict["OI"] = data[12]
            data_dict["CHNGOI"] = data[13]
            data_dict["ttq"] = data[14]
            data_dict["totalBuyQt"] = data[15]
            data_dict["totalSellQ"] = data[16]
            data_dict["ttv"] = data[17]
            data_dict["trend"] = data[18]
            data_dict["lowerCktLm"] = data[19]
            data_dict["upperCktLm"] = data[20]
            data_dict["ltt"] = datetime.fromtimestamp(
                data[21]).strftime('%c')
            data_dict["close"] = data[22]
    else:
        data_dict = {
            "symbol": data[0],
            "time": datetime.fromtimestamp(data[1]).strftime('%c'),
            "depth": parse_market_depth(data[2], exchange),
            "quotes": "Market Depth"
        }
    if exchange == '4' and len(data) == 21:
        data_dict['exchange'] = 'NSE Equity'
    elif exchange == '1':
        data_dict['exchange'] = 'BSE'
    elif exchange == '13':
        data_dict['exchange'] = 'NSE Currency'
    elif exchange == '4' and len(data) == 23:
        data_dict['exchange'] = 'NSE Futures & Options'
    elif exchange == '6':
        data_dict['exchange'] = 'Commodity'
    return data_dict
# CallBack functions to receive feeds
def on_ticks(data):
    ticks = parse_data(data)
    print(ticks)
sio.emit('join', script_code)
sio.on('stock', on_ticks)
sio.wait()
#Unwatch from the stock
sio.emit("leave", script_code)
#Disconnect from the server
sio.emit("disconnect", "transport close")
OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
Request request = new Request.Builder()
    .url("https://breezeapi.icicidirect.com")
    .method("GET", null)
    .addHeader("User-Agent", "XYZABC")
    .addHeader("user", "LZLAL")
    .addHeader("token", "12i299")
    .build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://breezeapi.icicidirect.com");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
client.UserAgent = "XYZABC";
request.AddHeader("user", "LZLAL");
request.AddHeader("token", "12i299");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Sample JSON Response
{'stock_name': 'MAHINDRA & MAHINDRA LIMITED(MAHMAH)Margin-Buy', 
'stock_code': 'MAHMAH', 
'action_type': 'buy', 
'expiry_date': '', 
'strike_price': '', 
'option_type': '', 
'stock_description': 'Margin', 
'recommended_price_and_date': '3065-3068,2025-01-02 08:55:02', 
'recommended_price_from': '3065', 
'recommended_price_to': '3068', 
'recommended_date': '2025-01-02 08:55:02', 
'target_price': '3098', 
'sltp_price': '3050',
'part_profit_percentage': '0,0', 
'profit_price': '0', 
'exit_price': '0', 
'recommended_update': '', 
'iclick_status': 'open', 
'subscription_type': 'iclick_2_gain'}
{'stock_name': 'POWER FINANCE CORPORATION LTD(POWFIN)Margin-Buy', 
'stock_code': 'POWFIN', 
'action_type': 'buy', 
'expiry_date': '', 
'strike_price': '',
'option_type': '', 
'stock_description': 'Margin', 
'recommended_price_and_date': '450-451,2025-01-02 09:37:01', 
'recommended_price_from': '450', 
'recommended_price_to': '451', 
'recommended_date': '2025-01-02 09:37:01', 
'target_price': '456', 
'sltp_price': '447', 
'part_profit_percentage': '0,0', 
'profit_price': '0', 
'exit_price': '0', 
'recommended_update': '     ', 
'iclick_status': 'open', 
'subscription_type': 'iclick_2_gain'}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://livefeeds.icicidirect.com/ | 
The One Click Equity Stream also known as iclick2gain stream is a functionality which lets you chose from range of strategies curated by our award winning research team. It helps you save hours and hours of research and analysis time required to make a trading decision. With this function of One Click Equity, our research team does all the heavy lifting of research and analysis of over Equity stocks with different expiries in real time and develop high probability winning opportunities for our customers.
For the strategies available, you can either chose the desired strategy and place order in a single click or opt for customising by copying our recommended strategy to suit your requirement. You can also view margin required, maximum profit/loss, timeframe to hold the strategy before making a trade.
Candle Stream
Candle Data LIVE(StreamLiveOHLCV)
This feature allows the user to stream OHLCV candle data in real time via websockets with lower latency. Candle intervals supported are 1 second, 1 minute, 5 minutes and 30 minutes. Below, is the set instructions to use this feature.
import base64 
import socketio
#Get User ID and Session Token
session_key = "SESSION_TOKEN_FROM_CUSTOMER_DETAILS_API"
#e.g session_key = "QUYyOTUzMTM6NjY5ODc5NzY="
user_id, session_token = base64.b64decode(session_key.encode('ascii')).decode('ascii').split(":")
#e.g Decoded value - AF296713:66987976, after split user_id = AF295313, session_token = 6698797
# Python Socket IO Client
sio = socketio.Client()
auth = {"user": user_id, "token": session_token}
sio.connect("https://breezeapi.icicidirect.com/", socketio_path='ohlcvstream', headers={"User-Agent":"python-socketio[client]/socket"}, 
                auth=auth, transports="websocket", wait_timeout=3)
# Script Code of Stock or Instrument  e.g 4.1!1594, 1.1!500209 , 13.1!5023, 6.1!247457. 
script_code = ["4.1!1594"] #Subscribe more than one stock at a time
#Channel name i.e 1SEC,1MIN,5MIN,30MIN
channel_name = "1SEC"
#CallBack functions to receive feeds
def on_ticks(ticks):
       print(ticks)
#Connect to receive feeds
sio.emit('join', script_code)
sio.on(channel_name, on_ticks)
#Unwatch from the stock
sio.emit("leave", script_code)
#Disconnect from the server
sio.emit("disconnect", "transport close")
Sample Response Examples
For Equity -  
NSE,NIFTY,18687.95,18687.95,18687.95,18687.95,0,2022-12-02 14:13:53,1SEC
For Derivatives - 
Options - NFO,NIFTY,08-Dec-2022,18700.0,CE,120.5,120.5,120.5,120.5,2500,7592550,2022-12-02 14:10:14,1SEC
Futures - NFO,NIFTY,29-Dec-2022,18807.35,18807.35,18807.35,18807.35,0,11771450,2022-12-02 14:19:21,1SEC
Get User ID and Session Token
The User Id and session Token can be obtained by decoding the 'session_token' from base64 , This session token obtained via get_customer_details API. An example is given in python
Connect to Websocket Server
Websocket endpoint is https://breezeapi.icicidirect.com/ and the socket.io path is '/ohlcvstream'. Please make sure to pass the auth credentials and User-Agent in headers
Script Code of a Stock
Real streaming ohlcv data of a stock is obtained by subscribing to a particular stock using the Script Code of the stock. Script Code of a stock has the following pattern as given below.
'ExchangeType.Qualiflier!Scripid'
Examples of script code are 4.1!1594, 1.1!500209 , 13.1!5023, 6.1!247457
The Qualifier of an ExchangeType corresponds to a particular Exchange Code. Please refer to the table below
| Qualifier | Exchange Code | 
|---|---|
| 4.1 | NSE,NFO | 
Note:
1) Suffix '.1' in Qualifier refers to Exchange Quotes whereas '.2' refers to Market Depth. In Streaming OHLCV, we just need Exchange Quotes
2) Maximum 2000 scripts can be subscribed at a time in all OHLC and Live streaming.
For ScriptId, please refer to the CSV attachment in the link below
https://traderweb.icicidirect.com/Content/File/txtFile/ScripFile/StockScriptNew.csv
Column 'TK' in the CSV File refers to ScriptId.
Subscribe to OHLCV live stream of a particular Stock
To subscribe to a particular stock, we require to have the Script Code of a particular stocks. We can subscribe to more than one stock for a particular interval.
To subscribe to stock, we need to connect to a channels. Channels are divided as per the candle intervals. The channel names are as follows
| Channel Name | Interval | 
|---|---|
| 1SEC | 1 second | 
| 1MIN | 1 minute | 
| 5MIN | 5 minutes | 
| 30MIN | 30 minutes | 
Streaming Response Data convention
The streaming respone Data has the following structure as shown in tables below. The response is a comma separated string.
For equity i.e NSE
| Attribute | Description | 
|---|---|
| exchange code | Exchange Code (NSE) | 
| stock code | Stock Code | 
| low | Low Price | 
| high | High Price | 
| open | Open Price | 
| close | Close Price | 
| volume | Traded Volume | 
| datetime | Date in YYYY-MM-DD HH:MM:SS format | 
| interval | 1SEC,1MIN,5MIN,30MIN | 
For derivative options/futues i.e NFO,NDX,MCX
| Attribute | Description | 
|---|---|
| exchange code | Exchange Code (NFO) | 
| stock code | Stock Code | 
| expiry date | Date in YYYY-MM-DD format | 
| strike price | Strike Price (Only For Options) | 
| right type | Right Type (Only For Options) | 
| low | Low Price | 
| high | High Price | 
| open | Open Price | 
| close | Close Price | 
| volume | Traded Volume | 
| oi | Open Interest | 
| datetime | Date in YYYY-MM-DD HH:MM:SS format | 
| interval | 1SEC,1MIN,5MIN,30MIN | 
Note: interval - 1SEC,1MIN,5MIN,30MIN (for 1second, 1minute, 5minutes, 30minutes respectively)
GTTOrder
GTTOrderPlacement
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/gttorder"
payload = json.dumps({
    "exchange_code": "NFO",
    "stock_code": "NIFTY",
    "product": "options",
    "quantity": "75",
    "expiry_date": "2025-03-06T06:00:00.00Z",
    "right": "put",
    "strike_price": "22500",
    "gtt_type": "cover_oco",
    "fresh_order_action": "buy",
    "fresh_order_price": "30",
    "fresh_order_type": "limit",
    "index_or_stock": "index",
    "trade_date": "2025-03-03T06:00:00.00Z",
    "order_details": [
        {
            "gtt_leg_type": "target",
            "action": "sell",
            "limit_price": "75",
            "trigger_price": "72"
        },
        {
            "gtt_leg_type": "stoploss",
            "action": "sell",
            "limit_price": "18",
            "trigger_price": "22"
        }
    ]
}
, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Sample JSON Response
{'Success': 
{'gtt_order_id': '2025020500001234',
'message': 'Your GTT Order Request Placed Successfully'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | POST | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/gttorder | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| exchange_code | String | "NFO" | Yes | 
| product | String | "futures","options" | Yes | 
| action | String | "buy", "sell" | Yes | 
| quantity | String | Number of quantity to place the order | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | Integer | Numeric Currency | Yes | 
| gtt_type | String | "cover_oco" for three leg GTT order and "single" for single leg GTT order | Yes | 
| fresh_order_action | String | "buy","sell" | Yes | 
| fresh_order_price | String | -- | Yes | 
| fresh_order_type | String | "limit", "market" | Yes | 
| index_or_stock | String | "index" or "stock" | Yes | 
| trade_date | String | ISO 8601 | Yes | 
| gtt_leg_type | String | "stoploss","target" | Yes | 
| limit_price | String | -- | Yes | 
| trigger_price | String | -- | Yes | 
GTTOrderBook
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/gttorder"
payload = json.dumps({
    "exchange_code": "NFO",
    "from_date": "2025-02-05T06:00:00.00Z",
    "to_date": "2025-02-05T06:00:00.00Z"
}
, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Sample JSON Response
{'Success': [{'order_details': [{'gtt_leg_type': None,
   'action': 'Buy',
   'trigger_price': 7.0,
   'limit_price': 6.0,
   'status': 'Cancelled',
   'gtt_order_id': '2025020500001234'}],
 'exchange_code': 'NFO',
 'product_type': 'Options',
 'stock_code': 'NIFTY',
 'expiry_date': '06-Feb-2025',
 'strike_price': 24000.0,
 'right': 'Call',
 'quantity': 75,
 'index_or_stock': 'Index',
 'gtt_type': 'Single',
 'fresh_order_id': None,
 'order_datetime': '05-FEB-2025 11:19:32'},
{'order_details': [{'gtt_leg_type': 'Target',
   'action': 'Sell',
   'trigger_price': 11.5,
   'limit_price': 12.0,
   'status': 'Cancelled',
   'gtt_order_id': '2025020500001234'},
  {'gtt_leg_type': 'Stoploss',
   'action': 'Sell',
   'trigger_price': 5.0,
   'limit_price': 4.0,
   'status': 'Cancelled',
   'gtt_order_id': '2025020500001234'}],
 'exchange_code': 'NFO',
 'product_type': 'Options',
 'stock_code': 'NIFTY',
 'expiry_date': '06-Feb-2025',
 'strike_price': 24000.0,
 'right': 'Call',
 'quantity': 75,
 'index_or_stock': 'Index',
 'gtt_type': 'Cover OCO',
 'fresh_order_id': '202502052500001234',
 'order_datetime': '05-FEB-2025 11:14:38'}],
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | GET | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/gttorder | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| exchange_code | String | "NFO" | Yes | 
| from_date | String | ISO 8601 - Day should not be less than 10 days from to_date | Yes | 
| to_date | String | ISO 8601 - Day should not be more than 10 days from from_date | Yes | 
GTTCancelOrder
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/gttorder"
payload = json.dumps({
    "gtt_order_id": "2025020500001234",
    "exchange_code": "NFO"
}
, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
Sample JSON Response
{
    "Success": {
        "order_id": "2025020500001234",
        "message": "Your Order Cancelled successfully."
    },
    "Status": 200,
    "Error": null
}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | DELETE | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/gttorder | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| gtt_order_id | String | Order ID to cancel order | Yes | 
| exchange_code | String | "NFO" | Yes | 
GTTModifyOrder
import requests
import json
import hashlib
from datetime import datetime, timezone
customerDetail_url = "https://api.icicidirect.com/breezeapi/api/v1/customerdetails"
secret_key = "Your Secret_key goes here"
appkey = "Your App_Key goes here"
session_key = "Your Session_key goes here"
time_stamp = datetime.now(timezone.utc).isoformat()[:19] + '.000Z'
customerDetail_payload = json.dumps({
  "SessionToken": session_key,
  "AppKey": appkey
})
customerDetail_headers = {
    'Content-Type': 'application/json',
}
customerDetail_response = requests.request("GET", customerDetail_url, headers=customerDetail_headers, data=customerDetail_payload)
data = json.loads(customerDetail_response.text)
session_token = data["Success"]["session_token"]
url = "https://api.icicidirect.com/breezeapi/api/v1/gttorder"
payload = json.dumps({
    "exchange_code": "NFO",
    "gtt_order_id" : "2025020500001234",
    "gtt_type" : "ocox",
    "order_details": [
        {
            "gtt_leg_type": "target",
            "action": "sell",
            "limit_price": "75",
            "trigger_price": "72"
        },
        {
            "gtt_leg_type": "stoploss",
            "action": "sell",
            "limit_price": "18",
            "trigger_price": "22"
        }
    ]
}
, separators=(',', ':'))
checksum = hashlib.sha256((time_stamp+payload+secret_key).encode("utf-8")).hexdigest()
headers = {
    'Content-Type': 'application/json',
    'X-Checksum': 'token '+ checksum,
    'X-Timestamp': time_stamp,
    'X-AppKey': appkey,
    'X-SessionToken': session_token
}
response = requests.request("PUT", url, headers=headers, data=payload)
print(response.text)
Sample JSON Response
{'Success': 
{'gtt_order_id': '2025020500001234',
'message': 'Order Modified Successfully'},
'Status': 200,
'Error': None}
Request Information
| Category | Value | 
|---|---|
| HTTP Request | PUT | 
| URL | https://api.icicidirect.com/breezeapi/api/v1/gttorder | 
Body Parameters
| Parameter | Data Type | Description | Mandatory | 
|---|---|---|---|
| stock_code | String | "AXIBAN", "TATMOT" | Yes | 
| exchange_code | String | "NFO" | Yes | 
| product | String | "futures","options" | Yes | 
| action | String | "buy", "sell" | Yes | 
| quantity | String | Number of quantity to place the order | Yes | 
| expiry_date | String | ISO 8601 | Yes | 
| right | String | "call","put","others" | Yes | 
| strike_price | String | Numeric Currency | Yes | 
| gtt_type | String | "cover_oco" for three leg GTT order and "single" for single leg GTT order | Yes | 
| fresh_order_action | String | "buy","sell" | Yes | 
| fresh_order_price | String | -- | Yes | 
| fresh_order_type | String | "limit", "market" | Yes | 
| index_or_stock | String | "index" or "stock" | Yes | 
| trade_date | String | ISO 8601 | Yes | 
| gtt_leg_type | String | "stoploss","target" | Yes | 
| limit_price | String | -- | Yes | 
| trigger_price | String | -- | Yes | 
 
      