Market
Symbols and the trading quotes orders fill at, chart bars and trending instruments.
#Symbols of a trading account (spread, leverage, contract size)
Query parameters
one trading account of this key (symbols: default the first)
fx | crypto | stocks | indices | commodities ...
part of the symbol or name
from 1
1..1000, default 200
Responses
OK
Bad request (invalid_json)
No / invalid / revoked / expired API key
Refused (IP, scope, brand switch, kill switch, account, inactive client)
Not found (also every path while the Open API is off on this server)
Invalid request or refused by the order checks (margin, levels, size, market closed ...)
Rate limited (Retry-After)
Internal error; unknown_outcome = look the order up before sending it again
Temporarily unavailable (prices, balance, quotes, rate-limit store)
curl "https://api.your-brand.com/api/open/v1/symbols" \
-H "X-API-Key: $OCTOLIT_API_KEY"const res = await fetch("https://api.your-brand.com/api/open/v1/symbols", {
method: "GET",
headers: {
"X-API-Key": process.env.OCTOLIT_API_KEY,
},
});
if (!res.ok) throw new Error(`GET failed: ${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);import os, requests
r = requests.request(
"GET",
"https://api.your-brand.com/api/open/v1/symbols",
headers={"X-API-Key": os.environ["OCTOLIT_API_KEY"]},
timeout=10,
)
r.raise_for_status()
print(r.json())<?php
$ch = curl_init("https://api.your-brand.com/api/open/v1/symbols");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("OCTOLIT_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);using var http = new HttpClient();
using var req = new HttpRequestMessage(HttpMethod.Get, "https://api.your-brand.com/api/open/v1/symbols");
req.Headers.Add("X-API-Key", Environment.GetEnvironmentVariable("OCTOLIT_API_KEY"));
using var res = await http.SendAsync(req);
res.EnsureSuccessStatusCode();
Console.WriteLine(await res.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.your-brand.com/api/open/v1/symbols"))
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body());var body io.Reader
req, err := http.NewRequest("GET", "https://api.your-brand.com/api/open/v1/symbols", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", os.Getenv("OCTOLIT_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))var req = URLRequest(url: URL(string: "https://api.your-brand.com/api/open/v1/symbols")!)
req.httpMethod = "GET"
req.setValue(ProcessInfo.processInfo.environment["OCTOLIT_API_KEY"], forHTTPHeaderField: "X-API-Key")
let (data, response) = try await URLSession.shared.data(for: req)
print((response as! HTTPURLResponse).statusCode, String(decoding: data, as: UTF8.self))val client = OkHttpClient()
val req = Request.Builder()
.url("https://api.your-brand.com/api/open/v1/symbols")
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.get()
.build()
client.newCall(req).execute().use { res ->
println("${res.code} ${res.body?.string()}")
} {
"trading_account_id": 55,
"symbols": [
{
"id": 1042,
"symbol": "EURUSD",
"name": "Main",
"market": "string",
"base": "string",
"quote": "string",
"pair": "string",
"contract_size": 100000,
"spread": 0.00009,
"spread_on": 1,
"leverage": 100,
"leverage_type": "fixed",
"tradable": true
}
],
"page": 1,
"per_page": 1,
"total": 1
}#One symbol
Path parameters
Query parameters
one trading account of this key (symbols: default the first)
Responses
OK
Bad request (invalid_json)
No / invalid / revoked / expired API key
Refused (IP, scope, brand switch, kill switch, account, inactive client)
Not found (also every path while the Open API is off on this server)
Invalid request or refused by the order checks (margin, levels, size, market closed ...)
Rate limited (Retry-After)
Internal error; unknown_outcome = look the order up before sending it again
Temporarily unavailable (prices, balance, quotes, rate-limit store)
curl "https://api.your-brand.com/api/open/v1/symbols/1042" \
-H "X-API-Key: $OCTOLIT_API_KEY"const res = await fetch("https://api.your-brand.com/api/open/v1/symbols/1042", {
method: "GET",
headers: {
"X-API-Key": process.env.OCTOLIT_API_KEY,
},
});
if (!res.ok) throw new Error(`GET failed: ${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);import os, requests
r = requests.request(
"GET",
"https://api.your-brand.com/api/open/v1/symbols/1042",
headers={"X-API-Key": os.environ["OCTOLIT_API_KEY"]},
timeout=10,
)
r.raise_for_status()
print(r.json())<?php
$ch = curl_init("https://api.your-brand.com/api/open/v1/symbols/1042");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("OCTOLIT_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);using var http = new HttpClient();
using var req = new HttpRequestMessage(HttpMethod.Get, "https://api.your-brand.com/api/open/v1/symbols/1042");
req.Headers.Add("X-API-Key", Environment.GetEnvironmentVariable("OCTOLIT_API_KEY"));
using var res = await http.SendAsync(req);
res.EnsureSuccessStatusCode();
Console.WriteLine(await res.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.your-brand.com/api/open/v1/symbols/1042"))
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body());var body io.Reader
req, err := http.NewRequest("GET", "https://api.your-brand.com/api/open/v1/symbols/1042", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", os.Getenv("OCTOLIT_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))var req = URLRequest(url: URL(string: "https://api.your-brand.com/api/open/v1/symbols/1042")!)
req.httpMethod = "GET"
req.setValue(ProcessInfo.processInfo.environment["OCTOLIT_API_KEY"], forHTTPHeaderField: "X-API-Key")
let (data, response) = try await URLSession.shared.data(for: req)
print((response as! HTTPURLResponse).statusCode, String(decoding: data, as: UTF8.self))val client = OkHttpClient()
val req = Request.Builder()
.url("https://api.your-brand.com/api/open/v1/symbols/1042")
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.get()
.build()
client.newCall(req).execute().use { res ->
println("${res.code} ${res.body?.string()}")
} {
"trading_account_id": 55,
"symbol": {
"id": 1042,
"symbol": "EURUSD",
"name": "Main",
"market": "string",
"base": "string",
"quote": "string",
"pair": "string",
"contract_size": 100000,
"spread": 0.00009,
"spread_on": 1,
"leverage": 100,
"leverage_type": "fixed",
"tradable": true
}
}#Trading quotes snapshot (the prices orders fill at)
Query parameters
comma list of symbol ids (max 100)
comma list of symbols (max 100)
Responses
OK
Bad request (invalid_json)
No / invalid / revoked / expired API key
Refused (IP, scope, brand switch, kill switch, account, inactive client)
Not found (also every path while the Open API is off on this server)
Invalid request or refused by the order checks (margin, levels, size, market closed ...)
Rate limited (Retry-After)
Internal error; unknown_outcome = look the order up before sending it again
Temporarily unavailable (prices, balance, quotes, rate-limit store)
curl "https://api.your-brand.com/api/open/v1/quotes" \
-H "X-API-Key: $OCTOLIT_API_KEY"const res = await fetch("https://api.your-brand.com/api/open/v1/quotes", {
method: "GET",
headers: {
"X-API-Key": process.env.OCTOLIT_API_KEY,
},
});
if (!res.ok) throw new Error(`GET failed: ${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);import os, requests
r = requests.request(
"GET",
"https://api.your-brand.com/api/open/v1/quotes",
headers={"X-API-Key": os.environ["OCTOLIT_API_KEY"]},
timeout=10,
)
r.raise_for_status()
print(r.json())<?php
$ch = curl_init("https://api.your-brand.com/api/open/v1/quotes");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("OCTOLIT_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);using var http = new HttpClient();
using var req = new HttpRequestMessage(HttpMethod.Get, "https://api.your-brand.com/api/open/v1/quotes");
req.Headers.Add("X-API-Key", Environment.GetEnvironmentVariable("OCTOLIT_API_KEY"));
using var res = await http.SendAsync(req);
res.EnsureSuccessStatusCode();
Console.WriteLine(await res.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.your-brand.com/api/open/v1/quotes"))
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body());var body io.Reader
req, err := http.NewRequest("GET", "https://api.your-brand.com/api/open/v1/quotes", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", os.Getenv("OCTOLIT_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))var req = URLRequest(url: URL(string: "https://api.your-brand.com/api/open/v1/quotes")!)
req.httpMethod = "GET"
req.setValue(ProcessInfo.processInfo.environment["OCTOLIT_API_KEY"], forHTTPHeaderField: "X-API-Key")
let (data, response) = try await URLSession.shared.data(for: req)
print((response as! HTTPURLResponse).statusCode, String(decoding: data, as: UTF8.self))val client = OkHttpClient()
val req = Request.Builder()
.url("https://api.your-brand.com/api/open/v1/quotes")
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.get()
.build()
client.newCall(req).execute().use { res ->
println("${res.code} ${res.body?.string()}")
} {
"quotes": [
{
"symbol_id": 42,
"symbol": "EURUSD",
"pair": "string",
"bid": 1.08452,
"ask": 1.08461,
"mid": 1.084565,
"ts": 1762862400123
}
],
"source": "trading",
"mirror_at": 1
}#Chart history: the newest OHLCV bars of one symbol up to `to` (any chart timeframe)
Query parameters
or symbol
or symbol_id
1m, 5m, 15m, 30m, 1h, 4h, 1D, 1W, 1M (default 1h; aliases 60, H1, D, W1, MN ...)
newest bar open time: epoch seconds, epoch ms or ISO 8601 (default now)
oldest bar open time (optional, before to)
1..5000, default 500; the newest count bars
Responses
OK
Bad request (invalid_json)
No / invalid / revoked / expired API key
Refused (IP, scope, brand switch, kill switch, account, inactive client)
Not found (also every path while the Open API is off on this server)
Invalid request or refused by the order checks (margin, levels, size, market closed ...)
Rate limited (Retry-After)
Internal error; unknown_outcome = look the order up before sending it again
Temporarily unavailable (prices, balance, quotes, rate-limit store)
curl "https://api.your-brand.com/api/open/v1/bars" \
-H "X-API-Key: $OCTOLIT_API_KEY"const res = await fetch("https://api.your-brand.com/api/open/v1/bars", {
method: "GET",
headers: {
"X-API-Key": process.env.OCTOLIT_API_KEY,
},
});
if (!res.ok) throw new Error(`GET failed: ${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);import os, requests
r = requests.request(
"GET",
"https://api.your-brand.com/api/open/v1/bars",
headers={"X-API-Key": os.environ["OCTOLIT_API_KEY"]},
timeout=10,
)
r.raise_for_status()
print(r.json())<?php
$ch = curl_init("https://api.your-brand.com/api/open/v1/bars");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("OCTOLIT_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);using var http = new HttpClient();
using var req = new HttpRequestMessage(HttpMethod.Get, "https://api.your-brand.com/api/open/v1/bars");
req.Headers.Add("X-API-Key", Environment.GetEnvironmentVariable("OCTOLIT_API_KEY"));
using var res = await http.SendAsync(req);
res.EnsureSuccessStatusCode();
Console.WriteLine(await res.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.your-brand.com/api/open/v1/bars"))
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body());var body io.Reader
req, err := http.NewRequest("GET", "https://api.your-brand.com/api/open/v1/bars", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", os.Getenv("OCTOLIT_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))var req = URLRequest(url: URL(string: "https://api.your-brand.com/api/open/v1/bars")!)
req.httpMethod = "GET"
req.setValue(ProcessInfo.processInfo.environment["OCTOLIT_API_KEY"], forHTTPHeaderField: "X-API-Key")
let (data, response) = try await URLSession.shared.data(for: req)
print((response as! HTTPURLResponse).statusCode, String(decoding: data, as: UTF8.self))val client = OkHttpClient()
val req = Request.Builder()
.url("https://api.your-brand.com/api/open/v1/bars")
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.get()
.build()
client.newCall(req).execute().use { res ->
println("${res.code} ${res.body?.string()}")
} {
"symbol_id": 42,
"symbol": "EURUSD",
"pair": "string",
"resolution": "1h",
"from": 1,
"to": 1,
"count": 500,
"bars": [
{
"t": 1,
"o": 1.5,
"h": 1.5,
"l": 1.5,
"c": 1.5,
"v": 1.5
}
],
"complete": true,
"next_to": 1
}#Trending instruments: the symbols this brand's clients traded the most (live, prop / bot / demo trades not counted; 403 trending_disabled unless the brand offers it)
Query parameters
1h, 24h, 7d (default 24h)
1..50, default 10
Responses
OK
Bad request (invalid_json)
No / invalid / revoked / expired API key
Refused (IP, scope, brand switch, kill switch, account, inactive client)
Not found (also every path while the Open API is off on this server)
Invalid request or refused by the order checks (margin, levels, size, market closed ...)
Rate limited (Retry-After)
Internal error; unknown_outcome = look the order up before sending it again
Temporarily unavailable (prices, balance, quotes, rate-limit store)
curl "https://api.your-brand.com/api/open/v1/trending" \
-H "X-API-Key: $OCTOLIT_API_KEY"const res = await fetch("https://api.your-brand.com/api/open/v1/trending", {
method: "GET",
headers: {
"X-API-Key": process.env.OCTOLIT_API_KEY,
},
});
if (!res.ok) throw new Error(`GET failed: ${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);import os, requests
r = requests.request(
"GET",
"https://api.your-brand.com/api/open/v1/trending",
headers={"X-API-Key": os.environ["OCTOLIT_API_KEY"]},
timeout=10,
)
r.raise_for_status()
print(r.json())<?php
$ch = curl_init("https://api.your-brand.com/api/open/v1/trending");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: " . getenv("OCTOLIT_API_KEY"),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);using var http = new HttpClient();
using var req = new HttpRequestMessage(HttpMethod.Get, "https://api.your-brand.com/api/open/v1/trending");
req.Headers.Add("X-API-Key", Environment.GetEnvironmentVariable("OCTOLIT_API_KEY"));
using var res = await http.SendAsync(req);
res.EnsureSuccessStatusCode();
Console.WriteLine(await res.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var req = HttpRequest.newBuilder(URI.create("https://api.your-brand.com/api/open/v1/trending"))
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var res = client.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body());var body io.Reader
req, err := http.NewRequest("GET", "https://api.your-brand.com/api/open/v1/trending", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("X-API-Key", os.Getenv("OCTOLIT_API_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
out, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(out))var req = URLRequest(url: URL(string: "https://api.your-brand.com/api/open/v1/trending")!)
req.httpMethod = "GET"
req.setValue(ProcessInfo.processInfo.environment["OCTOLIT_API_KEY"], forHTTPHeaderField: "X-API-Key")
let (data, response) = try await URLSession.shared.data(for: req)
print((response as! HTTPURLResponse).statusCode, String(decoding: data, as: UTF8.self))val client = OkHttpClient()
val req = Request.Builder()
.url("https://api.your-brand.com/api/open/v1/trending")
.header("X-API-Key", System.getenv("OCTOLIT_API_KEY"))
.get()
.build()
client.newCall(req).execute().use { res ->
println("${res.code} ${res.body?.string()}")
} {
"now": 1,
"as_of": 1,
"scope": "brand",
"window": "24h",
"from": 1,
"min_clients": 1,
"total_trades": 1,
"symbols": [
{
"rank": 1,
"symbol": "EURUSD",
"ticker": "string",
"ticker_id": 42,
"name": "Main",
"trades": 1,
"clients": 1,
"share_pct": 1.5,
"buy_pct": 1.5
}
]
}