# Retrieve a unit of measure group

Operation ID: `getUnitOfMeasureGroup`

Group: Inventory › Unit of Measure Groups

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

`GET /inventory/unit-of-measure-groups/{id}`

Read-only: Reads and returns; changes nothing.

Retrieves a unit of measure group. The response has the whole group: its name, its base unit, and every conversion line.

GET inventory/unit-of-measure-groups returns only the group's own fields, without the base unit or the lines. POST inventory/unit-of-measure-groups/search returns the whole group, like this endpoint.

## 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`. |
| `id` | path | string | yes | The unique identifier of the unit of measure group you want to retrieve. |

## Response

`200` Success

Under `data` (getUnitOfMeasureGroupOutput):

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | yes | The unique identifier for the unit of measure group. Example: `"2c7e5a91-6d38-4b04-8f72-1e9c03d5b846"`. |
| `name` | string | yes | The display name of the unit of measure group. Names are not unique. Example: `"Packaging"`. |
| `description` | string | no | A free-form description of what the group covers. Absent when none was given. Example: `"Eaches, boxes and pallets"`. |
| `baseUnitOfMeasureId` | string | no | The unique identifier for the base unit of measure that every conversion factor in the group is relative to. Absent when the group has no lines. See id on GET inventory/unit-of-measures/:id. Example: `"3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45"`. |
| `baseUnitCode` | string | no | The code of the base unit of measure. Absent when the group has no lines. Example: `"EA"`. |
| `lines` | array<object> | yes | The group's conversion lines, ordered by line id. An empty array when the group has none. Example: `[{"id":"9f1b60d4-27ac-4e53-b8f1-05d3e79a2c68","unitOfMeasureId":"3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45","unitCode":"EA","unitName":"Each","conversionFactor":"1.00","isBaseUnit":true},{"id":"e04a83f5-91c6-4d27-a5b0-73f2e618d94c","unitOfMeasureId":"8c1f4a72-6b09-4d15-a3e7-40d2b6915cf8","unitCode":"BOX","unitName":"Box","conversionFactor":"12.00","isBaseUnit":false}]`. |
| `lines[].id` | string | yes | The unique identifier for the conversion line. This is what updateLines and deleteLines address on PATCH inventory/unit-of-measure-groups/:id, not the unit. |
| `lines[].unitOfMeasureId` | string | yes | The unique identifier for the unit of measure this line converts. See id on GET inventory/unit-of-measures/:id. |
| `lines[].unitCode` | string | yes | The code of that unit of measure. |
| `lines[].unitName` | string | yes | The display name of that unit of measure. |
| `lines[].conversionFactor` | decimal | yes | How many base units of measure make up one of this unit. It is always greater than zero, and 1 on the base unit's own line. |
| `lines[].isBaseUnit` | boolean | yes | Whether this line is for the group's own base unit of measure. Exactly one line has it, and its conversionFactor is 1. |
| `lastModifiedDate` | date-time | no | The date and time the unit of measure group or its conversion lines last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. Example: `"2026-05-12T09:30:00.000Z"`. |

```json
{
  "data": {
    "id": "2c7e5a91-6d38-4b04-8f72-1e9c03d5b846",
    "name": "Packaging",
    "description": "Eaches, boxes and pallets",
    "baseUnitOfMeasureId": "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45",
    "baseUnitCode": "EA",
    "lines": [
      {
        "id": "9f1b60d4-27ac-4e53-b8f1-05d3e79a2c68",
        "unitOfMeasureId": "3b7d5e9c-1a24-4f80-9c6d-2e8f70b13a45",
        "unitCode": "EA",
        "unitName": "Each",
        "conversionFactor": "1.00",
        "isBaseUnit": true
      },
      {
        "id": "e04a83f5-91c6-4d27-a5b0-73f2e618d94c",
        "unitOfMeasureId": "8c1f4a72-6b09-4d15-a3e7-40d2b6915cf8",
        "unitCode": "BOX",
        "unitName": "Box",
        "conversionFactor": "12.00",
        "isBaseUnit": false
      }
    ],
    "lastModifiedDate": "2026-05-12T09:30:00.000Z"
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}
```

## Errors

| Code | Status |
| --- | --- |
| `NOT_FOUND` | 400 |

## Statuses

- `400` — Invalid request or business failure. Codes: NOT_FOUND
- `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
