# List a room's past sessions

`GET https://api.morevoice.ai/v1/conference_rooms/{id}/history`

The room's recent sessions (up to 100), newest first, with their AI meeting notes. Each one is a call: fetch its recording and transcript through /v1/calls/{id}.

Authenticate with a secret API key: `Authorization: Bearer $MOREVOICE_API_KEY`.

Operation ID: `conference_rooms_list_sessions`.

## Parameters

### Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | yes | A conference room ID (`room_…`). |

### Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | `integer` | no | How many objects to return, 1–100 (default 20). |
| `starting_after` | `string` | no | A cursor (`next_cursor`) or object ID: return the objects after it (older). |
| `ending_before` | `string` | no | A cursor or object ID: return the objects before it (newer). |

### Headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `MoreVoice-Version` | `string` | no | The API version to use for this request. Defaults to the version the API key is pinned to. |

## Responses

### 200 OK

OK Returns `ConferenceSessionList`.

| Field | Type | Description |
| --- | --- | --- |
| `object` | `"list"` | — |
| `data` | `ConferenceSession[]` | — |
| `has_more` | `boolean` | Whether more objects follow in the requested direction. |
| `next_cursor` | `string \| null` | Pass as starting_after (or ending_before, when paging backwards) to continue; null on the last page. |
| `url` | `string` | The list's path. |

Example:

```json
{
  "data": [
    {
      "duration_ms": 1800000,
      "id": "call_8tRPaZp5hLMbrGqdJ9AmNa",
      "notes": {
        "action_items": [
          "Dana: send the deck"
        ],
        "decisions": [
          "Ship the pilot"
        ],
        "summary": "Agreed the Q4 targets."
      },
      "object": "conference_session",
      "participants": 4,
      "started_at": "2026-11-03T08:00:40.000Z",
      "status": "ended"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "object": "list",
  "url": "/v1/conference_rooms/room_2dXk9QmZ4rTv/history"
}
```

### 400 Bad Request

The request is invalid: a parameter is missing, malformed or unknown, or the version header is unknown. Returns `ErrorEnvelope`.

### 401 Unauthorized

No valid API key was sent. Returns `ErrorEnvelope`.

### 403 Forbidden

The key may not do this (a missing scope, a plan limit, or a compliance block). Returns `ErrorEnvelope`.

### 404 Not Found

No object with this ID exists in this organisation and mode. Returns `ErrorEnvelope`.

### 429 Too Many Requests

Too many requests, or no call capacity right now. Retry after the Retry-After delay. Returns `ErrorEnvelope`.

### 500 Internal Server Error

Something went wrong on MoreVoice's side. Retry with the same Idempotency-Key. Returns `ErrorEnvelope`.

## Code samples

**TypeScript**

```ts
import MoreVoice from "@morevoice/sdk";

const mv = new MoreVoice(); // MOREVOICE_API_KEY from the environment

for await (const conferenceRoom of mv.conferenceRooms.listSessions("room_7Hk2Lm9Qp")) {
	console.log(conferenceRoom);
}
```

**Python**

```python
from morevoice import MoreVoice

client = MoreVoice()  # MOREVOICE_API_KEY from the environment

for conference_room in client.conference_rooms.list_sessions("room_7Hk2Lm9Qp"):
    print(conference_room)
```

**cURL**

```sh
curl https://api.morevoice.ai/v1/conference_rooms/room_7Hk2Lm9Qp/history \
  -H "Authorization: Bearer $MOREVOICE_API_KEY"
```
