Place a combo order. This is a specialized type of order consisting of one equity leg and one option leg. It can optionally include a second option leg, for some strategies.
Header | Required | Values/Example | Default |
---|---|---|---|
Accept | Optional | application/xml, application/json | application/xml |
Authorization | Required | Bearer {token} |
Note: the index for each leg starts at 0 and would go to 3 for 4 legs.
Parameter | Type | Param Type | Required | Values/Example | Default |
---|---|---|---|---|---|
account_id | Path | String | Required | VA000000 | |
Account number | |||||
class | Form | String | Required | combo | |
The kind of order to be placed. | |||||
symbol | Form | String | Required | SPY | |
Underlying security symbol of the options | |||||
type | Form | String | Required | market | |
The type of order to be placed. One of: market, debit, credit, even
|
|||||
duration | Form | String | Required | day | |
Time the order will remain active. One of: day, gtc, pre, post
|
|||||
price | Form | String | Optional | 1.00 | |
Limit price. Required only for debit and credit orders. | |||||
side[0] | Form | String | Required | buy | |
The side of the equity leg. One of: buy, buy_to_cover, sell, sell_short
|
|||||
quantity[0] | Form | String | Required | 1 | |
The number of shares | |||||
option_symbol[1] | Form | String | Required | SPY140118C00195000 | |
OCC option symbol of the option | |||||
side[1] | Form | String | Required | buy_to_open | |
The side of the option leg. One of: buy_to_open, buy_to_close, sell_to_open, sell_to_close
|
|||||
quantity[1] | Form | String | Required | 100 | |
The number of contracts for the option leg | |||||
option_symbol[2] | Form | String | Optional | SPY140118C00196000 | |
OCC option symbol of the option | |||||
side[2] | Form | String | Optional | buy_to_close | |
The side of the option leg. One of: buy_to_open, buy_to_close, sell_to_open, sell_to_close
|
|||||
quantity[2] | Form | String | Optional | 100 | |
The number of contracts for the option leg | |||||
tag | Form | String | Optional | my-tag-example-1 | |
Order tag. Maximum lenght of 255 characters. Valid characters are letters, numbers and -
|
https://sandbox.tradier.com
curl -X POST "https://api.tradier.com/v1/accounts/{account_id}/orders" \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Accept: application/json' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'class=combo&symbol=SPY&type=market&duration=day&price=1.00&side[0]=buy&quantity[0]=1&option_symbol[1]=SPY140118C00195000&side[1]=buy_to_open&quantity[1]=100&option_symbol[2]=SPY140118C00196000&side[2]=buy_to_close&quantity[2]=100&tag=my-tag-example-1'
// Version 1.8.0_31
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) throws IOException {
final HttpUriRequest request = RequestBuilder
.post("https://api.tradier.com/v1/accounts/{account_id}/orders")
.addHeader("Authorization", "Bearer <TOKEN>")
.addHeader("Accept", "application/json")
.addParameter("account_id", "VA000000")
.addParameter("class", "combo")
.addParameter("symbol", "SPY")
.addParameter("type", "market")
.addParameter("duration", "day")
.addParameter("price", "1.00")
.addParameter("side[0]", "buy")
.addParameter("quantity[0]", "1")
.addParameter("option_symbol[1]", "SPY140118C00195000")
.addParameter("side[1]", "buy_to_open")
.addParameter("quantity[1]", "100")
.addParameter("option_symbol[2]", "SPY140118C00196000")
.addParameter("side[2]", "buy_to_close")
.addParameter("quantity[2]", "100")
.addParameter("tag", "my-tag-example-1")
.build();
final HttpResponse response = HttpClientBuilder.create().build().execute(request);
final String jsonString = EntityUtils.toString(response.getEntity());
final JsonNode json = new ObjectMapper().readTree(jsonString);
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(json);
}
}
# Version 2.5.0p0
require 'uri'
require 'net/http'
url = URI("https://api.tradier.com/v1/accounts/{account_id}/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <TOKEN>'
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/x-www-form-urlencoded'
request.body = "class=combo&symbol=SPY&type=market&duration=day&price=1.00&side[0]=buy&quantity[0]=1&option_symbol[1]=SPY140118C00195000&side[1]=buy_to_open&quantity[1]=100&option_symbol[2]=SPY140118C00196000&side[2]=buy_to_close&quantity[2]=100&tag=my-tag-example-1"
response = http.request(request)
puts response.code
puts response.read_body
// Version go1.12
package main
import (
"fmt"
"net/http"
"net/url"
"io/ioutil"
"log"
"strconv"
"strings"
)
func main() {
apiUrl := "https://api.tradier.com/v1/accounts/{account_id}/orders"
data := url.Values{}
data.Set("class", "combo")
data.Set("symbol", "SPY")
data.Set("type", "market")
data.Set("duration", "day")
data.Set("price", "1.00")
data.Set("side[0]", "buy")
data.Set("quantity[0]", "1")
data.Set("option_symbol[1]", "SPY140118C00195000")
data.Set("side[1]", "buy_to_open")
data.Set("quantity[1]", "100")
data.Set("option_symbol[2]", "SPY140118C00196000")
data.Set("side[2]", "buy_to_close")
data.Set("quantity[2]", "100")
data.Set("tag", "my-tag-example-1")
u, _ := url.ParseRequestURI(apiUrl)
urlStr := u.String()
client := &http.Client{}
r, _ := http.NewRequest("POST", urlStr, strings.NewReader(data.Encode()))
r.Header.Add("Authorization", "Bearer <TOKEN>")
r.Header.Add("Accept", "application/json")
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
resp, _ := client.Do(r)
responseData, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Status)
fmt.Println(string(responseData))
}
// Version 4.6.2.0
using System;
using System.Net;
using System.IO;
using System.Text;
public class MainClass {
public static void Main (string[] args) {
var request = (HttpWebRequest)WebRequest.Create("https://api.tradier.com/v1/accounts/{account_id}/orders");
var requestData = "class=combo&symbol=SPY&type=market&duration=day&price=1.00&side[0]=buy&quantity[0]=1&option_symbol[1]=SPY140118C00195000&side[1]=buy_to_open&quantity[1]=100&option_symbol[2]=SPY140118C00196000&side[2]=buy_to_close&quantity[2]=100&tag=my-tag-example-1";
var data = Encoding.ASCII.GetBytes(requestData);
request.Method = "POST";
request.Headers["Authorization"] = "Bearer <TOKEN>";
request.Accept = "application/json";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine (response.StatusCode);
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine (responseString);
}
}
// Version 10.15.2
const request = require('request');
request({
method: 'post',
url: 'https://api.tradier.com/v1/accounts/{account_id}/orders',
form: {
'class': 'combo',
'symbol': 'SPY',
'type': 'market',
'duration': 'day',
'price': '1.00',
'side[0]': 'buy',
'quantity[0]': '1',
'option_symbol[1]': 'SPY140118C00195000',
'side[1]': 'buy_to_open',
'quantity[1]': '100',
'option_symbol[2]': 'SPY140118C00196000',
'side[2]': 'buy_to_close',
'quantity[2]': '100',
'tag': 'my-tag-example-1'
},
headers: {
'Authorization': 'Bearer <TOKEN>',
'Accept': 'application/json'
}
}, (error, response, body) => {
console.log(response.statusCode);
console.log(body);
});
# Version 3.6.1
import requests
response = requests.post('https://api.tradier.com/v1/accounts/{account_id}/orders',
data={'class': 'combo', 'symbol': 'SPY', 'type': 'market', 'duration': 'day', 'price': '1.00', 'side[0]': 'buy', 'quantity[0]': '1', 'option_symbol[1]': 'SPY140118C00195000', 'side[1]': 'buy_to_open', 'quantity[1]': '100', 'option_symbol[2]': 'SPY140118C00196000', 'side[2]': 'buy_to_close', 'quantity[2]': '100', 'tag': 'my-tag-example-1'},
headers={'Authorization': 'Bearer <TOKEN>', 'Accept': 'application/json'}
)
json_response = response.json()
print(response.status_code)
print(json_response)
<?php
// Version 7.2.17-0ubuntu0.18.04.1
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.tradier.com/v1/accounts/{account_id}/orders');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'class=combo&symbol=SPY&type=market&duration=day&price=1.00&side[0]=buy&quantity[0]=1&option_symbol[1]=SPY140118C00195000&side[1]=buy_to_open&quantity[1]=100&option_symbol[2]=SPY140118C00196000&side[2]=buy_to_close&quantity[2]=100&tag=my-tag-example-1');
$headers = array();
$headers[] = 'Authorization: Bearer <TOKEN>';
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $http_code;
echo $result;
{
"order": {
"id": 257459,
"status": "ok",
"partner_id": "c4998eb7-06e8-4820-a7ab-55d9760065fb"
}
}