> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinecone.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a dedicated read nodes index

> Create a Pinecone dedicated read nodes index from scratch or from a backup of an existing index.

## From scratch

**1. Create the index**

Call [Create an index](https://docs.pinecone.io/reference/api/2026-07/control-plane/create_index.md). In the request body, in the `read_capacity` object, set the following fields:

| Field | Value | Notes |
| :- | :- | :- |
| `mode` | `Dedicated` | |
| `dedicated.node_type` | `b1` or `t1` | See [node types](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/concepts.md#node-types) |
| `dedicated.scaling` | `Manual` | The only supported value |
| `dedicated.manual.shards` | Number of [shards](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/size-and-test.md#number-of-shards) needed | Minimum 1 shard; each shard provides 250 GB of storage |
| `dedicated.manual.replicas` | Number of [replicas](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/size-and-test.md#number-of-replicas) needed | Minimum 0 (this [pauses](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/manage.md#pause-an-index) the index) |

> [!NOTE]
>
> To learn how to determine the number of shards and replicas your index requires, see [Calculate the size of your index](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/size-and-test.md#calculate-the-size-of-your-index).

This example creates an index with two shards and one replica:

```bash Request expandable theme={null}
PINECONE_API_KEY="YOUR_API_KEY"

curl "https://api.pinecone.io/indexes" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Api-Key: $PINECONE_API_KEY" \
     -H "X-Pinecone-Api-Version: 2026-07" \
     -d '{
           "name": "example-dedicated-index",
           "deletion_protection": "enabled",
           "tags": {
             "environment": "production"
           },
           "deployment": {
             "deployment_type": "managed",
             "cloud": "aws",
             "region": "us-east-1"
           },
           "schema": {
             "fields": {
               "_values": { "type": "dense_vector", "dimension": 1024, "metric": "cosine" }
             }
           },
           "read_capacity": {
             "mode": "Dedicated",
             "dedicated": {
               "node_type": "b1",
               "scaling": "Manual",
               "manual": {
                 "shards": 2,
                 "replicas": 1
               }
             }
           }
         }'
```

```jsonc Response expandable theme={null}
{
  "name": "example-dedicated-index",
  "status": {
    "ready": false,
    "state": "Initializing"
  },
  "host": "example-dedicated-index-1c6ab6aa.svc.aped-4627-b74a.pinecone.io",
  "deployment": {
    "deployment_type": "managed",
    "region": "us-east-1",
    "cloud": "aws",
    "environment": "aped-4627-b74a"
  },
  "read_capacity": {
    "mode": "Dedicated",
    "dedicated": {
      "node_type": "b1",
      "scaling": "Manual",
      "manual": {
        "shards": 2, // <---- desired state
        "replicas": 1
      }
    },
    "status": {
      "state": "Migrating",
      "current_shards": null, // <---- current state
      "current_replicas": null
    }
  },
  "schema": {
    "fields": {
      "_values": { "type": "dense_vector", "dimension": 1024, "metric": "cosine" }
    }
  },
  "deletion_protection": "enabled",
  "tags": {
    "environment": "production"
  }
}
```

The response includes two status fields:

| Field | Description |
| :- | :- |
| **`status.state`** | Overall index status (for example, `Initializing`, `Ready`, `Terminating`) |
| **`read_capacity.status.state`** | Read capacity status (`Migrating`, `Scaling`, `Ready`, `Error`) |

> [!NOTE]
>
> When creating a dedicated read nodes index, `status.state` transitions to `Ready` as soon as the index is ready for reads and writes.
>
> However, `read_capacity.status.state` remains `Migrating` until the index scales to its full read capacity, at which point it transitions to `Ready`.

**2. Add your data**

After the index is created, [upsert](https://docs.pinecone.io/guides/data/upsert-data.md) or [import](https://docs.pinecone.io/guides/data/import-data.md) your data.

> [!TIP]
>
> To upsert and search with text instead of vectors, create the index with a [hosted embedding model](https://docs.pinecone.io/guides/indexes/index-configuration.md#embedding-models) instead. Call [Create an index with integrated embedding](https://docs.pinecone.io/reference/api/2026-07/control-plane/create_for_model.md) and include the `read_capacity` object to configure dedicated read nodes.

## From a backup

**1. Restore the backup**

[Restore the backup](https://docs.pinecone.io/guides/indexes/restore-an-index.md) to a new on-demand index with the same data as the original.

**2. Delete extra namespaces**

If the restored index has multiple namespaces, [delete](https://docs.pinecone.io/reference/api/latest/data-plane/deletenamespace.md) all of them except the one you want to keep. Dedicated read nodes support only [one namespace](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/overview.md#namespace-limits).

**3. Migrate to dedicated read nodes**

Convert the restored on-demand index by following [Migrate to dedicated read nodes](https://docs.pinecone.io/guides/optimize/dedicated-read-nodes/migrate.md).
