List reindex jobs
Lists every reindex job across the deployment, including finished jobs, ordered by index name. Served from durable job records, so any node can serve the request and returns the same response.
Jobs on indexes where the key lacks permissions are omitted rather than refused.
index keeps the job of one index and phase the jobs in the named phases, so a poll for running jobs is one request. prefix keeps the jobs whose index name starts with it. limit caps the answer, and a listing cut short names the last index in next; pass it as after to read on. See Listings.
Query parameters
afterstringnext field of the previous response gave it. The job of the named index is not included.indexstring404 when the index has no job.limitintegernext.- Range
- 1 to 1000
phasestring[]phase=copying,replaying.prefixstringResponses
ReindexListResponse
Every reindex job across the deployment, finished ones included.
reindexesReindexInfo[]Example
{ "id": "6f1c2a9d8b3e4c05", "index": "products", "target": "products@2", "source": "products@1", "phase": "copying", "promote": "auto", "documentsCopied": 125000, "sourceDocuments": 2400000, "backlog": 4100, "error": null, "startedBy": "3f9a1c7e2b8d4650", "node": "node-a-7f21", "startedAt": "2026-08-28T10:15:30Z", "updatedAt": "2026-08-28T10:16:02Z", "finishedAt": null, "freshness": null}16 properties
idstringnull on a record an earlier version wrote."6f1c2a9d8b3e4c05"indexstring"products"targetstringindex@generation."products@2"sourcestring"products@1"phasestringpending: accepted and waiting for a concurrency slot on the node. copying: streaming documents from the source to the target in primary key order. replaying: copying documents that changed in the source while the copy ran. ready: used only with promote: manual, caught up and waiting for manual promotion, while continuing to catch up periodically. promoting: holding writes for the final drain and promotion. done: completed and promoted successfully. failed: stopped before promotion due to an error, indicated by error. cancelled: stopped before completion in response to a cancellation request.- Values
- "pending", "copying", "replaying", "ready", "promoting", "done", "failed", "cancelled"
"copying"promotestringauto automatically promotes the target generation once it catches up with changes. manual pauses the job in the ready phase and keeps the target caught up until you manually promote it.- Values
- "auto", "manual"
"auto"documentsCopiedinteger- Format
- int64
125000sourceDocumentsinteger- Format
- int64
2400000backloginteger- Format
- int64
4100errorstringnull.startedBystringroot. null on a record an earlier version wrote."3f9a1c7e2b8d4650"nodestringnull on a record an earlier version wrote."node-a-7f21"startedAtstring"2026-08-28T10:15:30Z"updatedAtstring"2026-08-28T10:16:02Z"finishedAtstringdone, failed or cancelled, or null while it runs."2026-08-28T10:41:17Z"freshnessstringdone, and null before that. Pass it as freshness.atLeast on a search, and the search is answered from the target generation whichever node it lands on. Opaque; pass it back unchanged. See Freshness."AQoIcHJvZHVjdHMSATI"nextstringafter parameter to list the jobs after these. Present only when a limit cut the listing short."products"limit parameter is out of range, or phase names no phase.ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- request:limit_out_of_range
- The `limit` parameter is not a whole number from 1 to 1000.
- reindex:phase_invalid
- A `phase` parameter names no reindex phase. The `value` argument carries what was sent.
WWW-Authenticate: Bearer.ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- auth:unauthenticated
- The request carries no credential this node accepts.
indexes.read permission.ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- auth:forbidden
- The key is accepted but does not hold the `indexes.read` permission.
ErrorResponse
The body of every failed request. Error codes use colon-separated namespaces such as index:field:name_invalid, are stable across API versions, and are never renamed or reused, so clients match on code rather than on message. See Errors.
codestringvalidation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors."validation"messagestringcode rather than on message. When a validation failure contains one problem, this is that problem's message. When it contains several, it reads Request contains N errors."Request contains 2 errors"errorsErrorDetail[]Example
{ "code": "index:field:primary_key:multiple_unsupported", "message": "Field `id` is marked as a primary key and multiple, primary keys can not have multiple values", "path": "id"}4 properties
codestring"index:field:primary_key:multiple_unsupported"messagestring"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"pathstringfields.title or documents[1].nonexistent. Names join with ., one element of a list reads [n] counted from zero, and a key of a free-form map such as metadata goes in brackets and double quotes when it holds a dot or a bracket, as metadata["build.sha"]. A field inside an object field carries its own dotted path, so a path here reaches a field the same way a query does. Omitted when the problem applies to the request as a whole. See API conventions."id"argumentsmap of string1 property
<key>stringError codes
- storage:io_error
- The records of the reindexes could not be read. Send the request again once the storage responds.
Authorization
- Permission
- indexes.read
- Checked on
- At least one index
- Roles
reader,writer,admin
An API key sent as a bearer token, such as Authorization: Bearer exok_4ff6b760264c1918_ePQcdT1O9HSATZoXfDbT8hhHGsP9VpZH. A key carries grants that pair permissions with index patterns; the permission each endpoint needs is named beside it. Nodes running with EXOFIND_AUTH_MODE=none accept requests without a credential, and a node with EXOFIND_AUTH_ANONYMOUS_KEY set serves requests that carry none with the permissions of that key.
Exofind is built by Level Four AB and is available under the Apache License 2.0.