curl --request GET \
--url https://api-uat.dimetrades.com/api/trades/my \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/trades/my"
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/trades/my', 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/trades/my",
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/trades/my"
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/trades/my")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/trades/my")
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": {
"trades": [
{
"id": 15,
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"marketId": 60497,
"orderId": "019f2cfb-9df3-733c-b8af-42a3620ee455",
"price": 60,
"quantity": 9,
"role": "maker",
"status": "active",
"yesPrice": 60,
"bustedAt": null,
"bustReason": null,
"correctedPrice": null,
"correctionId": null,
"correctedAt": null,
"user": {
"id": 67,
"username": "shoaibb",
"firstName": "Shoaib",
"lastName": "khan"
},
"order": {
"id": 34,
"orderId": "019f2cfb-9df3-733c-b8af-42a3620ee455",
"type": "limit",
"price": 60,
"userId": 67,
"quantity": 9,
"quantityFilled": 9,
"predictionSide": "yes",
"isConvertedOrder": false,
"status": "filled"
},
"market": {
"id": 60497,
"title": "M6.0+ in California"
},
"createdAt": "2026-07-04T11:55:17.463Z",
"updatedAt": "2026-07-04T11:55:17.463Z"
}
],
"pagination": {
"count": 1,
"totalCount": 42,
"hasPreviousPage": false,
"hasNextPage": true
}
},
"errors": []
}My trades (with market & user detail)
Returns the authenticated user’s trades enriched with market and user
detail. Same underlying rows as
GET /trades/my/history, with
user and market nesting instead of a fees total.
Busted and price-corrected trades come from this endpoint
There is no separate API for busted or price-corrected trades. An admin
action never deletes or moves a trade — it mutates the same row in place and
flips status to busted or corrected, so both keep showing up here.
status | What happened | What the row holds |
|---|---|---|
active | Normal executed trade | Original values |
busted | Admin reversed the trade | Original price / quantity; bustedAt + bustReason set. Money and contracts already refunded. |
corrected | Admin re-priced the trade | Restated price and yesPrice; correctedPrice, correctionId, correctedAt set. Wallet delta already applied. |
settled | Market settled, trade closed out | Original values |
⚠️ A busted trade is still in this list, with its original price and quantity. Filter
status !== 'busted'before totalling volume, cost basis, or P&L.
tradeId is the stable reconciliation key across both operations, and
updatedAt moves when either is applied while createdAt does not.
Prices
The top-level price is already your effective price for the contract
you actually traded — do not invert it. The nested order.price and
order.predictionSide are in orderbook representation and need converting
when order.isConvertedOrder is true. See
Conventions → Order prices.
curl --request GET \
--url https://api-uat.dimetrades.com/api/trades/my \
--header 'Authorization: Bearer <token>' \
--header 'X-API-Key: <api-key>'import requests
url = "https://api-uat.dimetrades.com/api/trades/my"
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/trades/my', 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/trades/my",
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/trades/my"
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/trades/my")
.header("Authorization", "Bearer <token>")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-uat.dimetrades.com/api/trades/my")
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": {
"trades": [
{
"id": 15,
"tradeId": "019f2cfb-a1b2-733c-9d4e-42a3620ee901",
"marketId": 60497,
"orderId": "019f2cfb-9df3-733c-b8af-42a3620ee455",
"price": 60,
"quantity": 9,
"role": "maker",
"status": "active",
"yesPrice": 60,
"bustedAt": null,
"bustReason": null,
"correctedPrice": null,
"correctionId": null,
"correctedAt": null,
"user": {
"id": 67,
"username": "shoaibb",
"firstName": "Shoaib",
"lastName": "khan"
},
"order": {
"id": 34,
"orderId": "019f2cfb-9df3-733c-b8af-42a3620ee455",
"type": "limit",
"price": 60,
"userId": 67,
"quantity": 9,
"quantityFilled": 9,
"predictionSide": "yes",
"isConvertedOrder": false,
"status": "filled"
},
"market": {
"id": 60497,
"title": "M6.0+ in California"
},
"createdAt": "2026-07-04T11:55:17.463Z",
"updatedAt": "2026-07-04T11:55:17.463Z"
}
],
"pagination": {
"count": 1,
"totalCount": 42,
"hasPreviousPage": false,
"hasNextPage": true
}
},
"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
^[0-9]+$"60497"
Accepted by request validation but currently has no effect — GetUserTradesService does not apply it. Filter client-side on order.predictionSide (remembering to flip it when order.isConvertedOrder is true).
Which side of the binary market the order is for.
yes, no "yes"
Accepted by request validation but currently has no effect — GetUserTradesService does not apply it. Filter client-side on order.isConvertedOrder.
ISO-8601 timestamp. Returns only trades created or changed (busted or price-corrected) after it, filtered on updatedAt, ordered oldest change first (updatedAt ASC, id ASC) so you can page forward and resume from the last updatedAt you saw. Without it the order is newest first (createdAt DESC, id DESC); id breaks ties so rows never shuffle between pages.
"2026-10-01T00:00:00.000Z"
1-based page number for paginated results.
x >= 1Number of rows per page.
1 <= x <= 100