Process picks asynchronously
curl --request POST \
--url https://clarus-api.com/api/goods_out_processes/process_picks_async \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"ids": [
1,
2,
3
]
}
'import requests
url = "https://clarus-api.com/api/goods_out_processes/process_picks_async"
payload = { "ids": [1, 2, 3] }
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({ids: [1, 2, 3]})
};
fetch('https://clarus-api.com/api/goods_out_processes/process_picks_async', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"process_references": [
"abc123def456"
]
}{
"error": "<string>"
}{
"errors": [
{
"code": 123,
"symbol": "<string>",
"details": "<string>",
"source": "<string>",
"context": {}
}
]
}Goods Out: Pick Lists
Process picks asynchronously
Queue goods out orders for asynchronous pick list generation. This is the preferred method for processing orders as it runs in the background without blocking. Each order gets its own pick list unless using the consolidation endpoint.
POST
/
api
/
goods_out_processes
/
process_picks_async
Process picks asynchronously
curl --request POST \
--url https://clarus-api.com/api/goods_out_processes/process_picks_async \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Clarus-Subdomain: <api-key>' \
--data '
{
"ids": [
1,
2,
3
]
}
'import requests
url = "https://clarus-api.com/api/goods_out_processes/process_picks_async"
payload = { "ids": [1, 2, 3] }
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({ids: [1, 2, 3]})
};
fetch('https://clarus-api.com/api/goods_out_processes/process_picks_async', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"process_references": [
"abc123def456"
]
}{
"error": "<string>"
}{
"errors": [
{
"code": 123,
"symbol": "<string>",
"details": "<string>",
"source": "<string>",
"context": {}
}
]
}Request Structure
{
"ids": [101, 102, 103]
}
Key Fields
| Field | Required | Description |
|---|---|---|
ids | Yes | Array of goods out order IDs to process |
Prerequisites
- Orders must be in PENDING or ALLOCATED status
- Account/warehouse permissions must allow pick processing
Behavior
- Returns process_references for tracking pick list generation
- Each order gets its own pick list (use
/process_and_consolidate_picksto merge) - Orders are grouped by warehouse
- Crossdock orders are processed separately from sales orders
- Pick type can be
standard(traditional picking) ortote(container-based batch picking)
Tracking Status
Poll for completion via GraphQL:query {
pickProcessingRequests(filter: { process_reference: { eq: "abc123def456" } }) {
edges {
node {
id
status
process_reference
message
created_at
updated_at
}
}
}
}
pending, completed, failed
Error Codes
| Code | Symbol | Description |
|---|---|---|
| 36 | empty_ids_provided | No order IDs provided |
| 37 | invalid_ids_provided | Some IDs do not exist |
| 39 | not_enough_stocks_for_picking | Insufficient stock available |
| 59 | goods_out_already_allocated | Order already processed |
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
Request body for asynchronous pick processing
Array of goods out order IDs to process
Minimum array length:
1Response
Pick processing queued successfully
Response containing process references for tracking pick processing status
Array of process reference strings for tracking the queued pick processing jobs via GraphQL

