
## List entries

`GET /v1/timeline-logs`

Returns the log entries of a single CRM entity with auto-pagination. Pass a `limit` up to 5000 — Vibecode will assemble the result into one response.

## Parameters

| Parameter | Type | Required | Default | Description |
|----------|-----|:-----:|-----------|---------|
| `entityTypeId` | number | yes | — | Parent CRM entity type. See [Entity types](/docs/timeline-logs#parent-entity-types) |
| `entityId` | number | yes | — | Parent entry ID |
| `limit` | number | no | `50` | How many entries to return (1–5000). Vibecode internally makes several B24 requests of 10 entries each |
| `offset` | number | no | `0` | How many to skip from the start. Maps to the B24 parameter `start` |
| `orderBy` | string | no | `id` | Sort field: `id` or `created` (others are ignored) |
| `order` | string | no | `desc` | Direction: `asc` or `desc` |

## Examples

### curl — personal key

```bash
curl "https://vibecode.bitrix24.com/v1/timeline-logs?entityTypeId=2&entityId=100&limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl "https://vibecode.bitrix24.com/v1/timeline-logs?entityTypeId=2&entityId=100&limit=20" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const res = await fetch(
  'https://vibecode.bitrix24.com/v1/timeline-logs?entityTypeId=2&entityId=100&limit=20',
  { headers: { 'X-Api-Key': 'YOUR_API_KEY' } },
)

const { success, data, total } = await res.json()
console.log(`Entries: ${total}, received: ${data.length}`)
```

### JavaScript — OAuth application

```javascript
const res = await fetch(
  'https://vibecode.bitrix24.com/v1/timeline-logs?entityTypeId=2&entityId=100&limit=20',
  {
    headers: {
      'X-Api-Key': 'YOUR_APP_KEY',
      'Authorization': 'Bearer USER_SESSION_TOKEN',
    },
  },
)

const { success, data, total } = await res.json()
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data` | array | Array of log entries |
| `data[].id` | number | Log entry ID |
| `data[].created` | datetime | Creation date, ISO 8601 with the Bitrix24 account timezone |
| `data[].authorId` | number | Author ID. User data by ID: `GET /v1/users/:id` |
| `data[].title` | string | Title |
| `data[].text` | string | Entry text |
| `data[].iconCode` | string | Icon code (or `""` if not set) |
| `total` | number | Total number of entries for this entity |

## Response example

```json
{
  "success": true,
  "data": [
    {
      "id": 5012,
      "created": "2026-04-27T10:00:00+00:00",
      "authorId": 1,
      "title": "AI agent processed the request",
      "text": "Customer data analyzed. Recommendation: Enterprise plan.",
      "iconCode": ""
    },
    {
      "id": 5008,
      "created": "2026-04-27T09:45:00+00:00",
      "authorId": 1,
      "title": "Payment received",
      "text": "100,000 USD from Acme LLC",
      "iconCode": "info"
    }
  ],
  "total": 2
}
```

## Error response example

400 — required parameters not provided:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Required query: entityTypeId (positive int), entityId (positive int)"
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `entityTypeId` / `entityId` not provided or invalid |
| 422 | `BITRIX_ERROR` | Bitrix24 returned an error (for example, the parent entity does not exist) |
| 403 | `SCOPE_DENIED` | The API key does not have the `crm` scope |
| 401 | `TOKEN_MISSING` | The API key has no configured tokens |

Full list of common API errors — [Errors](/docs/errors).

## Known specifics

**A large `limit` costs more rate-limit.** Under the hood Vibecode makes several calls to Bitrix24 to assemble the requested volume — for timeline log entries one Vibecode call with `limit=50` corresponds to 5 quanta of the rate-limit budget (and `limit=100` to 10 quanta). If conserving the rate limit matters, use `limit=10`.

**`offset` works in entries, not in pages.** Pass `offset=20`, and Vibecode converts it to `start=20` for B24 (which computes `(N-1) * 10`, where `N` is the page number).

**Sorting only by `id` or `created`.** Vibecode replaces any other `orderBy` value with `id`. The default is `id desc` (newest first).

**Entries from all keys in one list.** `GET` returns absolutely all log entries of the parent entity, regardless of which application created them. There is no "only my entries" filter on the B24 side.

## See also

- [Get an entry](/docs/timeline-logs/logs/get) — a single entry by `id`
- [Create an entry](/docs/timeline-logs/logs/create) — add to the log
- [Delete an entry](/docs/timeline-logs/logs/delete) — mind the cross-app restriction
- [Limits and optimization](/docs/optimization) — rate limits accounting for B24 pages of 10
