What you’ll learn
The pick list endpoints let an ERP, MES, or tool management system create, read, update, and delete predefined pick lists in CRIBWISE. This article lists all five endpoints, every field in the schema, and how to check whether a queued write actually succeeded.
A pick list names a job, lists the items it needs, and states how many of each to pick. Operators then pick against it on the Shop Floor Interface instead of relying on their own knowledge of the job.
The sending system authenticates once, then calls the pick list endpoints. Only Get and GetRequestResult return data.
The pick list endpoints at a glance
| Method | Endpoint | What it does | Answers with |
|---|---|---|---|
| GET | {url}/ERP/PickList/Get |
Returns every pick list in the system. | The pick lists themselves. |
| POST | {url}/ERP/PickList/Create |
Creates new pick lists. | A request GUID. |
| POST | {url}/ERP/PickList/Update |
Updates existing pick lists. | A request GUID. |
| POST | {url}/ERP/PickList/Delete |
Deletes existing pick lists. | A request GUID. |
| GET | {url}/ERP/PickList/GetRequestResult |
Reports what happened to a queued create, update, or delete. | A request status and a result object. |
{url} is the base address of your solution – the host your Admin Portal runs on, without the portal path. If you open the Admin Portal at https://solutionaddress.com/adminportal/yourcompany, then {url} is https://solutionaddress.com.
Before your first call
- An API key and an access token. Every call carries an
Authorization: Bearerheader. See How to authenticate with the REST API. - Pick lists switched on. Enable Enable predefined pick lists in System settings. Until it is on, pick lists do not appear on the Shop Floor Interface.
- Item IDs that already exist. Every item on a pick list is referenced by its item ID and is validated against the database. See How to manage items with the REST API.
- Cost allocation names, if you pre-fill them. Steps are referenced by step name and values by value name, so both must match the current cost allocation set. See How to manage cost allocation with the REST API.
Tip: Call
PickList/Getfirst. It returns the IDs, names, and statuses of the lists that already exist, which is the quickest way to see whether your integration should create a list or update one.
How a call works
Reads and writes behave differently, and the difference decides how your integration has to be built.
- Reads answer directly.
PickList/Getreturns the pick lists in the response body. - Writes are queued.
Create,Update, andDeleteanswer200with a request GUID and put the work in a task queue. The response tells you the request was accepted – nothing about whether it worked. - Results are collected separately. Pass the GUID to
PickList/GetRequestResultto find out whether the queued work succeeded and which pick lists it touched.
Important: Treat a
200fromCreate,Update, orDeleteas “queued”, not as “done”. Validation errors are reported in the request result and nowhere else, so an integration that stops at the200silently misses every one of them.
Request and object statuses
GetRequestResult reports two things: how far the request itself has got, and what happened to each pick list in it.
| Request status | What it means |
|---|---|
| Created | The request arrived but is not in the task queue yet. |
| Ready | The request is in the queue, waiting to run. |
| Running | The changes are being applied. |
| Completed | Every change in the request has finished. |
| Failed | The request could not be performed. |
The Result object then lists each pick list under the outcome it reached: CreatedPickLists, UpdatedPickLists, DeletedPickLists, or Errors. Validation errors are listed per object and name the parameter that was rejected.
Pick list fields
All three write endpoints reuse the schema that PickList/Get returns. Fields an endpoint does not accept are ignored rather than rejected.
| Field | Type | Required | What it does |
|---|---|---|---|
Id |
string, 50 | Yes | The unique ID of the pick list. Together with Name it identifies the list on update and delete. |
Name |
string, 100 | Yes | The name operators see on the Shop Floor Interface, such as Monday maintenance kit. |
CostAllocationSetId |
string, 50 | Only with more than one set | Which cost allocation set the pre-filled values belong to. With exactly one set in the system, CRIBWISE selects it for you. |
CostAllocations[].StepType |
string | Yes, within the array | The name of the cost allocation step. Must match a step in the set. |
CostAllocations[].Value |
string | Yes, within the array | The name of the value to pre-select for that step. Must exist in that step. |
Items[].Id |
string | Yes, within the array | The item ID to put on the list. The item must already exist in CRIBWISE. |
Items[].QuantityForPick |
number | Yes, within the array | How many units of that item to pick. Must be greater than zero. |
Users[] |
array of strings | No | The logins allowed to see the list. Leave it out and every user sees it. |
UserGroups[] |
array of strings | No | The user groups allowed to see the list. Leave it out and every group sees it. |
AllowChangeQuantity |
boolean | Yes | true lets the operator change the quantity while picking. false locks it. Shown as Allow change quantity in the Admin Portal. |
FixedQuantities |
boolean | Yes | true keeps the list available after everything on it has been picked, so it can be reused. false closes the list once it is fully picked. Shown as Fixed quantity in the Admin Portal. |
TargetDate |
date and time | No | An informational date shown on the Shop Floor Interface. It does not close the list. |
DeviceId |
string | No | Restricts the list to one storage device. Leave it out and the list appears on all devices. Part of Availability in the Admin Portal, together with users and groups. |
Status |
string | Read only | Active, Invalid, or Closed. Returned by Get; ignored on write. |
Pick list statuses
| Status | What it means |
|---|---|
| Active | The list is usable and appears on the Shop Floor Interface for the users, groups, and device it allows. |
| Invalid | A change to the items or to the cost allocation structure has left the list unusable. Get still returns it. |
| Closed | Everything on the list has been picked and FixedQuantities was false, so the list is finished. |
Note:
FixedQuantitiesis not about locking quantities. It controls whether the list survives being fully picked. The field that stops an operator changing a quantity isAllowChangeQuantity.
Endpoint reference
PickList/Get
GET {url}/ERP/PickList/Get
Returns every pick list currently in the system, including lists whose status is Invalid or Closed. Use it to reconcile your own job data with what CRIBWISE holds.
Response
[
{
"Id": "string",
"Name": "string",
"CostAllocationSetId": "string",
"CostAllocations": [
{ "StepType": "string", "Value": "string" }
],
"Items": [
{ "Id": "string", "QuantityForPick": 0 }
],
"Users": [ "string" ],
"UserGroups": [ "string" ],
"AllowChangeQuantity": true,
"FixedQuantities": true,
"TargetDate": "2026-09-01T09:58:01.950Z",
"DeviceId": "string",
"Status": "Active"
}
]
PickList/Create
POST {url}/ERP/PickList/Create
Creates one or more pick lists. Send an array, even for a single list. Id and Name must be unique. Every item needs a quantity, and every item ID must already exist in CRIBWISE.
Pre-filled cost allocation is optional. Leave CostAllocations out to let the operator choose on the Shop Floor Interface, or set it to book every pick against the same machine, project, or operation.
Request body
[
{
"Id": "PL-1042",
"Name": "Engine block 123",
"CostAllocationSetId": "CA-SET-1",
"CostAllocations": [
{ "StepType": "Machine", "Value": "CNC-04" },
{ "StepType": "Project", "Value": "Engine block 123" }
],
"Items": [
{ "Id": "10001", "QuantityForPick": 4 },
{ "Id": "10002", "QuantityForPick": 2 }
],
"AllowChangeQuantity": true,
"FixedQuantities": true,
"TargetDate": "2026-09-01T09:58:01.950Z"
}
]
The response carries the request GUID. Pass it to PickList/GetRequestResult to confirm the list was created.
PickList/Update
POST {url}/ERP/PickList/Update
Updates existing pick lists. The list is identified by Id and Name, which are the only two fields you must send. Anything you leave out stays as it is, so a partial payload is enough to change one setting.
Arrays are the exception. Items, CostAllocations, Users, and UserGroups are replaced by exactly what you send, not merged into what is there.
Request body – raise one quantity and leave everything else untouched:
[
{
"Id": "PL-1042",
"Name": "Engine block 123",
"Items": [
{ "Id": "10001", "QuantityForPick": 6 },
{ "Id": "10002", "QuantityForPick": 2 }
]
}
]
Warning: Sending an empty
Itemsarray clears every item from the list, and a pick list with no items does not appear on the Shop Floor Interface. Send the full item array whenever you touch it – including the items you are not changing.
PickList/Delete
POST {url}/ERP/PickList/Delete
Deletes existing pick lists. Id and Name are the only fields needed, and anything else you send is ignored.
Request body
[
{
"Id": "PL-1042",
"Name": "Engine block 123"
}
]
PickList/GetRequestResult
GET {url}/ERP/PickList/GetRequestResult?requestGuid={guid}
| Query parameter | Value |
|---|---|
requestGuid |
The GUID returned by the Create, Update, or Delete call. |
Reports the status of a queued request and lists what it did. Poll it until Status is Completed or Failed. Anything the request rejected appears in Errors, named per object and per parameter.
Response
{
"Message": "string",
"Status": "Completed",
"Result": {
"Errors": [ "string" ],
"CreatedPickLists": [ "string" ],
"UpdatedPickLists": [ "string" ],
"DeletedPickLists": [ "string" ]
}
}
Where the results appear
A pick list created through the API is an ordinary pick list. It appears in the Admin Portal under Data management > Pick lists, carrying the ID and name your integration sent and the status CRIBWISE gave it. The Statuses filter above the grid narrows the view to the same three values the Status field returns.
The pick list overview: (1) Data management, (2) Pick lists, (3) the ID and name your payload sent, (4) the value the Status field returns.
Open a list with View detail to see the schema fields as the Admin Portal shows them. It is the quickest way to check that a call landed the way you meant it to, and the Change history tab records every write.
The same fields from the Admin Portal side: (1) Status, read only, (2) Id, (3) Name, (4) TargetDate – beside Active till date, which the schema does not cover, (5) AllowChangeQuantity and FixedQuantities.
The same screen also creates lists by hand through New pick list, and the export/import function creates them in bulk. Reach for the API when the sending system owns the data and should keep owning it – a nightly ERP run, or an MES that builds one list per work order. Operators then pick against the result on the Shop Floor Interface, as described in How to pick items from a pick list on the Shop Floor Interface.
Common confusion
| People often think… | But actually… |
|---|---|
A 200 from Create means the pick list exists. |
It means the request was queued. The list exists only once GetRequestResult reports it under CreatedPickLists. |
| The request GUID goes in the body, or as a path segment. | It is a query parameter: GetRequestResult?requestGuid={guid}. Any other spelling answers 404. |
FixedQuantities stops the operator changing quantities. |
It makes the list reusable after it has been fully picked. AllowChangeQuantity is the field that locks quantities. |
A partial Update merges the items you send into the list. |
Arrays are replaced, not merged. Whatever you send in Items becomes the whole list. |
| The schema covers every pick list field in CRIBWISE. | Two fields are missing from it: Allow pick more than requested and Active till date. Both exist on the Admin Portal pick list form and in the export/import template, so set them there if your lists need them. |
Take action
Ready to build the integration? Create an API key and exchange it for a token in How to authenticate with the REST API, then call PickList/Get to see what is already in the system before you write anything.
Related articles
- CRIBWISE REST API – endpoint overview – every ERP REST endpoint, grouped by resource.
- How to authenticate with the REST API – how to create an API key and exchange it for a bearer token.
- Customer use case: pick lists for job-based picking – the four field combinations and what each one is for.
- How to create pick lists with the export/import function – the spreadsheet route, and the two fields the API schema does not cover.
- How to pick items from a pick list on the Shop Floor Interface – what the operator sees once your list is in.
- How to manage items with the REST API – the endpoints behind the item IDs a pick list references.
- How to manage cost allocation with the REST API – the step and value names a pick list pre-fills.


