curl --request GET \
--url https://api.trysoar.com/v1/orders \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.trysoar.com/v1/orders"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.trysoar.com/v1/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.trysoar.com/v1/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.trysoar.com/v1/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.trysoar.com/v1/orders")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trysoar.com/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"order_id": "<string>",
"ticker": "<string>",
"market_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"event_ticker": "<string>",
"outcome": "yes",
"side": "buy",
"price": 50,
"qty": 1,
"remaining_qty": 1,
"filled_qty": 1,
"status": "accepted",
"time_in_force": "gtc",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"client_order_id": "<string>",
"reserved_cents": 1,
"spent_cents": 2
}
],
"cursor": "<string>"
}{
"code": "invalid_enum_value",
"error": "side must be one of \"buy\", \"sell\", got \"hold\""
}{
"code": "unauthenticated",
"error": "API key or bearer token required"
}{
"code": "forbidden_scope",
"error": "api key lacks scope: trade"
}{
"code": "rate_limited",
"error": "rate limited (per-api-key)"
}List your orders
Newest first, keyset-paged. Reflects the projection from the execution log, which lags the engine by a few milliseconds.
curl --request GET \
--url https://api.trysoar.com/v1/orders \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.trysoar.com/v1/orders"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.trysoar.com/v1/orders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.trysoar.com/v1/orders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.trysoar.com/v1/orders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.trysoar.com/v1/orders")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trysoar.com/v1/orders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"orders": [
{
"order_id": "<string>",
"ticker": "<string>",
"market_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"event_ticker": "<string>",
"outcome": "yes",
"side": "buy",
"price": 50,
"qty": 1,
"remaining_qty": 1,
"filled_qty": 1,
"status": "accepted",
"time_in_force": "gtc",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"client_order_id": "<string>",
"reserved_cents": 1,
"spent_cents": 2
}
],
"cursor": "<string>"
}{
"code": "invalid_enum_value",
"error": "side must be one of \"buy\", \"sell\", got \"hold\""
}{
"code": "unauthenticated",
"error": "API key or bearer token required"
}{
"code": "forbidden_scope",
"error": "api key lacks scope: trade"
}{
"code": "rate_limited",
"error": "rate limited (per-api-key)"
}Authorizations
Per-user API key. Create and revoke keys from your SOAR account settings. A revoked key stops working within 60 seconds.
Query Parameters
Page size. Values outside 1–1000 are clamped, never rejected.
1 <= x <= 1000Opaque continuation token from the previous page's cursor. Omit for
the first page. Do not parse or construct one.
Filter orders by status. Accepts the group names and the concrete
statuses, comma-separated to combine (open,filled).
| value | matches |
|---|---|
resting | accepted, open, partially_filled |
filled | filled |
canceled | canceled, expired |
all (default) | everything |
resting is the one a quoter wants each cycle, and it is exactly the set
that is still cancelable. canceled is a group: it also matches
expired, because an order that aged out is one of the
terminal-not-filled ones you are asking for.
"resting"
Scope to one market, by ticker or UUID. An unknown value is 400, not
an empty page — an empty page would read as "you hold nothing there",
which is a different and more dangerous claim than "that market does not
exist".
Scope to every market under one event — all rungs of a ladder. Unknown
values are 400, for the same reason as ticker. Mutually exclusive
with ticker: sending both is 400 conflicting_identifiers.
Was this page helpful?