Skip to content

REST API

List reindex jobs

GET/v1alpha1/admin/reindexesindexes.read

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

afterstring
The index name to continue after, as the next field of the previous response gave it. The job of the named index is not included.
indexstring
Keeps only the job of this index. Answers an empty listing rather than 404 when the index has no job.
limitinteger
Most jobs to answer. Without it the whole listing is answered. When more remain, the response carries the last name in next.
Range
1 to 1000
phasestring[]
Keeps only the jobs in these phases. Repeat the parameter or separate the phases with commas, as phase=copying,replaying.
prefixstring
Keeps only the jobs whose index name starts with this text.

Responses

200
The job records visible to the key, ordered by index name.
ReindexListResponse

Every reindex job across the deployment, finished ones included.

reindexesReindexInfo[]
The jobs the key can view, ordered by index name. A job on an index on which the key lacks permissions is omitted.
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
idstring
The id of the job, minted when it was accepted. Tells one job of an index from the one that replaced it. null on a record an earlier version wrote.
Example
"6f1c2a9d8b3e4c05"
indexstring
The name of the index.
Example
"products"
targetstring
The generation being populated, formatted as index@generation.
Example
"products@2"
sourcestring
The generation providing the source documents.
Example
"products@1"
phasestring
The current phase of the job. pending: 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"
Example
"copying"
promotestring
The configured promote mode. auto 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"
Example
"auto"
documentsCopiedinteger
The number of confirmed documents copied to the target.
Format
int64
Example
125000
sourceDocumentsinteger
The document count of the source generation when the copy started.
Format
int64
Example
2400000
backloginteger
The number of changed documents waiting to be replayed when the record was last written.
Format
int64
Example
4100
errorstring
The error message if the job failed, or null.
startedBystring
The id of the principal whose request started the job: the id of a key, or the name of a configured principal such as root. null on a record an earlier version wrote.
Example
"3f9a1c7e2b8d4650"
nodestring
The name of the node running the job, as the indexer listing names it, or the node that ended it. A job resumed on another node after a failover names that node from its next checkpoint on. null on a record an earlier version wrote.
Example
"node-a-7f21"
startedAtstring
The timestamp when the job started.
Example
"2026-08-28T10:15:30Z"
updatedAtstring
The timestamp when the job record was last updated.
Example
"2026-08-28T10:16:02Z"
finishedAtstring
The timestamp when the job reached done, failed or cancelled, or null while it runs.
Example
"2026-08-28T10:41:17Z"
freshnessstring
A freshness token for the state the promotion of the target landed in. Present once the job reaches done, 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.
Example
"AQoIcHJvZHVjdHMSATI"
nextstring
The index name to pass as the after parameter to list the jobs after these. Present only when a limit cut the listing short.
Example
"products"
400
The 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.

codestring
Identifies the failure type. For validation failures, this is validation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors.
Example
"validation"
messagestring
Human-readable message for log output. Match on code 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.
Example
"Request contains 2 errors"
All problems found in the request. A validation failure reports every field with a problem, so a caller can fix them in one pass rather than one request at a time.
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
The error code identifying this specific problem.
Example
"index:field:primary_key:multiple_unsupported"
messagestring
Human-readable description of this problem.
Example
"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"
pathstring
Location of the offending value in the request, such as fields.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.
Example
"id"
argumentsmap of string
The values the message was rendered with, so a client can render a message of its own from the code.
1 property
<key>string
Error 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.
401
The request carries no credential this node accepts. Absent, malformed, unknown and lapsed keys are all answered alike, so a refusal cannot be used to find out which keys exist. The response carries 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.

codestring
Identifies the failure type. For validation failures, this is validation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors.
Example
"validation"
messagestring
Human-readable message for log output. Match on code 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.
Example
"Request contains 2 errors"
All problems found in the request. A validation failure reports every field with a problem, so a caller can fix them in one pass rather than one request at a time.
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
The error code identifying this specific problem.
Example
"index:field:primary_key:multiple_unsupported"
messagestring
Human-readable description of this problem.
Example
"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"
pathstring
Location of the offending value in the request, such as fields.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.
Example
"id"
argumentsmap of string
The values the message was rendered with, so a client can render a message of its own from the code.
1 property
<key>string
Error codes
auth:unauthenticated
The request carries no credential this node accepts.
403
The API key does not have 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.

codestring
Identifies the failure type. For validation failures, this is validation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors.
Example
"validation"
messagestring
Human-readable message for log output. Match on code 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.
Example
"Request contains 2 errors"
All problems found in the request. A validation failure reports every field with a problem, so a caller can fix them in one pass rather than one request at a time.
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
The error code identifying this specific problem.
Example
"index:field:primary_key:multiple_unsupported"
messagestring
Human-readable description of this problem.
Example
"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"
pathstring
Location of the offending value in the request, such as fields.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.
Example
"id"
argumentsmap of string
The values the message was rendered with, so a client can render a message of its own from the code.
1 property
<key>string
Error codes
auth:forbidden
The key is accepted but does not hold the `indexes.read` permission.
409
The job records could not be read.
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.

codestring
Identifies the failure type. For validation failures, this is validation and the individual problems are listed in errors. For all other failures, this matches the code of the single entry in errors.
Example
"validation"
messagestring
Human-readable message for log output. Match on code 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.
Example
"Request contains 2 errors"
All problems found in the request. A validation failure reports every field with a problem, so a caller can fix them in one pass rather than one request at a time.
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
The error code identifying this specific problem.
Example
"index:field:primary_key:multiple_unsupported"
messagestring
Human-readable description of this problem.
Example
"Field `id` is marked as a primary key and multiple, primary keys can not have multiple values"
pathstring
Location of the offending value in the request, such as fields.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.
Example
"id"
argumentsmap of string
The values the message was rendered with, so a client can render a message of its own from the code.
1 property
<key>string
Error 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.