curl --request POST \
--url 'https://clarus-api.com/graphql#ListTasks' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"query": "query($filter: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }"
}
'import requests
url = "https://clarus-api.com/graphql#ListTasks"
payload = { "query": "query($filter: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }" }
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: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }'
})
};
fetch('https://clarus-api.com/graphql#ListTasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"tasks": {
"all": {
"edges": [
{
"node": {
"id": "1",
"status": "AVAILABLE",
"subtype": "standard",
"start_quantity": 10,
"confirmed_quantity": null,
"created_at": "2026-03-10T08:00:00Z",
"account": {
"id": "1",
"code": "ACME"
},
"warehouse": {
"id": "1",
"code": "WH1"
},
"product": {
"id": "1024",
"code": "WIDGET-RED-500"
},
"task_type": {
"id": "3",
"code": "PICK"
},
"location_from": {
"id": "318",
"code": "AISLE-04-BAY-12"
},
"location_to": {
"id": "990",
"code": "PACK-STATION-02"
}
}
}
]
}
}
}
}{
"error": "<string>"
}List tasks
Retrieve warehouse tasks using GraphQL. Supports filtering by status, subtype, task type, account, warehouse, product, location, user, and more. Tasks represent units of work such as picking, putaway, receiving, dispatch, and replenishment.
curl --request POST \
--url 'https://clarus-api.com/graphql#ListTasks' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"query": "query($filter: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }"
}
'import requests
url = "https://clarus-api.com/graphql#ListTasks"
payload = { "query": "query($filter: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }" }
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: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }'
})
};
fetch('https://clarus-api.com/graphql#ListTasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"tasks": {
"all": {
"edges": [
{
"node": {
"id": "1",
"status": "AVAILABLE",
"subtype": "standard",
"start_quantity": 10,
"confirmed_quantity": null,
"created_at": "2026-03-10T08:00:00Z",
"account": {
"id": "1",
"code": "ACME"
},
"warehouse": {
"id": "1",
"code": "WH1"
},
"product": {
"id": "1024",
"code": "WIDGET-RED-500"
},
"task_type": {
"id": "3",
"code": "PICK"
},
"location_from": {
"id": "318",
"code": "AISLE-04-BAY-12"
},
"location_to": {
"id": "990",
"code": "PACK-STATION-02"
}
}
}
]
}
}
}
}{
"error": "<string>"
}Query Structure
query($filter: TaskFilterType) {
tasks {
all(filter: $filter) {
edges {
node {
id
status
subtype
start_quantity
confirmed_quantity
created_at
account {
id
code
}
warehouse {
id
code
}
product {
id
code
}
task_type {
id
code
}
location_from {
id
code
}
location_to {
id
code
}
}
}
}
}
}
Filter Argument
All filters are passed inside thefilter argument. Each filter field accepts an input object with operators:
{
"filter": {
"status": {
"eq": "AVAILABLE"
},
"task_type_code": {
"eq": "PICK"
}
}
}
Available Filters
| Filter | Input Type | Operators | Description |
|---|---|---|---|
status | StringInputType | eq, ilike, like, in, between | Task status (e.g., AVAILABLE, ALLOCATED, COMPLETED) |
subtype | StringInputType | eq, ilike, like, in, between | Task subtype |
task_type_code | StringInputType | eq, ilike, like, in, between | Task type code (PICK, DISP, RCV, PWAY, TRAN, REPLEN, LOAD, CONV) |
account_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by account ID |
warehouse_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by warehouse ID |
product_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by product ID |
location_from_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by source location ID |
location_to_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by destination location ID |
user_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by assigned user ID |
goods_out_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by goods out order ID |
goods_in_receipt_line_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by goods in receipt line ID |
storage_unit_from_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by source storage unit ID |
load_id | IdInputType | eq, gt, gteq, lt, lteq, in, filled | Filter by load ID |
assigned_at | DatetimeInputType | eq, from, to, between | Filter by assignment date |
completed_at | DatetimeInputType | eq, from, to, between | Filter by completion date |
created_at | DatetimeInputType | eq, from, to, between | Filter by creation date |
priority | IntegerInputType | eq, gt, gteq, lt, lteq, between | Filter by priority |
drop_sequence | IntegerInputType | eq, gt, gteq, lt, lteq, between | Filter by drop sequence |
Filter Operators
| Input Type | Operators |
|---|---|
| StringInputType | eq (exact), ilike (case-insensitive partial), like (case-sensitive partial), in (array match), between (range) |
| IntegerInputType | eq, gt, gteq, lt, lteq, between |
| DatetimeInputType | eq, from, to, between |
| BooleanInputType | eq (required) |
| IdInputType | eq, gt, gteq, lt, lteq, in, filled |
Authorizations
OAuth 2.0 authentication. Use the client credentials or authorization code flow to obtain an access token.
The subdomain/tenant name identifying which tenant's data to access. Required for all API requests.
Body
GraphQL query string
"query($filter: TaskFilterType) { tasks { all(filter: $filter) { edges { node { id status subtype start_quantity confirmed_quantity created_at account { id code } warehouse { id code } product { id code } task_type { id code } location_from { id code } location_to { id code } } } } } }"
Query variables including the filter object
Show child attributes
Show child attributes
{
"filter": {
"status": { "eq": "AVAILABLE" },
"task_type_code": { "eq": "PICK" }
}
}

