List transactions
curl --request POST \
--url 'https://clarus-api.com/graphql#ListTransactions' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"query": "query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }"
}
'import requests
url = "https://clarus-api.com/graphql#ListTransactions"
payload = { "query": "query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }" }
headers = {
"Authorization": "Bearer <token>",
"X-Clarus-Subdomain": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Clarus-Subdomain': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: 'query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }'
})
};
fetch('https://clarus-api.com/graphql#ListTransactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"transactions": {
"all": {
"edges": [
{
"node": {
"id": "904512",
"subtype": "PICK",
"category": "PICK",
"quantity": 24,
"created_at": "2026-06-15T14:32:08Z",
"product": {
"id": "1024",
"code": "WIDGET-RED-500"
},
"account": {
"id": "7",
"code": "ACME"
},
"location_from": {
"id": "318",
"code": "AISLE-04-BAY-12"
},
"location_to": {
"id": "990",
"code": "PACK-STATION-02"
},
"completing_user": {
"id": "210"
}
}
}
]
}
}
}
}{
"error": "<string>"
}Transactions
List transactions
Retrieve the read-only stock transaction history using GraphQL. Transactions record every stock movement (picks, receipts, transfers, etc.) and cannot be created or modified via the API.
POST
/
graphql#ListTransactions
List transactions
curl --request POST \
--url 'https://clarus-api.com/graphql#ListTransactions' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"query": "query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }"
}
'import requests
url = "https://clarus-api.com/graphql#ListTransactions"
payload = { "query": "query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }" }
headers = {
"Authorization": "Bearer <token>",
"X-Clarus-Subdomain": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'X-Clarus-Subdomain': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
query: 'query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }'
})
};
fetch('https://clarus-api.com/graphql#ListTransactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"transactions": {
"all": {
"edges": [
{
"node": {
"id": "904512",
"subtype": "PICK",
"category": "PICK",
"quantity": 24,
"created_at": "2026-06-15T14:32:08Z",
"product": {
"id": "1024",
"code": "WIDGET-RED-500"
},
"account": {
"id": "7",
"code": "ACME"
},
"location_from": {
"id": "318",
"code": "AISLE-04-BAY-12"
},
"location_to": {
"id": "990",
"code": "PACK-STATION-02"
},
"completing_user": {
"id": "210"
}
}
}
]
}
}
}
}{
"error": "<string>"
}Query Structure
query($filter: TransactionFilterType) {
transactions {
all(filter: $filter) {
edges {
node {
id
subtype
category
quantity
created_at
product {
id
code
}
account {
id
code
}
location_from {
id
code
}
location_to {
id
code
}
completing_user {
id
}
}
}
}
}
}
Filter Argument
All filters are passed inside thefilter argument. Each filter field accepts an input object with operators (e.g. eq, ilike, from, to, between):
{
"filter": {
"subtype": {
"eq": "value"
}
}
}
Available Filters
| Filter | Input Type | Operators | Description |
|---|---|---|---|
subtype | SubtypeTypeInputType | eq, in | Transaction subtype (enum input — e.g. PICK, RCV, TRAN) |
category | StringInputType | eq, ilike, like, in, between | Transaction category |
product_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Product ID |
account_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Stock account ID (stock owner) |
warehouse_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Warehouse ID |
created_at | DatetimeInputType | eq, from, to, between | Creation timestamp |
goods_out_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Related goods out ID |
location_from_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Source location ID |
location_to_id | IdInputType | eq, in, gt, gteq, lt, lteq, filled | Destination location ID |
all field also accepts an optional include_archived: Boolean argument to include archived transactions.
More fields and filters available via GraphQL introspection.Authorizations
OAuth 2.0 authentication. Use the client credentials or authorization code flow to obtain an access token.
FlowAuthorization Code
- Authorization URL
- https://clarus-api.com/oauth/authorize
- Token URL
- https://clarus-api.com/oauth/token
FlowClient Credentials
- Token URL
- https://clarus-api.com/oauth/token
The subdomain/tenant name identifying which tenant's data to access. Required for all API requests.
Body
application/json
GraphQL query string
Example:
"query($filter: TransactionFilterType) { transactions { all(filter: $filter) { edges { node { id subtype category quantity created_at product { id code } account { id code } location_from { id code } location_to { id code } completing_user { id } } } } } }"
Query variables including the filter object
Show child attributes
Show child attributes
Example:
{ "filter": { "subtype": { "eq": "PICK" } } }

