# List request logs

`GET https://api.morevoice.ai/v1/request_logs`

Your recent /v1 requests in this mode, newest first, with redacted bodies: what was sent, what came back, how long it took. Filters combine: `status` (`4xx`, `error`, `404`…), `method`, `path` (prefix), `key_id`, `request_id`, `operation_id`, `created[gte]`… Kept 30 days (test mode 7). Logging is switched on per organisation.

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

Operation ID: `request_logs_list`.

## Parameters

### 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). |
| `status` | `string` | no | A status class (`2xx`, `3xx`, `4xx`, `5xx`), `error` (any 4xx or 5xx), or one status code (`404`). |
| `method` | `"GET" \| "POST" \| "PATCH" \| "PUT" \| "DELETE"` | no | Only this HTTP method. |
| `path` | `string` | no | Only paths starting with this (`/v1/calls` matches `/v1/calls/call_…`). |
| `key_id` | `string` | no | Only requests made with this API key (`key_…`). |
| `request_id` | `string` | no | Only the request with this X-Request-Id (`req_…`). |
| `operation_id` | `string` | no | Only this operation (`calls_create`). |
| `created` | `object` | no | Filter on when the request arrived: created[gte], created[gt], created[lte], created[lt] (ISO-8601). |

### 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 `RequestLogList`.

| Field | Type | Description |
| --- | --- | --- |
| `object` | `"list"` | — |
| `data` | `RequestLog[]` | — |
| `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": [
    {
      "api_version": "2026-11-01",
      "created": "2026-11-03T09:14:22.135Z",
      "error_code": "parameter_invalid",
      "id": "rlog_4Gk2LmN9pQ4rS6tV8wX0yZ",
      "idempotency_key": "8e0f3a2c-5d1b-4c7e-9f6a-2b4d8c1e7a90",
      "ip": "203.0.113.7",
      "key_id": "key_3fT9kq2ZpLr8YwVbN1cX0a",
      "latency_ms": 42,
      "livemode": false,
      "method": "POST",
      "object": "request_log",
      "operation_id": "calls_create",
      "path": "/v1/calls",
      "query": null,
      "request_body": {
        "assistant_id": "asst_8tRPaZp5hLMbrGqdJ9AmNa",
        "to": "+97250000000"
      },
      "request_id": "req_7Pq2Rk9sT1uV3wX5yZ8aBc",
      "response_body": {
        "error": {
          "code": "parameter_invalid",
          "message": "to must be an E.164 number",
          "param": "to",
          "type": "invalid_request_error"
        }
      },
      "route": "/v1/calls",
      "status": 400,
      "user_agent": "morevoice-node/0.4.0"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "object": "list",
  "url": "/v1/request_logs"
}
```

### 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`.

### 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 requestLog of mv.requestLogs.list()) {
	console.log(requestLog);
}
```

**Python**

```python
from morevoice import MoreVoice

client = MoreVoice()  # MOREVOICE_API_KEY from the environment

for request_log in client.request_logs.list():
    print(request_log)
```

**cURL**

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