# Search landed cost items

Operation ID: `searchLandedCostItems`

Group: Inventory › Landed Cost Items

[Open in the interactive reference](https://docs.api.lensing.ai/lensing/v1/endpoints/searchLandedCostItems)

`POST /inventory/landed-cost-items/search`

Read-only: A read that takes its filters in the body. Changes nothing, and ignores Idempotency-Key.

Searches landed cost items, with the names of their items, accounts, and costing element types.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `Api-Version` | header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version `v1`. |

## Request body

Required, `application/json`: searchLandedCostItemsInput.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `filters` | object | yes | The filters to apply. A landed cost item must match every filter you send. Send an empty object to return all landed cost items. Example: `{"allocationMode":"Weight","active":true}`. |
| `filters.itemId` | string | no | Limits results to landed cost items for the item with this unique identifier. Format: UUID. See `id` on GET inventory/items/:id (getItem). |
| `filters.accountId` | string | no | Limits results to landed cost items for the general ledger account with this unique identifier. Format: UUID. See `id` on GET accounting/accounts/:id (getAccount). |
| `filters.allocationMode` | string | no | Limits results to landed cost items with this allocation mode. Accepted values: 'Equal', 'Quantity', 'LineTotal', 'Weight', 'Volume'. |
| `filters.costingElementTypeId` | string | no | Limits results to landed cost items for the costing element type with this unique identifier. Format: UUID. |
| `filters.active` | boolean | no | Limits results to active landed cost items when true, and to inactive landed cost items when false. |
| `filters.modifiedSince` | date-time | no | Limits results to landed cost items whose `lastModifiedDate` is on or after this time. Format: YYYY-MM-DDTHH:mm:ss.sssZ. |
| `page` | object | no | The page to return and its size. Omit to get the first page at the default size. Example: `{"size":50}`. |
| `page.cursor` | string | no | The cursor from the previous response's `pagination.nextCursor`. Send it exactly as you received it. Omit on the first request. |
| `page.size` | number | no | The number of landed cost items per page, from 1 to 200. Defaults to 50. A value above 200 is treated as 200, not rejected. |

```json
{
  "filters": {
    "allocationMode": "Weight",
    "active": true
  },
  "page": {
    "size": 50
  }
}
```

## Response

`200` Success

Under `data` (searchLandedCostItemsOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `items` | array<object> | yes | The matching landed cost items in this response. When more landed cost items match than fit in one response, use `pagination` to get the rest. Empty when nothing matches. Example: `[{"id":"9f3c71a4-2e58-4b06-8d19-5a7e0c34b2f1","itemId":"3d81e07c-95a2-4f63-b1c8-27e5a94d0b36","itemCode":"SVC-FREIGHT","itemName":"Inbound freight","allocationMode":"Weight","costingElementTypeId":"c4a90e21-7b35-4d18-9e02-6f13a85c7d40","costingElementTypeCode":"FRT","costingElementTypeName":"Freight","active":true,"createdDate":"2026-08-01T11:02:19.880Z","lastModifiedDate":"2026-08-18T09:14:22.517Z"}]`. |
| `items[].id` | string | yes | The unique identifier for the landed cost item. Format: UUID. |
| `items[].itemId` | string | no | The unique identifier of the item this landed cost item covers, such as a freight, handling, or insurance service item. Format: UUID. A vendor bill line for this item counts as a landed cost charge. Absent when the landed cost item covers only an account. See `id` on GET inventory/items/:id (getItem). |
| `items[].itemCode` | string | no | The code of the item in `itemId`. |
| `items[].itemName` | string | no | The name of the item in `itemId`. |
| `items[].accountId` | string | no | The unique identifier of the general ledger account this landed cost item covers. Format: UUID. A vendor bill line with this expense account counts as a landed cost charge. Absent when the landed cost item covers only an item. See `id` on GET accounting/accounts/:id (getAccount). |
| `items[].accountNumber` | string | no | The number of the account in `accountId`. |
| `items[].accountName` | string | no | The name of the account in `accountId`. |
| `items[].allocationMode` | string | no | How a charge is spread (allocated) over the receipt lines. Possible values: 'Equal', 'Quantity', 'LineTotal', 'Weight', 'Volume'. |
| `items[].costingElementTypeId` | string | no | The unique identifier of the costing element type for this landed cost item's charges. Format: UUID. A costing element type is a category of inventory cost, such as duties. When a landed cost is committed, its inventory revaluations for these charges get this costing element type. Absent when the landed cost item has none. |
| `items[].costingElementTypeCode` | string | no | The code of the costing element type in `costingElementTypeId`. |
| `items[].costingElementTypeName` | string | no | The name of the costing element type in `costingElementTypeId`. |
| `items[].active` | boolean | no | Whether the landed cost item is active. |
| `items[].createdDate` | date-time | no | The date and time the landed cost item was created, in UTC. Format: YYYY-MM-DDTHH:mm:ss.sssZ. |
| `items[].lastModifiedDate` | date-time | no | The date and time the landed cost item last changed, in UTC. Format: YYYY-MM-DDTHH:mm:ss.sssZ. |
| `pagination` | object | yes | Whether there are more results than are in this response, and the cursor you use to get the next ones. Example: `{"hasMore":false}`. |
| `pagination.nextCursor` | string | no | The cursor that marks where this response stopped. To get the next results, send it as `page.cursor` in your next request. Absent when there are no more results. |
| `pagination.hasMore` | boolean | no | Whether there are more results than are in this response. |

```json
{
  "data": {
    "items": [
      {
        "id": "9f3c71a4-2e58-4b06-8d19-5a7e0c34b2f1",
        "itemId": "3d81e07c-95a2-4f63-b1c8-27e5a94d0b36",
        "itemCode": "SVC-FREIGHT",
        "itemName": "Inbound freight",
        "allocationMode": "Weight",
        "costingElementTypeId": "c4a90e21-7b35-4d18-9e02-6f13a85c7d40",
        "costingElementTypeCode": "FRT",
        "costingElementTypeName": "Freight",
        "active": true,
        "createdDate": "2026-08-01T11:02:19.880Z",
        "lastModifiedDate": "2026-08-18T09:14:22.517Z"
      }
    ],
    "pagination": {
      "hasMore": false
    }
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}
```

## Statuses

- `400` — Invalid request or business failure
- `401` — The request carries no valid access token.
- `403` — Not authorized
- `404` — Not found
- `429` — Too many requests from this client address. The response has no body and no `Retry-After` header.
- `500` — Internal server error
