---
title: "Retrieve the figures of the indexing logs"
description: "Retrieve the indexings, the failures, the work in progress and the words indexed over the same filters as the indexing log. Free."
canonical: "https://lookio.app/docs/api/logs/get-log-indexing-stats"
updated: "2026-10-18"
---

# Retrieve the figures of the indexing logs

Requires `resources:read`.

The totals behind [the list of indexings](/docs/api/logs/list-log-indexing), over the same filters (`resource_id`, `status`, `source_type`, `q`, `include_unchanged`, `from`, `to`) and without `cursor` or `limit`.

`indexed` counts the indexings that succeeded, including those since replaced. `in_progress` counts `queued` and `processing`. `unchanged` counts unchanged and skipped ones, and only when the filters include them.

See [Logs](/docs/platform/logs).

```http
GET https://api.lookio.app/v1/logs/indexing/stats
```

## Authorizations

- `Authorization` (bearer, in header, required)

## Query parameters

- `resource_id` (`string`, pattern: `^res_[abcdefghjkmnpqrstuvwxyz23456789]{12}$`): Only this resource's indexings (a site: all its pages).
- `status` (`string`, length: `≥ 1 chars`): Only these statuses, comma-separated: `queued`, `processing`, `indexed` (searchable now), `replaced` (indexed, then replaced by a newer indexing), `unchanged` (re-read, same text), `skipped` (a newer indexing finished first), `failed`. Default: all but `unchanged` and `skipped`.
- `source_type` (`enum<string>`, one of: `file, url, site, text`): Only resources of this kind.
- `q` (`string`, length: `1–200 chars`): Words in the resource's title, the file's name, or the page's address or title.
- `include_unchanged` (`boolean | enum<string>`): Also list the pages a sync re-read and found unchanged. Default false.
- `from` (`string`): Only indexings started since this ISO 8601 date or timestamp.
- `to` (`string`): Only indexings started until this ISO 8601 date or timestamp.

## Response

**200**: Retrieve the figures of the indexing logs

- `data` (`object`, required)
- `data.total` (`integer`, required)
- `data.indexed` (`integer`, required): Indexed, including those since replaced.
- `data.failed` (`integer`, required)
- `data.in_progress` (`integer`, required)
- `data.unchanged` (`integer`, required): Unchanged or skipped: counted only when the filters include them.
- `data.words_indexed` (`integer`, required)
- `request_id` (`string`, required)

```json
{
  "data": {
    "total": 123,
    "indexed": 123,
    "failed": 123,
    "in_progress": 123,
    "unchanged": 123,
    "words_indexed": 123
  },
  "request_id": "<string>"
}
```

**400**: Possible codes: invalid_request, unknown_field, invalid_parameter, invalid_cursor

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**401**: Possible codes: authentication_required, invalid_api_key, api_key_expired, api_key_revoked, invalid_access_key

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**403**: Possible codes: insufficient_scope, feature_not_available, admin_required, permission_denied

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**429**: Possible codes: rate_limited

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**500**: Possible codes: internal_error

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>"
  },
  "request_id": "<string>"
}
```

**Example request**

```bash
curl --request GET \
  --url 'https://api.lookio.app/v1/logs/indexing/stats' \
  --header 'Authorization: <api-key>'
```
