You can restore a serverless index by creating a new index from a backup.

Create a serverless index from a backup

Serverless index backups are in public preview and available only on Standard and Enterprise plans.

You can create a new serverless index from a backup. The new index can differ from the source index in name, but it must be created in the same cloud provider and region, and have the same dimensions and similarity metric as the source index. The new index is queryable and writable. You cannot create a pod-based index from a backup of a serverless index.

To create a serverless index from a backup, provide the backup_id parameter containing the ID of the backup from which you wish to create an index:

curl
PINECONE_API_KEY="YOUR_API_KEY"
BACKUP_ID="a65ff585-d987-4da5-a622-72e19a6ed5f4"

curl "https://api.pinecone.io/backups/$BACKUP_ID/create-index" \
	-H "Api-Key: $PINECONE_API_KEY" \
  -H "X-Pinecone-API-Version: 2025-04" \
	-H 'Content-Type: application/json' \
	-d '{
		"name": "restored-index",
		"tags": {
            "tag0": "val0",
            "tag1": "val1"
            },
        "deletion_protection": "enabled"
	    }'

The example returns a response like the following:

{
    "restore_job_id":"e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
    "index_id":"025117b3-e683-423c-b2d1-6d30fbe5027f"
}

You can create a serverless index from a backup using the Pinecone console.

Create a serverless index from a collection

You can migrate a pod-based index to serverless by creating a new serverless index from a collection. For more information, see Migrate a pod-based index to serverless.

List restore jobs

You can list all restore jobs, as in the following example:

curl
PINECONE_API_KEY="YOUR_API_KEY"

curl "https://api.pinecone.io/restore-jobs" \
	-H "X-Pinecone-Api-Version: 2025-04" \
	-H "Api-Key: $PINECONE_API_KEY"

The example returns a response like the following:

{
    "data":
    [
        {
            "restore_job_id":"e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
            "backup_id":"a65ff585-d987-4da5-a622-72e19a6ed5f4",
            "target_index_name":"restored-index",
            "target_index_id":"025117b3-e683-423c-b2d1-6d30fbe5027f",
            "status":"Completed",
            "created_at":"2025-03-11T18:50:19.770696Z",
            "completed_at":"2025-03-11T18:51:37.872620Z",
            "percent_complete":100
        },
        {
            "restore_job_id":"f1ac7bb9-7948-4cfa-ba43-34227f6d30d4",
            "backup_id":"e19a6ed-d987-4da5-a622-72e19a6ed5f4",
            "target_index_name":"restored-index",
            "target_index_id":"123487b3-e683-423c-b2d1-6d30fbe5027f",
            "status":"Completed",
            "created_at":"2025-03-11T18:50:19.770696Z",
            "completed_at":"2025-03-11T18:51:37.872620Z",
            "percent_complete":100
        }
    ],
    "pagination": null
}

View restore job details

You can view the details of a specific restore job, as in the following example:

curl
PINECONE_API_KEY="YOUR_API_KEY"
JOB_ID="e9ba8ff8-7948-4cfa-ba43-34227f6d30d4"

curl "https://api.pinecone.io/restore-jobs/$JOB_ID" \
    -H "X-Pinecone-Api-Version: 2025-04" \
    -H "Api-Key: $PINECONE_API_KEY" \
    -H 'accept: application/json'

The example returns a response like the following:

{
    "data":
    [
        {
            "restore_job_id":"e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
            "backup_id":"a65ff585-d987-4da5-a622-72e19a6ed5f4",
            "target_index_name":"restored-index",
            "target_index_id":"025117b3-e683-423c-b2d1-6d30fbe5027f",
            "status":"Completed",
            "created_at":"2025-03-11T18:50:19.770696Z",
            "completed_at":"2025-03-11T18:51:37.872620Z",
            "percent_complete":100
        },
    ]
}