---
updatedAt: 2026-08-18T22:05:20.000Z
agentTools:
  projectIndex: https://developer.warehance.com/llms.txt
---

# List Kit Assembly Tasks

**Required permission:** `read_kit_assembly_tasks`

Returns a paginated list of kit assembly tasks for the organization. Supports filtering by client, warehouse, kit product, assigned user, status, and priority, as well as a completed-at date range and free-text search on the reference number and status.

All filter parameters are optional. When no filters are provided, all kit assembly tasks accessible to the API key are returned. Client-level API keys are automatically scoped to their client; organization-level API keys may optionally scope results to a single client they own via `client_id`.

This endpoint uses cursor-based pagination. Use the `next_cursor` value from a response in the `cursor` parameter of the next request to fetch the following page; `has_next_page` indicates whether more results remain. For performance, this endpoint does not return total or filtered result counts.

**Example use cases:**
- Get all kit assembly tasks: `GET /kit-assembly-tasks`
- Get tasks still needing assembly: `GET /kit-assembly-tasks?statuses=unstaged,picking,staged`
- Get tasks for a client: `GET /kit-assembly-tasks?client_id=123`
- Get tasks for a kit product: `GET /kit-assembly-tasks?kit_product_id=456`
- Find a task by reference: `GET /kit-assembly-tasks?search_value=REF-1001`


# OpenAPI definition

````json
{
  "openapi": "3.0.0",
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "info": {
    "title": "Warehance API",
    "version": "1.0.0",
    "description": "The Warehance API provides programmatic access to Warehance's inventory, order, and shipment management services. It is designed for small to medium-sized brands and 3PLs, enabling robust automations, comprehensive order management, inventory management suites, batch shipping, zone picking, carrier connection integrations, and dynamic rate shopping. The API supports integration with various marketplaces and carriers, allowing seamless scaling of warehouse operations across multiple locations.\n\n## Authentication\n\nTo securely interact with the Warehance API, you must authenticate your requests using an API Key. Below are the steps and guidelines to properly authenticate your API requests.\n\n### 1. Obtaining an API Key\n\n1. **Log in to Warehance:**\n    - Navigate to [Warehance](https://app.warehance.com/) and log in with your credentials.\n\n2. **Navigate to API Settings:**\n    - Once logged in, go to the **Settings** section located in the sidebar.\n\n3. **Generate API Key:**\n    - In the **API Keys** subsection, click on **Generate New API Key**.\n    - Provide a meaningful name for the API Key to identify its usage (e.g., \"Production Key\" or \"Development Key\").\n    - Click **Generate** to create the API Key.\n\n4. **Store API Key Securely:**\n    - **Important:** Copy the generated API Key and store it in a secure location. This key will not be shown again for security reasons.\n    - **Do not** expose your API Key in client-side code, public repositories, or any unsecured environment.\n\n### 2. Including the API Key in Requests\n\nAll API requests must include the API Key in the request headers to authenticate and authorize access.\n\n- **Header Name:** `X-API-KEY`\n- **Header Value:** Your unique API Key\n\n**Example Request:**\n\n```http\nGET /orders HTTP/1.1\nHost: api.warehance.com\nX-API-KEY: your_api_key_here\n```\n\n## Pagination\n\nList endpoints use cursor pagination.\n\n1. Request the first page with your filters and an optional `limit` (1–100, default 25). Don't send `cursor`.\n2. If the response has `has_next_page: true`, request the next page with `cursor` set to the response's `next_cursor`. Keep the same filters, `sort_by` and `order_by`.\n3. Repeat until `has_next_page` is `false`.\n\n**Example:**\n\n```http\nGET /v1/orders?limit=100&updated_at_min=2026-10-01T00:00:00Z\nGET /v1/orders?limit=100&updated_at_min=2026-10-01T00:00:00Z&cursor=eyJzb3J0cyI6...\n```\n\n**Deprecated:** the `offset` parameter and the `total_count` and `filtered_count` response fields will be removed on **November 9, 2026**. Use `cursor` to page through results and `has_next_page` to tell whether more results exist.\n\n## OpenAPI Specification\n\nThe complete OpenAPI specification for this API is available in both YAML and JSON formats. You can access these programmatically for use with API clients, code generators, and other tools.\n\n### Available Formats\n\n- **YAML Format:** [https://api.warehance.com/v1/openapi.yaml](https://api.warehance.com/v1/openapi.yaml)\n- **JSON Format:** [https://api.warehance.com/v1/openapi.json](https://api.warehance.com/v1/openapi.json)\n\n### Usage Examples\n\n**Import into Postman:**\n1. Open Postman and click **Import**\n2. Select **Link** and paste: `https://api.warehance.com/v1/openapi.yaml`\n3. Click **Continue** to import the collection\n\n**Generate Client Code:**\n```bash\n# Using OpenAPI Generator\nopenapi-generator-cli generate \\\n  -i https://api.warehance.com/v1/openapi.yaml \\\n  -g python \\\n  -o ./warehance-client\n\n# Using Swagger Codegen\nswagger-codegen generate \\\n  -i https://api.warehance.com/v1/openapi.json \\\n  -l javascript \\\n  -o ./warehance-js-client\n```\n\n**View in Swagger UI:**\nVisit [Swagger Editor](https://editor.swagger.io/) and import the specification URL to explore the API interactively.\n\nThese endpoints are publicly accessible and do not require authentication.\n"
  },
  "servers": [
    {
      "url": "https://api.warehance.com/v1"
    }
  ],
  "security": [
    {
      "APIKEYAuthentication": []
    }
  ],
  "tags": [
    {
      "name": "Kit Assembly Tasks",
      "description": "Operations related to kit assembly tasks"
    }
  ],
  "paths": {
    "/kit-assembly-tasks": {
      "get": {
        "tags": [
          "Kit Assembly Tasks"
        ],
        "security": [
          {
            "APIKEYAuthentication": []
          }
        ],
        "summary": "List Kit Assembly Tasks",
        "description": "**Required permission:** `read_kit_assembly_tasks`\n\nReturns a paginated list of kit assembly tasks for the organization. Supports filtering by client, warehouse, kit product, assigned user, status, and priority, as well as a completed-at date range and free-text search on the reference number and status.\n\nAll filter parameters are optional. When no filters are provided, all kit assembly tasks accessible to the API key are returned. Client-level API keys are automatically scoped to their client; organization-level API keys may optionally scope results to a single client they own via `client_id`.\n\nThis endpoint uses cursor-based pagination. Use the `next_cursor` value from a response in the `cursor` parameter of the next request to fetch the following page; `has_next_page` indicates whether more results remain. For performance, this endpoint does not return total or filtered result counts.\n\n**Example use cases:**\n- Get all kit assembly tasks: `GET /kit-assembly-tasks`\n- Get tasks still needing assembly: `GET /kit-assembly-tasks?statuses=unstaged,picking,staged`\n- Get tasks for a client: `GET /kit-assembly-tasks?client_id=123`\n- Get tasks for a kit product: `GET /kit-assembly-tasks?kit_product_id=456`\n- Find a task by reference: `GET /kit-assembly-tasks?search_value=REF-1001`\n",
        "operationId": "listKitAssemblyTasks",
        "parameters": [
          {
            "in": "query",
            "name": "client_id",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": false,
            "description": "Only applicable for organizations. Filters items by the specified client_id, provided the client_id belongs to the organization. Note: API keys can belong to either client level or organization level.\n"
          },
          {
            "in": "query",
            "name": "warehouse_id",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": false,
            "description": "Filter by warehouse ID. Only returns kit assembly tasks assigned to the specified warehouse.\n"
          },
          {
            "in": "query",
            "name": "kit_product_id",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": false,
            "description": "Filter by kit product ID. Only returns kit assembly tasks whose kit product matches the specified product.\n"
          },
          {
            "in": "query",
            "name": "assigned_user_id",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": false,
            "description": "Filter by the ID of the user the task is assigned to.\n"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "unstaged",
                "picking",
                "staged",
                "completed",
                "cancelled"
              ]
            },
            "required": false,
            "description": "Filter by a single task status. Cannot be combined with `statuses`.\n"
          },
          {
            "in": "query",
            "name": "statuses",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Filter by multiple statuses at once, as a non-empty comma-separated list (e.g. `unstaged,picking,staged`). Each value must be one of `unstaged`, `picking`, `staged`, `completed`, or `cancelled`. Cannot be combined with `status`.\n"
          },
          {
            "in": "query",
            "name": "priority",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 3
            },
            "required": false,
            "description": "Filter by a single priority level (1 = Low, 2 = Medium, 3 = High). Cannot be combined with `priorities`.\n"
          },
          {
            "in": "query",
            "name": "priorities",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "Filter by multiple priority levels at once, as a non-empty comma-separated list of integers between 1 and 3 (e.g. `2,3`). Cannot be combined with `priority`.\n"
          },
          {
            "in": "query",
            "name": "completed_at_start",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": false,
            "description": "Only return tasks completed at or after this timestamp (ISO 8601).\n"
          },
          {
            "in": "query",
            "name": "completed_at_end",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": false,
            "description": "Only return tasks completed at or before this timestamp (ISO 8601).\n"
          },
          {
            "in": "query",
            "name": "sort_by",
            "schema": {
              "type": "string",
              "enum": [
                "created_at",
                "updated_at"
              ]
            },
            "required": false,
            "description": "Specifies the field by which to sort the results:\n* `created_at`: Sort by when the kit assembly task was created.\n* `updated_at`: Sort by when the kit assembly task was last updated.\n"
          },
          {
            "in": "query",
            "name": "search_value",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "A value to search for within the items. The specific fields searched depend on the endpoint.\n"
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 25
            },
            "required": false,
            "description": "The maximum number of items to return in the response. Used for pagination. Must be between 1 and 100.\n"
          },
          {
            "in": "query",
            "name": "cursor",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "A cursor for pagination. Omit it for the first page, then pass the `next_cursor` value from the previous response to fetch the next page. Keep the same filters and sort on every page. See [Pagination](#section/Pagination).\n"
          },
          {
            "in": "query",
            "name": "order_by",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ],
              "default": "asc"
            },
            "required": false,
            "description": "Specifies the sort direction of the returned items:\n  * `asc`: Ascending order. For dates, this means from oldest to newest. For numbers, this means from smallest to largest.\n  * `desc`: Descending order. For dates, this means from newest to oldest. For numbers, this means from largest to smallest.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "A list of kit assembly tasks",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "allOf": [
                        {
                          "type": "object",
                          "properties": {
                            "status": {
                              "type": "string",
                              "example": "success",
                              "description": "Indicates the status of the request:\n* `success`: The request was processed successfully without any issues.\n* `partial_success`: The request was partially processed, but some issues or errors occurred.\n* `error`: The request failed to process due to errors.\n"
                            },
                            "status_code": {
                              "type": "integer",
                              "example": 200,
                              "description": "The HTTP status code that indicates the outcome of the request:\n* `200`: The request was successful.\n* `400`: The request was malformed or contains invalid parameters.\n* `500`: An internal server error occurred while processing the request.\n"
                            },
                            "request_id": {
                              "type": "string",
                              "example": "7c82b8fc-a963-40f9-b7ee-f5565949ab15",
                              "description": "A unique identifier for the request, used for tracking and troubleshooting purposes.\n"
                            },
                            "data": {
                              "type": "object",
                              "description": "Contains the data related to the request.\n"
                            },
                            "errors": {
                              "type": "array",
                              "description": "A list of error objects providing details about any errors that occurred during the request.\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "code": {
                                    "type": "string",
                                    "example": "INVALID_REQUEST_FIELD",
                                    "description": "A code representing the type of error. The possible values are:\n* `INVALID_API_KEY`: The provided API key is invalid.\n* `RATE_LIMIT_EXCEEDED`: The rate limit for requests has been exceeded.\n* `INTERNAL_ERROR`: An internal server error occurred.\n* `PERMISSION_DENIED`: The request is denied due to insufficient permissions.\n* `INVALID_REQUEST_FIELD`: The request contains invalid fields.\n"
                                  },
                                  "message": {
                                    "type": "string",
                                    "example": "order_by must be one of [asc desc]",
                                    "description": "A message providing details about the error.\n"
                                  },
                                  "suggestion": {
                                    "type": "string",
                                    "example": "Ensure that all fields are a valid type, required fields are present, and values are within the correct range",
                                    "description": "A suggestion on how to resolve the error.\n"
                                  },
                                  "documentation_url": {
                                    "type": "string",
                                    "nullable": true,
                                    "example": null,
                                    "description": "A URL pointing to the documentation that provides more details about the error.\n"
                                  }
                                }
                              }
                            }
                          }
                        },
                        {
                          "type": "object",
                          "properties": {
                            "status": {
                              "example": "success"
                            },
                            "status_code": {
                              "example": 200
                            },
                            "errors": {
                              "example": null
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "kit_assembly_tasks": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "example": 1,
                                    "description": "A unique identifier for the kit assembly task."
                                  },
                                  "reference_number": {
                                    "type": "string",
                                    "nullable": true,
                                    "example": "REF-1001",
                                    "description": "An optional reference number for the task."
                                  },
                                  "status": {
                                    "type": "string",
                                    "example": "unstaged",
                                    "description": "The current status of the task (`unstaged`, `picking`, `staged`, `completed`, or `cancelled`)."
                                  },
                                  "quantity": {
                                    "type": "integer",
                                    "example": 200,
                                    "description": "The number of kits to assemble."
                                  },
                                  "quantity_assembled": {
                                    "type": "integer",
                                    "example": 50,
                                    "description": "The number of kits assembled so far."
                                  },
                                  "priority": {
                                    "type": "integer",
                                    "nullable": true,
                                    "example": 2,
                                    "description": "The task priority (1 = Low, 2 = Medium, 3 = High)."
                                  },
                                  "due_date": {
                                    "type": "string",
                                    "format": "date-time",
                                    "nullable": true,
                                    "example": "2026-08-01T00:00:00Z",
                                    "description": "The optional due date for the task."
                                  },
                                  "client": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 12,
                                        "description": "A unique identifier for the client that owns the task."
                                      }
                                    },
                                    "description": "The client this task belongs to."
                                  },
                                  "kit_product": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 456,
                                        "description": "A unique identifier for the kit product."
                                      },
                                      "name": {
                                        "type": "string",
                                        "example": "Deluxe Bundle",
                                        "description": "The name of the kit product."
                                      },
                                      "sku": {
                                        "type": "string",
                                        "example": "KIT-001",
                                        "description": "The SKU of the kit product."
                                      }
                                    },
                                    "description": "The kit product this task assembles."
                                  },
                                  "warehouse": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 3,
                                        "description": "A unique identifier for the warehouse."
                                      },
                                      "name": {
                                        "type": "string",
                                        "example": "Main Warehouse",
                                        "description": "The name of the warehouse."
                                      }
                                    },
                                    "description": "The warehouse where the task is assembled."
                                  },
                                  "assigned_user": {
                                    "type": "object",
                                    "nullable": true,
                                    "properties": {
                                      "id": {
                                        "type": "integer",
                                        "example": 88,
                                        "description": "A unique identifier for the assigned user."
                                      },
                                      "first_name": {
                                        "type": "string",
                                        "example": "Sean",
                                        "description": "The first name of the assigned user."
                                      },
                                      "last_name": {
                                        "type": "string",
                                        "example": "Smith",
                                        "description": "The last name of the assigned user."
                                      }
                                    },
                                    "description": "The user the task is assigned to, if any."
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "The task's tags. Returns an empty array when there are no tags.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "2.4x4",
                                      "PRINT-ON-DEMAND",
                                      "ODF-812"
                                    ]
                                  },
                                  "completed": {
                                    "type": "boolean",
                                    "example": false,
                                    "description": "Whether the task has been completed."
                                  },
                                  "completed_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "nullable": true,
                                    "example": "2026-04-05T18:00:00Z",
                                    "description": "When the task was completed, if it has been."
                                  },
                                  "cancelled": {
                                    "type": "boolean",
                                    "example": false,
                                    "description": "Whether the task has been cancelled."
                                  },
                                  "cancelled_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "nullable": true,
                                    "example": null,
                                    "description": "When the task was cancelled, if it has been."
                                  },
                                  "created_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "example": "2026-04-01T00:00:00Z",
                                    "description": "When the task was created."
                                  },
                                  "updated_at": {
                                    "type": "string",
                                    "format": "date-time",
                                    "example": "2026-04-01T12:00:00Z",
                                    "description": "When the task was last updated."
                                  }
                                }
                              }
                            },
                            "next_cursor": {
                              "type": "string",
                              "example": "eyJpZCI6MTIzNDU2Nzg5MH0=",
                              "description": "A cursor for fetching the next page of results. Use this value in the `cursor` parameter for the next request. This is an empty string when there are no more results.\n"
                            },
                            "has_next_page": {
                              "type": "boolean",
                              "example": true,
                              "description": "Indicates whether there are more results available. When `true`, use the `next_cursor` value to fetch the next page.\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request — invalid parameter values",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "example": "success",
                          "description": "Indicates the status of the request:\n* `success`: The request was processed successfully without any issues.\n* `partial_success`: The request was partially processed, but some issues or errors occurred.\n* `error`: The request failed to process due to errors.\n"
                        },
                        "status_code": {
                          "type": "integer",
                          "example": 200,
                          "description": "The HTTP status code that indicates the outcome of the request:\n* `200`: The request was successful.\n* `400`: The request was malformed or contains invalid parameters.\n* `500`: An internal server error occurred while processing the request.\n"
                        },
                        "request_id": {
                          "type": "string",
                          "example": "7c82b8fc-a963-40f9-b7ee-f5565949ab15",
                          "description": "A unique identifier for the request, used for tracking and troubleshooting purposes.\n"
                        },
                        "data": {
                          "type": "object",
                          "description": "Contains the data related to the request.\n"
                        },
                        "errors": {
                          "type": "array",
                          "description": "A list of error objects providing details about any errors that occurred during the request.\n",
                          "items": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "INVALID_REQUEST_FIELD",
                                "description": "A code representing the type of error. The possible values are:\n* `INVALID_API_KEY`: The provided API key is invalid.\n* `RATE_LIMIT_EXCEEDED`: The rate limit for requests has been exceeded.\n* `INTERNAL_ERROR`: An internal server error occurred.\n* `PERMISSION_DENIED`: The request is denied due to insufficient permissions.\n* `INVALID_REQUEST_FIELD`: The request contains invalid fields.\n"
                              },
                              "message": {
                                "type": "string",
                                "example": "order_by must be one of [asc desc]",
                                "description": "A message providing details about the error.\n"
                              },
                              "suggestion": {
                                "type": "string",
                                "example": "Ensure that all fields are a valid type, required fields are present, and values are within the correct range",
                                "description": "A suggestion on how to resolve the error.\n"
                              },
                              "documentation_url": {
                                "type": "string",
                                "nullable": true,
                                "example": null,
                                "description": "A URL pointing to the documentation that provides more details about the error.\n"
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "example": "error"
                        },
                        "status_code": {
                          "example": 400
                        },
                        "data": {
                          "example": null
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "APIKEYAuthentication": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY",
        "description": "The API KEY is used to authenticate requests to the Warehance API. It is a unique key generated in the Warehance dashboard under the settings section. Ensure that your API KEY is kept secure and not exposed in client-side code or public repositories.\n"
      }
    }
  }
}
````