curl --request GET \
--url https://hip4-api.totalis.trade/v1/me/operations \
--header 'Authorization: Bearer <token>'import requests
url = "https://hip4-api.totalis.trade/v1/me/operations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hip4-api.totalis.trade/v1/me/operations', 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://hip4-api.totalis.trade/v1/me/operations",
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>"
],
]);
$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://hip4-api.totalis.trade/v1/me/operations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://hip4-api.totalis.trade/v1/me/operations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/me/operations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"operations": [
{
"operation_id": "0x2d9e4a7b1c6f3e8d5a2b9c4f7e1d6a3b8c5f2e9d4a7b1c6e3f8d5a2b9c4e7f10",
"kind": "CLAIM",
"amount": null,
"status": "IN_FLIGHT",
"transaction_hash": null,
"created_at": "2026-09-26T14:12:05.418Z",
"updated_at": "2026-09-26T14:12:06.902Z"
},
{
"operation_id": "0x5b1f8e2a9c4d7036e1b5a8f2c9d4e7031b6a5f8e2c9d4a7b3e6f1c8d5a2b9e40",
"kind": "ACCEPT",
"amount": "20000000",
"status": "COMMITTED",
"transaction_hash": "0x4f7a1c8e5b2d9f6a3c1e8b5d2f9a6c3e1b8d5f2a9c6e3b1d8f5a2c9e6b3d1f8a",
"created_at": "2026-09-25T18:41:33.127Z",
"updated_at": "2026-09-25T18:41:37.560Z"
},
{
"operation_id": "0x7e3c9a41d2b85f06e1a7c4d93b28f5e60a1c7d4b92e3f8a05c6d1b7e42a9f3c0",
"kind": "DEPOSIT_USER_AUTHORIZED",
"amount": "25000000",
"status": "COMMITTED",
"transaction_hash": "0x9a4c2e7f1b8d5a3c6e9f2b4d7a1c8e5f3b6d9a2c4e7f1b8d5a3c6e9f2b4d7a1c",
"created_at": "2026-09-25T18:39:02.315Z",
"updated_at": "2026-09-25T18:39:06.844Z"
}
],
"next_cursor": "MjAyNi0wOS0yNVQxODozOTowMi4zMTVafDB4N2UzYzlhNDFkMmI4NWYwNmUx",
"has_more": true,
"checkpoint": {
"block_number": "31552210",
"projection_state": "CURRENT"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}List operations
List your account’s on-chain operations.
Requires one of:
- a key for your account with
account:read - a key for a maker with
vault:readand the maker permissionsREAD_ACTIVITY,READ_CAPITAL,READ_PERFORMANCE,READ_POSITIONS
curl --request GET \
--url https://hip4-api.totalis.trade/v1/me/operations \
--header 'Authorization: Bearer <token>'import requests
url = "https://hip4-api.totalis.trade/v1/me/operations"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://hip4-api.totalis.trade/v1/me/operations', 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://hip4-api.totalis.trade/v1/me/operations",
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>"
],
]);
$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://hip4-api.totalis.trade/v1/me/operations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://hip4-api.totalis.trade/v1/me/operations")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://hip4-api.totalis.trade/v1/me/operations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"operations": [
{
"operation_id": "0x2d9e4a7b1c6f3e8d5a2b9c4f7e1d6a3b8c5f2e9d4a7b1c6e3f8d5a2b9c4e7f10",
"kind": "CLAIM",
"amount": null,
"status": "IN_FLIGHT",
"transaction_hash": null,
"created_at": "2026-09-26T14:12:05.418Z",
"updated_at": "2026-09-26T14:12:06.902Z"
},
{
"operation_id": "0x5b1f8e2a9c4d7036e1b5a8f2c9d4e7031b6a5f8e2c9d4a7b3e6f1c8d5a2b9e40",
"kind": "ACCEPT",
"amount": "20000000",
"status": "COMMITTED",
"transaction_hash": "0x4f7a1c8e5b2d9f6a3c1e8b5d2f9a6c3e1b8d5f2a9c6e3b1d8f5a2c9e6b3d1f8a",
"created_at": "2026-09-25T18:41:33.127Z",
"updated_at": "2026-09-25T18:41:37.560Z"
},
{
"operation_id": "0x7e3c9a41d2b85f06e1a7c4d93b28f5e60a1c7d4b92e3f8a05c6d1b7e42a9f3c0",
"kind": "DEPOSIT_USER_AUTHORIZED",
"amount": "25000000",
"status": "COMMITTED",
"transaction_hash": "0x9a4c2e7f1b8d5a3c6e9f2b4d7a1c8e5f3b6d9a2c4e7f1b8d5a3c6e9f2b4d7a1c",
"created_at": "2026-09-25T18:39:02.315Z",
"updated_at": "2026-09-25T18:39:06.844Z"
}
],
"next_cursor": "MjAyNi0wOS0yNVQxODozOTowMi4zMTVafDB4N2UzYzlhNDFkMmI4NWYwNmUx",
"has_more": true,
"checkpoint": {
"block_number": "31552210",
"projection_state": "CURRENT"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}{
"error": {
"code": "INVALID_REQUEST",
"field_violations": [
{
"code": "REQUIRED",
"field": "<string>"
}
],
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"retry": "NEVER"
}
}Authorizations
Scoped API key from the Totalis app settings. Each key acts for one account, yours or a maker's, and holds only scopes that account can use. Each operation lists the scopes it requires.
Query Parameters
Omit for the first page; then send the previous response's next_cursor unchanged. Opaque list cursor. Send a previous response's next_cursor back unchanged; never build or parse one.
1 - 2048Maximum items per page, 1 to 200, default 50. A page may hold fewer, even none, while has_more is true. Maximum items in one page. A page may hold fewer, even none, while has_more is true.
1 <= x <= 200Response
One page of operations. An operation is one on-chain action Totalis relays for you, such as a trade or a withdrawal payout. A key reads its own account's: yours, or its maker's. The stream pushes each change as OPERATION_UPDATED; page this when a snapshot truncated them.
Operations newest first by creation time.
200Show child attributes
Show child attributes
Send as cursor to fetch the next page; null when has_more is false.
1 - 2048True when older operations follow; fetch them with next_cursor.
Chain projection the listed states reflect.
Show child attributes
Show child attributes
Was this page helpful?

