---
title: Reindex Search
protocol: rest
method: POST
endpoint: /v1/projects/{projectId}/search/reindex
description: "Rebuild the search index"
---

# Reindex Search

Rebuild the search index for a project. Useful after bulk content changes or to fix search issues.

<Endpoint method="POST" path="/v1/projects/{projectId}/search/reindex" />

## Path Parameters

<ParamField path="projectId" type="string" required>
  The project ID (e.g., `prj_abc123`).
</ParamField>

## Request Body

<ParamField body="full" type="boolean" default="false">
  Perform a full reindex (slower but thorough) vs incremental.
</ParamField>

## Response

Returns the reindex job status.

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="jobId" type="string">
      Reindex job identifier.
    </ResponseField>

    <ResponseField name="status" type="string">
      Job status: `queued`, `processing`, `completed`.
    </ResponseField>

    <ResponseField name="pagesIndexed" type="integer">
      Number of pages indexed (when completed).
    </ResponseField>

    <ResponseField name="startedAt" type="string">
      ISO 8601 timestamp.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
```bash cURL
curl -X POST https://api.syntext.dev/v1/projects/prj_abc123/search/reindex \
  -H "Authorization: Bearer stx_abc12345_..." \
  -H "Content-Type: application/json" \
  -d '{"full": true}'
```

```typescript SDK
import { Syntext } from '@syntext/sdk'

const client = new Syntext('stx_abc12345_...')

const job = await client.search.reindex('prj_abc123', {
  full: true,
})
```

```python Python
from syntext import Syntext

client = Syntext("stx_abc12345_...")

job = client.search.reindex("prj_abc123", full=True)
```
</CodeGroup>

### Response

```json
{
  "data": {
    "jobId": "idx_abc123",
    "status": "queued",
    "startedAt": "2026-06-28T12:00:00Z"
  }
}
```

<Note>
Search remains available during reindexing. New results appear as pages are indexed.
</Note>

## Error Responses

### 404 Not Found

Returned when the project does not exist.

```json
{
  "error": {
    "code": "not_found",
    "message": "Project does not exist"
  }
}
```

### 409 Conflict

Returned when a reindex is already in progress.

```json
{
  "error": {
    "code": "conflict",
    "message": "A reindex operation is already in progress"
  }
}
```
