Skip to main content
Pinecone Docs

Search documentation

Type to search this documentation.

On this pageOverview

Migrate to dedicated read nodes

Migrate an existing on-demand or pod-based Pinecone index to dedicated read nodes.

You can't migrate a pod-based index directly to dedicated read nodes. First complete Migrate a pod-based index to serverless, which creates a new on-demand index with your data.

If that index has multiple namespaces, consolidate to one namespace, or plan a different architecture. Dedicated read nodes support only a single namespace.

To migrate an existing on-demand index to dedicated read nodes (including one you created by migrating from pods), follow these steps:

  1. Create a backup of your index

    Before migrating, back up your index so you can return to on-demand later, either by converting back or by restoring the backup to a new on-demand index.

  2. Delete extra namespaces

    If your index has multiple namespaces, delete all of them except the one you want to keep. Dedicated read nodes support only a single namespace.

  3. Calculate your index size

    Determine how many shards you need by sizing your index.

  4. Migrate the index

    Call Configure an index. In the request body, in the spec.serverless.read_capacity object, set the following fields:

    FieldValueNotes
    modeDedicated
    dedicated.node_typeb1 or t1See node types
    dedicated.scalingManualThe only supported value
    dedicated.manual.shardsNumber of shards neededMinimum 1 shard; each shard provides 250 GB of storage
    dedicated.manual.replicasNumber of replicas neededMinimum 0 (this pauses the index)

    This example migrates an index to dedicated read nodes using b1 nodes, one shard, and one replica:

    Request
    PINECONE_API_KEY="YOUR_API_KEY"
    INDEX_NAME="YOUR_INDEX_NAME"
    
    curl -X PATCH "https://api.pinecone.io/indexes/$INDEX_NAME" \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -H "Api-Key: $PINECONE_API_KEY" \
         -H "X-Pinecone-Api-Version: 2025-10" \
         -d '{
               "spec": {
                 "serverless": {
                   "read_capacity": {
                     "mode": "Dedicated",
                     "dedicated": {
                       "node_type": "b1",
                       "scaling": "Manual",
                       "manual": {
                         "shards": 1,
                         "replicas": 1
                       }
                     }
                   }
                 }
               }
             }'
    Response
    {
      "name": "example-index-to-migrate",
      "vector_type": "dense",
      "metric": "cosine",
      "dimension": 1024,
      "status": {
        "ready": true,
        "state": "Ready"
      },
      "host": "example-index-to-migrate-1c6ab6aa.svc.aped-4627-b74a.pinecone.io",
      "spec": {
        "serverless": {
          "region": "us-east-1",
          "cloud": "aws",
          "read_capacity": {
            "mode": "Dedicated",
            "dedicated": {
              "node_type": "b1",
              "scaling": "Manual",
              "manual": {
                "shards": 1, // <---- desired state
                "replicas": 1
              }
            },
            "status": {
              "state": "Migrating",
              "current_shards": null, //<---- current state
              "current_replicas": null
            }
          }
        }
      },
      "deletion_protection": "disabled",
      "tags": null,
      "embed": {
        "model": "llama-text-embed-v2",
        "field_map": {
          "text": "text"
        },
        "dimension": 1024,
        "metric": "cosine",
        "write_parameters": {
          "dimension": 1024,
          "input_type": "passage",
          "truncate": "END"
        },
        "read_parameters": {
          "dimension": 1024,
          "input_type": "query",
          "truncate": "END"
        },
        "vector_type": "dense"
      }
    }

    The response includes two status fields:

    FieldDescription
    status.stateOverall index status (for example, Initializing, Ready, Terminating)
    spec.serverless.read_capacity.status.stateRead capacity status (Migrating, Scaling, Ready, Error)
  5. Monitor the migration

    Check the status until spec.serverless.read_capacity.status.state is Ready.

  6. Verify performance

    Confirm the index meets your latency and throughput targets.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu