Position history
curl --request GET \
--url https://engine.dojifunded.com/v1/account/{account_id}/positions/history \
--header 'X-API-Key: <api-key>' \
--header 'X-API-Secret: <api-key>'import requests
url = "https://engine.dojifunded.com/v1/account/{account_id}/positions/history"
headers = {
"X-API-Key": "<api-key>",
"X-API-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-Key': '<api-key>', 'X-API-Secret': '<api-key>'}
};
fetch('https://engine.dojifunded.com/v1/account/{account_id}/positions/history', 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://engine.dojifunded.com/v1/account/{account_id}/positions/history",
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>",
"X-API-Secret: <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://engine.dojifunded.com/v1/account/{account_id}/positions/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("X-API-Secret", "<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://engine.dojifunded.com/v1/account/{account_id}/positions/history")
.header("X-API-Key", "<api-key>")
.header("X-API-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://engine.dojifunded.com/v1/account/{account_id}/positions/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
request["X-API-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"symbol": "BTC-USD",
"side": "BUY",
"quantity": 123,
"entry_price": 123,
"mark_price": 123,
"unrealized_pnl": 123,
"leverage": 123,
"venue": "GMX"
}
]{
"error": "unauthorized"
}{
"error": "not_found"
}Accounts
Position history
Paginated list of closed positions. Requires the READ_ONLY (or higher) permission scope.
GET
/
account
/
{account_id}
/
positions
/
history
Position history
curl --request GET \
--url https://engine.dojifunded.com/v1/account/{account_id}/positions/history \
--header 'X-API-Key: <api-key>' \
--header 'X-API-Secret: <api-key>'import requests
url = "https://engine.dojifunded.com/v1/account/{account_id}/positions/history"
headers = {
"X-API-Key": "<api-key>",
"X-API-Secret": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-Key': '<api-key>', 'X-API-Secret': '<api-key>'}
};
fetch('https://engine.dojifunded.com/v1/account/{account_id}/positions/history', 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://engine.dojifunded.com/v1/account/{account_id}/positions/history",
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>",
"X-API-Secret: <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://engine.dojifunded.com/v1/account/{account_id}/positions/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("X-API-Secret", "<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://engine.dojifunded.com/v1/account/{account_id}/positions/history")
.header("X-API-Key", "<api-key>")
.header("X-API-Secret", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://engine.dojifunded.com/v1/account/{account_id}/positions/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
request["X-API-Secret"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"symbol": "BTC-USD",
"side": "BUY",
"quantity": 123,
"entry_price": 123,
"mark_price": 123,
"unrealized_pnl": 123,
"leverage": 123,
"venue": "GMX"
}
]{
"error": "unauthorized"
}{
"error": "not_found"
}Authorizations
API key generated at Dashboard, Settings, Developer. Format: doji_ak_...
API secret returned once at key creation. Format: doji_sk_...
Path Parameters
UUID of the account. Must be owned by the authenticated user.
Query Parameters
ISO 8601 start timestamp (inclusive).
ISO 8601 end timestamp (inclusive).
Number of results to return (capped per endpoint).
Response
List of closed positions.
Tradable symbol.
Example:
"BTC-USD"
Position side.
Available options:
BUY, SELL Position size in base asset.
Average entry price.
Current mark price.
Unrealized profit or loss.
Position leverage.
Execution venue.
Example:
"GMX"

