curl --request GET \
--url https://api-uat.dimetrades.com/api/positions/portfolio/resting \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/positions/portfolio/resting"
headers = {
"Authorization": "Bearer <token>",
"X-API-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-API-Key': '<api-key>'}
};
fetch('https://api-uat.dimetrades.com/api/positions/portfolio/resting', 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-uat.dimetrades.com/api/positions/portfolio/resting",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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-uat.dimetrades.com/api/positions/portfolio/resting"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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-uat.dimetrades.com/api/positions/portfolio/resting")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/positions/portfolio/resting")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"restingOrders": [
{
"id": 31,
"orderId": "019f2cfa-2fc7-733c-b8af-2fc76797a369",
"marketId": 173418,
"market": {
"id": 173418,
"title": "30 inches",
"ticker": "OEToTLFpzb",
"yesTitle": "Yes",
"noTitle": "No",
"currentPrice": 44,
"status": "open",
"event": {
"id": 36369,
"title": "Will Chicago record at least 30 inches of snowfall during 2026?",
"ticker": "KXCHISNOW-2026",
"imageUrl": "https://cdn.dimetrades.com/events/36369.png"
}
},
"side": "buy",
"contractSide": "yes",
"limitPrice": 44,
"type": "limit",
"timeInForce": "GTC",
"status": "open",
"quantity": 3,
"quantityFilled": 0,
"remainingQuantity": 3,
"lockedCash": 1.32,
"currentPrice": 44,
"createdAt": "2026-07-04T11:53:41.707Z",
"updatedAt": "2026-07-04T11:53:41.707Z",
"expiresAt": null
}
],
"summary": {
"totalOrders": 1,
"totalLockedCash": 1.32
},
"pagination": {
"count": 1,
"totalCount": 1,
"hasPreviousPage": false,
"hasNextPage": false
}
},
"errors": []
}Portfolio resting orders
Returns the authenticated user’s resting (open / partially-filled) orders —
the working orders on the book, with locked cash and remaining quantity.
Also returns an aggregate data.summary (total resting orders, total locked
cash) computed across every matching order, not just the current page —
the summary totals stay identical regardless of which page you request.
Prices here are already user-facing — do not invert them
This is the exception among the order endpoints. It reconstructs each
order into the view the user originally submitted (via
Order.getUserOriginalOrder()), so side, contractSide and limitPrice
are the buy/sell, YES/NO and price they actually entered. A SELL YES @ 70¢
appears as side: "sell", contractSide: "yes", limitPrice: 70.
Applying 100 - limitPrice here would double-convert. Contrast with
GET /orders, which returns the raw
orderbook representation and does need converting — see
Conventions → Order prices.
lockedCash is 0 for SELL orders: they lock contracts, not cash.
curl --request GET \
--url https://api-uat.dimetrades.com/api/positions/portfolio/resting \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/positions/portfolio/resting"
headers = {
"Authorization": "Bearer <token>",
"X-API-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {Authorization: 'Bearer <token>', 'X-API-Key': '<api-key>'}
};
fetch('https://api-uat.dimetrades.com/api/positions/portfolio/resting', 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-uat.dimetrades.com/api/positions/portfolio/resting",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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-uat.dimetrades.com/api/positions/portfolio/resting"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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-uat.dimetrades.com/api/positions/portfolio/resting")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/positions/portfolio/resting")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"restingOrders": [
{
"id": 31,
"orderId": "019f2cfa-2fc7-733c-b8af-2fc76797a369",
"marketId": 173418,
"market": {
"id": 173418,
"title": "30 inches",
"ticker": "OEToTLFpzb",
"yesTitle": "Yes",
"noTitle": "No",
"currentPrice": 44,
"status": "open",
"event": {
"id": 36369,
"title": "Will Chicago record at least 30 inches of snowfall during 2026?",
"ticker": "KXCHISNOW-2026",
"imageUrl": "https://cdn.dimetrades.com/events/36369.png"
}
},
"side": "buy",
"contractSide": "yes",
"limitPrice": 44,
"type": "limit",
"timeInForce": "GTC",
"status": "open",
"quantity": 3,
"quantityFilled": 0,
"remainingQuantity": 3,
"lockedCash": 1.32,
"currentPrice": 44,
"createdAt": "2026-07-04T11:53:41.707Z",
"updatedAt": "2026-07-04T11:53:41.707Z",
"expiresAt": null
}
],
"summary": {
"totalOrders": 1,
"totalLockedCash": 1.32
},
"pagination": {
"count": 1,
"totalCount": 1,
"hasPreviousPage": false,
"hasNextPage": false
}
},
"errors": []
}Authorizations
The end user's JWT access token, sent as Authorization: Bearer <token>.
Obtain one from POST /partner/customers or POST /partner/customers/login
— both return it as token. It identifies which of your users a call
is made for, and is sent alongside your X-API-Key on every authenticated
endpoint.
Event discovery, categories, subcategories and scores are public and need no token.
ISV / partner credential — public half. Required on every request.
Identifies the integration partner (ISV) making the call. Issued by Dime
Trades when the ISV is onboarded and sent on every /partner/* endpoint:
X-API-Key: dt_pk_live_7f3c9a2e5b18
- On the two partner endpoints that create accounts or issue tokens (
POST /partner/customers,POST /partner/customers/login), it is accompanied byX-API-Secretand is the only authentication — there is no user token yet. - On every other partner endpoint it is sent alongside the user's
Authorization: Bearer <token>: the API key says which platform is calling, the bearer token says which user it is calling for.
Credentials are scoped to one or more brands; using a key with a brandId outside that scope returns 403. Staging and production keys are separate.
The key identifies your platform — treat it as a backend credential.
Query Parameters
1-based page number for paginated results.
x >= 1Number of rows per page.
1 <= x <= 100