# Units (individual batteries) of the active organisation

> `GET /batteries` · Scope: `read` · operationId `listBatteries`

Any member. Ordered by serial number, then id; filter by model, version, passport status,
serial number prefix or the import that created the units.

## Query parameters

- **limit** `integer` (default: 50): Maximum number of items to return.
- **cursor** `string`: Opaque cursor from a previous page's `next_cursor`.
- **battery_model_id** `string (uuid)`
- **model_version_id** `string (uuid)`
- **passport_status** `string` (one of: `draft`, `qr_locked`, `published`, `update_needed`, `suspended`, `withdrawn`, `deleted_recycled`): Status of a unit's passport (`docs/domain-model.md` §7).
- **serial_prefix** `string`
- **import_id** `string (uuid)`

## Responses

### 200 (`application/json`)

One page of units.

- **items** `Battery[]` (required)
  - **battery_model_id** `string (uuid)` (required)
  - **battery_status** `string` (required, one of: `original`, `repurposed`, `reused`, `remanufactured`, `waste`)
  - **created_at** `string (date-time)` (required)
  - **facility_id** `string (uuid)`
  - **id** `string (uuid)` (required)
  - **identifiers_locked_at** `string (date-time)`: Set when the identifiers were locked (pre-print) or first published; serial and model are fixed afterwards.
  - **import_id** `string (uuid)`: The import that created the unit.
  - **manufacturing_date** `string (date)`
  - **model_version_id** `string (uuid)` (required)
  - **passport_status** `string` (required, one of: `draft`, `qr_locked`, `published`, `update_needed`, `suspended`, `withdrawn`, `deleted_recycled`): Status of a unit's passport (`docs/domain-model.md` §7).
  - **predecessor_battery_id** `string (uuid)`: Second life: the unit this battery was repurposed, reused or remanufactured from.
  - **putting_into_service** `string (date)`
  - **row_version** `integer (int64)` (required): Optimistic-concurrency version; send it back as `If-Match` when updating.
  - **serial_number** `string` (required)
  - **successor_battery_ids** `string (uuid)[]`: Second life: the units made from this battery.
  - **updated_at** `string (date-time)` (required)
- **next_cursor** `string | null` (required): Cursor for the next page, or null when this is the last page.

### 400 (`application/problem+json`)

The request is malformed or failed validation (`validation_error`), or a token is invalid or expired (`invalid_token`).

### 401 (`application/problem+json`)

The API key is missing, unknown or revoked (`unauthenticated`).

### 403 (`application/problem+json`)

The API key may not perform this action (`forbidden`): it lacks the operation's scope, or the action needs more than a viewer's rights.

### default (`application/problem+json`)

Any other problem, e.g. `internal_error`.

## Example

```bash title="cURL"
curl -X GET "https://passport.kabin.sh/api/v1/batteries" \
  -H "Authorization: Bearer $BATTERYPASS_API_KEY"
```
