---
title: "List CDRs (cursor-paginated)"
method: GET
path: "/api/v1/cdrs"
tags: ["CDRs"]
---

# List CDRs (cursor-paginated)

`GET /api/v1/cdrs`

Returns a cursor-paginated page of Charge Detail Records (CDRs) for an operator. Use this endpoint to consume CDRs programmatically; for one-shot file delivery by email, use `POST /cdr-exports` instead.</br></br>*Pagination:*</br>- The response `meta.after` is an opaque token. Pass it as the `cursor` query parameter on the next request to fetch the next page.</br>- `meta.after` is `null` when there are no more pages.</br>- Page size defaults to 50 and is capped at 100.</br></br>*Notes:*</br>- The date range may not exceed 90 days.</br>- If `operatorId` is omitted, it is derived from the credentials. Consumers with access to multiple operators must specify it explicitly.</br></br>Required scope: `cdrs:read` </br>Organization authorization: `supported`

## Query parameters

- `operatorId` integer, nullable — The ID of the operator whose CDRs will be returned. If omitted, it is derived from the credentials. Consumers with access to multiple operators must specify it explicitly.
- `from` string, required — Start of the date range (inclusive), in `yyyy-MM-dd` format.
- `to` string, required — End of the date range (inclusive), in `yyyy-MM-dd` format. Must be on or after `from`, and the range may not exceed 90 days.
- `cursor` string, nullable — Opaque cursor for pagination. Pass the `meta.after` value from a previous response to fetch the next page. Omit on the first request.
- `limit` integer, nullable — Maximum number of CDRs per page. Defaults to 50 if omitted, capped at 100.

## Response `200`

A page of CDRs

- CursorBasedResponse
  - `data` Cdr[], required
    - `id` integer, required — Unique CDR identifier.
    - `operatorId` integer, required — ID of the operator that owns this CDR.
    - `chargeId` integer, required — ID of the charge session this CDR was generated from.
    - `chargeEndedAt` string, required — Timestamp (ISO-8601) when the charge ended.
    - `payload` object, required — Raw OCPI CDR payload as received from the roaming partner. Structure follows the OCPI CDR specification; treat as opaque.
  - `meta` CursorBasedPageMeta, required
    - `itemCount` integer, nullable — The number of items in the result
    - `perPage` integer — The requested maximum number of items returned
    - `after` string, nullable — A cursor to retrieve the next page of items in a new request
    - `before` string, nullable — A cursor to retrieve the previous page of items in a new request

## Other responses

- `400` — The request is invalid
- `401` — Consumer with provided credentials was not found
- `403` — Operator doesn't have access to resource
- `404` — Entity with the provided id was not found

---

[API](https://skmtc.net/monta/apis/monta-partner-api.md) · [All operations](https://skmtc.net/monta/apis/monta-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monta/monta-partner-api/revisions/517e18f11015/schema)
