SearchIndexRun
A request or response body; the type column links to the schemas it refers to.
SearchIndexRun
| Field | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | yes | — |
| trigger | string | yes | `scheduled`: the hourly cron tick. `manual`: a superuser's button. one of "scheduled" | "manual" |
| mode | string | yes | `incremental`: only sources changed since the previous completed run. `full`: every source, re-embedding what the current model has not embedded yet. one of "incremental" | "full" |
| status | string | yes | `running` until every source has been processed — a large index spans several ticks — then `completed`; `failed` when the provider refused the run outright. one of "running" | "completed" | "failed" |
| provider | string | yes | — |
| model | string | yes | — |
| started_at | string (date-time) | yes | — |
| finished_at | string (date-time) | null | yes | — |
| indexed_count | integer | yes | Sources embedded. minimum 0 |
| skipped_count | integer | yes | Sources left as they were: unchanged, empty, or a file storage cannot serve. minimum 0 |
| failed_count | integer | yes | Sources the provider or the file parser could not handle. minimum 0 |
| error | string | null | yes | Why a failed run stopped. |
{
"id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"trigger": "scheduled",
"mode": "incremental",
"status": "running",
"provider": "openai",
"model": "text-embedding-3-small",
"started_at": "2026-01-01T00:00:00.000Z",
"finished_at": "2026-01-01T00:00:00.000Z",
"indexed_count": 0,
"skipped_count": 0,
"failed_count": 0,
"error": "string"
}