# Request Logs

> Inspect your organization's most recent API requests for debugging

Source: https://docs.graph8.com/developers/request-logs/

`GET /api/v1/logs` returns your organization's **most recent API requests** — method, path, status code, and the `request_id` — so you can debug an integration without adding logging on your side. It's the developer equivalent of the request log in a payments dashboard.

Each entry corresponds to one authenticated API call your keys made, newest first.

## Endpoint

```
GET /api/v1/logs?limit=50
```

| Parameter | Type | Default | Range | Description |
|-----------|------|---------|-------|-------------|
| `limit` | integer | `50` | 1–200 | Max entries to return (most recent first) |

### Response

```json
{
  "data": [
    {
      "request_id": "a1b2c3d4e5f6...",
      "method": "POST",
      "path": "/api/v1/contacts",
      "status": 201,
      "timestamp": 1717000000
    },
    {
      "request_id": "f6e5d4c3b2a1...",
      "method": "GET",
      "path": "/api/v1/usage",
      "status": 200,
      "timestamp": 1716999990
    }
  ]
}
```

| Field | Type | Description |
|-------|------|-------------|
| `request_id` | string | Correlation id — matches the `X-Request-Id` header on the original response |
| `method` | string | HTTP method |
| `path` | string | Request path |
| `status` | integer | HTTP status code of the response |
| `timestamp` | integer | Unix seconds when the request completed |

## Examples

**cURL**

```bash
curl "https://be.graph8.com/api/v1/logs?limit=20" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
import httpx

r = httpx.get(
    "https://be.graph8.com/api/v1/logs",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": 20},
)
for entry in r.json()["data"]:
    print(entry["status"], entry["method"], entry["path"], entry["request_id"])
```

**TypeScript**

```ts
const res = await fetch("https://be.graph8.com/api/v1/logs?limit=20", {
  headers: { Authorization: `Bearer ${API_KEY}` },
});
const { data } = await res.json();
data.forEach((e) => console.log(e.status, e.method, e.path, e.request_id));
```

## Correlating with `X-Request-Id`

Every API response carries an `X-Request-Id` header. The same id appears as `request_id` here and in any error envelope's `request_id` field — so when a call fails, you can grab the id from the response and find the exact entry in your logs (or quote it to support).

## Notes & limits

- **Scope** — logs are per-organization and cover requests authenticated with your org's API keys.
- **Retention** — a rolling window of the most recent requests (the latest ~100), retained for up to 7 days. This is a debugging aid, not a permanent audit trail — export anything you need to keep.
- **Best-effort** — logging never blocks or slows your API calls. In the rare event logging is briefly unavailable, an entry may be missing; the original request still succeeds normally.
- **No bodies** — only request metadata is stored (method, path, status, id). Request and response bodies are never logged.
