finance-external-futures-contract
International Futures Contracts
International Futures Contracts
Usage Cost
5 coins/call
Quick Start
Use a unified response envelope and call directly from your backend.
https://openapi.toolkk.com/v1/finance-external-futures-contractcURL Example
curl --request POST \
--url 'https://openapi.toolkk.com/v1/finance-external-futures-contract' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "symbol": "期货品种代码,详见代码表"\n}'Python Example
import os
import requests
url = "https://openapi.toolkk.com/v1/finance-external-futures-contract"
payload = {
"symbol": "期货品种代码,详见代码表"
}
headers = {
"Content-Type": "application/json",
"X-API-Key": os.getenv("TOOLKK_API_KEY", "YOUR_API_KEY"),
}
response = requests.request("POST", url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())Go Example
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/finance-external-futures-contract"
payload := []byte("{\n \"symbol\": \"期货品种代码,详见代码表\"\n}")
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}Java Example
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ToolkkExample {
public static void main(String[] args) throws Exception {
String payload = "{\n \"symbol\": \"期货品种代码,详见代码表\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/finance-external-futures-contract"))
.method("POST", HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}PHP Example
<?php
$endpoint = 'https://openapi.toolkk.com/v1/finance-external-futures-contract';
$payload = "{\n \"symbol\": \"期货品种代码,详见代码表\"\n}";
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;Response Example
{
"msg": "成功",
"code": 200,
"taskNo": "906962467150026863697586",
"data": {
"list": [
"GASO",
"GASO2408",
"GASO2409",
"GASO2410",
"GASO2411",
"GASO2412",
"GASO2501",
"GASO2502",
"GASO2503",
"GASO2504",
"GASO2505",
"GASO2506",
"GASO2507",
"GASO2508",
"GASO2509",
"GASO2510",
"GASO2512"
]
}
}Examples illustrate the response structure. Actual results depend on the API response.
- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Send your API Key in the X-API-Key header from your backend.
Check both HTTP status and business fields before treating a call as successful.
Use retries and backoff together with rate limits in high-frequency scenarios.
Request Fields
Send requests from your server with the key in the X-API-Key header.
Request Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| symbol | string | Yes | 期货品种代码,详见代码表 | Unspecified |
Request Example
{
"symbol": "期货品种代码,详见代码表"
}- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Response Fields
Examples illustrate the response structure. Actual results depend on the API response.
Response Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| msg | string | No | 返回码对应描述 | 成功 |
| code | number | No | 返回码,详见返回码说明 | 200 |
| taskNo | string | No | 本次请求号 | 906962467150026863697586 |
| data | object | No | Unspecified | Unspecified |
| data.list | array | No | Unspecified | ["GASO","GASO2408","GASO2409","GASO2410","GASO2411","GASO2412","GASO2501","GASO2502","GASO2503","GASO2504","GASO2505","GASO2506","GASO2507","GASO2508","GASO2509","GASO2510","GASO2512"] |
| data.list[] | string | Unspecified | Unspecified | GASO |
Response Example
{
"msg": "成功",
"code": 200,
"taskNo": "906962467150026863697586",
"data": {
"list": [
"GASO",
"GASO2408",
"GASO2409",
"GASO2410",
"GASO2411",
"GASO2412",
"GASO2501",
"GASO2502",
"GASO2503",
"GASO2504",
"GASO2505",
"GASO2506",
"GASO2507",
"GASO2508",
"GASO2509",
"GASO2510",
"GASO2512"
]
}
}API overview
Capabilities, use cases, limitations, and frequently asked questions.
API Introduction
This API is used to query all tradable contract codes under a specified international futures product. Developers can pass a standard product code (e.g., GASO) to obtain a complete list of contracts, including main contracts and far-month contracts, suitable for market system initialization and contract switching logic.
Use Cases
- Market Software Development: Automatically retrieve all active contracts under a specific product to build a watchlist.
- Quantitative Strategy Backtesting: Batch retrieve historical contract codes to ensure data continuity for backtesting.
- Trading Terminal Integration: Provide users with a contract selector, displaying currently tradable monthly contracts.
Request and Response Description
- Request Method: POST
- Core Parameter:
symbol(Required), the futures product code, must be passed referencing the code table provided by the platform. - Response Result: On success,
codeis 200, and the array contains all contract code strings for that product (e.g., ).