GTT - Good Till Triggered orders

The GTT APIs allow you to place, modify and manage GTTs.

type endpoint  
POST /gtt/triggers Place a GTT
GET /gtt/triggers Retrieve a list of all GTTs visible in GTT order book
GET /gtt/triggers/:id Retrieve an individual trigger
PUT /gtt/triggers/:id Modify an active GTT
DELETE /gtt/triggers/:id Delete an active GTT

Placing triggers

curl https://api.kite.trade/gtt/triggers \
    -H 'X-Kite-Version: 3' \
    -H 'Authorization: token api_key:access_token' \
    -d 'type=single' \
    -d 'condition={"exchange":"NSE", "tradingsymbol":"INFY", "trigger_values":[702.0], "last_price": 798.0}' \
    -d 'orders=[{"exchange":"NSE", "tradingsymbol": "INFY", "transaction_type": "BUY", "quantity": 1, "order_type": "LIMIT","product": "CNC", "price": 702.5}]'
{
    "status":"success",
    "data":{
        "trigger_id":1337
    }
}

Order parameters

parameter  
type The type of GTT
condition The condition parameters (json object)
orders The orders to be placed (json array).

Condition parameters

The API expects the following parameters encoded as json in the condition post parameter.

parameter  
exchange Name of the exchange
tradingsymbol Trading symbol of the instrument
trigger_values Trigger values (json array)
last_price Last price of the instrument at the time of placement

Orders list

The API expects a list of orders encoded as a json array. The index of the order is used by API to determine which order is executed when a trigger value is reached.

The order object inside the list expects the following parameters.

parameter  
exchange Name of the exchange
tradingsymbol Trading symbol of the instrument
transaction_type BUY or SELL
quantity Quantity to transact
order_type LIMIT
product Margin product to use for the order
price The min or max price to execute the order at (for LIMIT orders)

Sample order:

{
    "exchange":"NSE", 
    "tradingsymbol": "INFY", 
    "transaction_type": "BUY", 
    "quantity": 1, 
    "order_type": "LIMIT",
    "product": "CNC", 
    "price": 702.5
}

Type

The GTT API supports the following type of GTTs. The type in the post paremeter is used to parse the condition passed to it. The following types are supported by GTT API.

single

The single leg trigger type expects a single trigger value, and executes the first order that is in the orders array when the trigger value is reached.

Sample condition:

{
    "exchange":"NSE", 
    "tradingsymbol":"INFY", 
    "trigger_values":[702.0], 
    "last_price": 798.0
}

Note

This trigger type expects only one trigger value inside the trigger_values

Sample orders:

[
    {
        "exchange":"NSE", 
        "tradingsymbol": "INFY", 
        "transaction_type": "BUY", 
        "quantity": 1, 
        "order_type": "LIMIT",
        "product": "CNC", 
        "price": 702.5
    }
]
two-leg

The two-leg trigger implements the OCO (One Cancels Other) order. It expects two trigger values and executes the corresponding order in the orders array when either of the trigger value is reached, the other order is lain dormant.

Sample condition:

{
    "exchange":"NSE", 
    "tradingsymbol":"INFY", 
    "trigger_values":[702.0, 798.0], 
    "last_price": 742.0
}

Note

This trigger type expects two trigger value inside the trigger_values

Sample orders:

[
    {
        "exchange":"NSE", 
        "tradingsymbol": "INFY", 
        "transaction_type": "SELL", 
        "quantity": 1, 
        "order_type": "LIMIT",
        "product": "CNC", 
        "price": 702.5
    },
    {  
        "exchange":"NSE", 
        "tradingsymbol": "INFY", 
        "transaction_type": "SELL", 
        "quantity": 1, 
        "order_type": "LIMIT",
        "product": "CNC", 
        "price": 798.5
    }
]

Retrieving triggers

Active GTTs and GTTs in others states (previous 7 days) can be obtained by a GET API call to the /triggers/gtt endpoint.

curl  "https://api.kite.trade/gtt/triggers" \
    -H "X-Kite-Version: 3" \
    -H "Authorization: token api_key:access_token" 
{
    "status": "success",
    "data": [
        {
            "id": 112127,
            "user_id": "XX0000",
            "parent_trigger": null,
            "type": "single",
            "created_at": "2019-09-12 13:25:16",
            "updated_at": "2019-09-12 13:25:16",
            "expires_at": "2020-09-12 13:25:16",
            "status": "active",
            "condition": {
                "exchange": "NSE",
                "last_price": 798,
                "tradingsymbol": "INFY",
                "trigger_values": [
                    702
                ],
                "instrument_token": 408065
            },
            "orders": [
                {
                    "exchange": "NSE",
                    "tradingsymbol": "INFY",
                    "product": "CNC",
                    "order_type": "LIMIT",
                    "transaction_type": "BUY",
                    "quantity": 1,
                    "price": 702.5,
                    "result": null
                }
            ],
            "meta": {}
        },
        {
            "id": 105099,
            "user_id": "XX0000",
            "parent_trigger": null,
            "type": "two-leg",
            "created_at": "2019-09-09 15:13:22",
            "updated_at": "2019-09-09 15:15:08",
            "expires_at": "2020-01-01 12:00:00",
            "status": "triggered",
            "condition": {
                "exchange": "NSE",
                "last_price": 102.6,
                "tradingsymbol": "RAIN",
                "trigger_values": [
                    102.0,
                    103.7
                ],
                "instrument_token": 3926273
            },
            "orders": [
                {
                    "tradingsymbol": "RAIN",
                    "product": "CNC",
                    "order_type": "LIMIT",
                    "transaction_type": "SELL",
                    "quantity": 1,
                    "price": 1,
                    "meta": "",
                    "result": null
                },
                {
                    "exchange": "NSE",
                    "tradingsymbol": "RAIN",
                    "product": "CNC",
                    "order_type": "LIMIT",
                    "transaction_type": "SELL",
                    "quantity": 1,
                    "price": 1,
                    "meta": "",
                    "result": {
                        "account_id": "XX0000",
                        "exchange": "NSE",
                        "tradingsymbol": "RAIN",
                        "validity": "DAY",
                        "product": "CNC",
                        "order_type": "LIMIT",
                        "transaction_type": "SELL",
                        "quantity": 1,
                        "price": 1,
                        "meta": "{\"app_id\":12617,\"gtt\":105099}",
                        "timestamp": "2019-09-09 15:15:08",
                        "triggered_at": 103.7,
                        "order_result": {
                            "status": "failed",
                            "order_id": "",
                            "rejection_reason": "Your order price is lower than the current lower circuit limit of 70.65. Place an order within the daily range."
                        }
                    }
                }
            ],
            "meta": null
        }
    ]
}

Retrieve trigger

Given a GTT ID, the GET API call to this endpoint will return details of the trigger irrespective of the age or status of the GTT.

curl https://api.kite.trade/gtt/triggers/105099 \                                       
    -H 'X-Kite-Version: 3' \
    -H 'Authorization: token api_key:access_token'
{
    "status": "success",
    "data": {
        "id": 105099,
        "user_id": "XX0000",
        "parent_trigger": null,
        "type": "two-leg",
        "created_at": "2019-09-09 15:13:22",
        "updated_at": "2019-09-09 15:15:08",
        "expires_at": "2020-01-01 12:00:00",
        "status": "triggered",
        "condition": {
            "exchange": "NSE",
            "last_price": 102.6,
            "tradingsymbol": "RAIN",
            "trigger_values": [
                102.0,
                103.7
            ],
            "instrument_token": 3926273
        },
        "orders": [
            {
                "exchange": "NSE",
                "tradingsymbol": "RAIN",
                "product": "CNC",
                "order_type": "LIMIT",
                "transaction_type": "SELL",
                "quantity": 1,
                "price": 1,
                "meta": "",
                "result": null
            },
            {
                "exchange": "NSE",
                "tradingsymbol": "RAIN",
                "product": "CNC",
                "order_type": "LIMIT",
                "transaction_type": "SELL",
                "quantity": 1,
                "price": 1,
                "meta": "",
                "result": {
                    "account_id": "XX0000",
                    "exchange": "NSE",
                    "tradingsymbol": "RAIN",
                    "validity": "DAY",
                    "product": "CNC",
                    "order_type": "LIMIT",
                    "transaction_type": "SELL",
                    "quantity": 1,
                    "price": 1,
                    "meta": "{\"app_id\":12617,\"gtt\":105099}",
                    "timestamp": "2019-09-09 15:15:08",
                    "triggered_at": 103.7,
                    "order_result": {
                        "status": "failed",
                        "order_id": "",
                        "rejection_reason": "Your order price is lower than the current lower circuit limit of 70.65. Place an order within the daily range."
                    }
                }
            }
        ],
        "meta": null
    }
}

Status

GTTs can be in the following state

status  
active indicates that the trigger is active.
triggered indicates that the trigger was triggered by core.
disabled indicates that the trigger is disabled and action is expected from the user.
expired indicates that the trigger has expired based on its expiry date.
cancelled indicates that the trigger has been cancelled by our system.
rejected indicates that the trigger has been rejected by our system.
deleted indicates that the trigger was deleted by the user.

Modify trigger

To modify a GTT you need to send a PUT call with updated parameters.

curl --request PUT https://api.kite.trade/gtt/triggers/1337 \
    -H 'X-Kite-Version: 3' \
    -H 'Authorization: token api_key:access_token' \
    -d 'type=single' \
    -d 'condition={"exchange":"NSE", "tradingsymbol":"INFY", "trigger_values":[701.0], "last_price": 798.0}' \
    -d 'orders=[{"exchange":"NSE", "tradingsymbol": "INFY", "transaction_type": "BUY", "quantity": 1, "order_type": "LIMIT","product": "CNC", "price": 702.5}]'
{
    "status":"success",
    "data":{
        "trigger_id":1337
    }
}

Note

It is recommended to fetch the trigger using trigger ID and modify the values and send that to the modify endpoint.

Delete trigger

curl --request DELETE https://api.kite.trade/gtt/triggers/1337 \
    -H 'X-Kite-Version: 3' \
    -H 'Authorization: token api_key:access_token' \
{
    "status":"success",
    "data":{
        "trigger_id":1337
    }
}