List instruments
Lists the instruments your organization’s trading accounts can trade: every contract in the markets your organization is enabled for (markets in the response), with the specification you need to size orders and value positions.
Order quantity. Order and position quantity is always a whole number of units. One unit is contractSize sizeUnit: one contract for futures, a fixed amount of the base asset for perpetuals (for example 0.001 BTC). So a size in sizeUnit is quantity × contractSize.
Value. pointValue is what a 1.0 price move is worth for one unit of quantity, and tickValue what one tick is worth, both in quoteCurrency. Futures are quoted in USD; a perpetual’s quoteCurrency is its quote asset (for example USDT). Unrealized P&L = (price − entry price) × quantity × pointValue for a long position.
Limits. minQuantity is the smallest order. maxLimitOrderQuantity and maxMarketOrderQuantity are the largest single orders the instrument accepts, or null when the instrument sets none. A trading rule can limit sizes further per account.
Trading hours. sessionCalendar is cme (CME Globex futures sessions, closed at weekends and during the daily break) or crypto_24x7.
Expired futures are left out unless includeInactive=true. The list changes when contracts roll, so read it again at least once a day rather than hard-coding symbols. Results may be up to a minute old.
Requires view permission on traders.
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/instruments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/instruments"
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.hyperprop.com/platform/v1/organization/instruments', 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.hyperprop.com/platform/v1/organization/instruments",
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.hyperprop.com/platform/v1/organization/instruments"
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.hyperprop.com/platform/v1/organization/instruments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/instruments")
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{
"success": true,
"data": {
"markets": [
"CBOT",
"CME",
"COMEX",
"NYMEX"
],
"count": 1,
"instruments": [
{
"id": "3f0c9a52-6a1e-4d38-9a3c-1b0f2e7d4c11",
"symbol": "MNQZ6",
"rootSymbol": "MNQ",
"name": "Micro E-mini Nasdaq-100",
"market": "CME",
"assetClass": "future",
"status": "active",
"quoteCurrency": "USD",
"tickSize": 0.25,
"pointValue": 2,
"tickValue": 0.5,
"contractSize": 1,
"sizeUnit": "contracts",
"quantityPrecision": 0,
"minQuantity": 1,
"maxLimitOrderQuantity": null,
"maxMarketOrderQuantity": null,
"sessionCalendar": "cme",
"expiryDate": "2026-12-18",
"isFrontMonth": true,
"perpetual": {
"baseAsset": "BTC",
"maxLeverage": 125,
"minOrderValue": 100,
"fundingIntervalHours": 8
}
}
]
}
}{
"success": false,
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"code": "VALIDATION_ERROR"
}{
"success": false,
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication required",
"code": "UNAUTHORIZED"
}{
"success": false,
"statusCode": 403,
"error": "Forbidden",
"message": "Access denied",
"code": "FORBIDDEN"
}{
"success": false,
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"code": "INTERNAL_ERROR"
}{
"statusCode": 504,
"error": "Gateway Timeout",
"message": "The request did not complete within 25 seconds. Try again, or narrow it (for example a shorter date range).",
"code": "REQUEST_TIMEOUT"
}Authorizations
Organization API key. Format: "hp_live_{key}". Organization admins manage the key in the dashboard.
Query Parameters
Only this market (case-insensitive)
20Only futures or only perpetuals
future, perpetual Also list instruments that can no longer be traded, such as expired futures
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/instruments \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/instruments"
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.hyperprop.com/platform/v1/organization/instruments', 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.hyperprop.com/platform/v1/organization/instruments",
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.hyperprop.com/platform/v1/organization/instruments"
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.hyperprop.com/platform/v1/organization/instruments")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/instruments")
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{
"success": true,
"data": {
"markets": [
"CBOT",
"CME",
"COMEX",
"NYMEX"
],
"count": 1,
"instruments": [
{
"id": "3f0c9a52-6a1e-4d38-9a3c-1b0f2e7d4c11",
"symbol": "MNQZ6",
"rootSymbol": "MNQ",
"name": "Micro E-mini Nasdaq-100",
"market": "CME",
"assetClass": "future",
"status": "active",
"quoteCurrency": "USD",
"tickSize": 0.25,
"pointValue": 2,
"tickValue": 0.5,
"contractSize": 1,
"sizeUnit": "contracts",
"quantityPrecision": 0,
"minQuantity": 1,
"maxLimitOrderQuantity": null,
"maxMarketOrderQuantity": null,
"sessionCalendar": "cme",
"expiryDate": "2026-12-18",
"isFrontMonth": true,
"perpetual": {
"baseAsset": "BTC",
"maxLeverage": 125,
"minOrderValue": 100,
"fundingIntervalHours": 8
}
}
]
}
}{
"success": false,
"statusCode": 400,
"error": "Bad Request",
"message": "Validation failed",
"code": "VALIDATION_ERROR"
}{
"success": false,
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication required",
"code": "UNAUTHORIZED"
}{
"success": false,
"statusCode": 403,
"error": "Forbidden",
"message": "Access denied",
"code": "FORBIDDEN"
}{
"success": false,
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred",
"code": "INTERNAL_ERROR"
}{
"statusCode": 504,
"error": "Gateway Timeout",
"message": "The request did not complete within 25 seconds. Try again, or narrow it (for example a shorter date range).",
"code": "REQUEST_TIMEOUT"
}