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

Create a serverless index from a backup

This feature is in public preview and available only on Standard and Enterprise plans.

When restoring a serverless index from backup, you can change the index name, tags, and deletion protection setting. All other properties of the restored index will remain identical to the source index, including cloud and region, dimension and similarity metric, and associated embedding model when restoring an index with integrated embedding.

To create a serverless index from a backup, provide the ID of the backup, the name of the new index, and, optionally, changes to the index tags and deletion protection settings:

from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")

pc.create_index_from_backup(
    backup_id="a65ff585-d987-4da5-a622-72e19a6ed5f4",
    name="restored-index",
    tags={
        "tag0": "val0", 
        "tag1": "val1"
    },
    deletion_protection="enabled"
)

The example returns a response like the following:

{'deletion_protection': 'enabled',
 'dimension': 1024,
 'embed': {'dimension': 1024,
           'field_map': {'text': 'chunk_text'},
           'metric': 'cosine',
           'model': 'multilingual-e5-large',
           'read_parameters': {'input_type': 'query', 'truncate': 'END'},
           'vector_type': 'dense',
           'write_parameters': {'input_type': 'passage', 'truncate': 'END'}},
 'host': 'example-dense-index-python3-govk0nt.svc.aped-4627-b74a.pinecone.io',
 'metric': 'cosine',
 'name': 'example-dense-index-python3',
 'spec': {'serverless': {'cloud': 'aws', 'region': 'us-east-1'}},
 'status': {'ready': True, 'state': 'Ready'},
 'tags': {'tag0': 'val0', 'tag1': 'val1'},
 'vector_type': 'dense'}

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 follows.

Up to 100 restore jobs are returned at a time by default, in sorted order (bitwise “C” collation). If the limit parameter is set, up to that number of restore jobs are returned instead. Whenever there are additional restore jobs to return, the response also includes a pagination_token that you can use to get the next batch of jobs. When the response does not include a pagination_token, there are no more restore jobs to return.

from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")

restore_jobs = pc.list_restore_jobs()

print(restore_jobs)

The example returns a response like the following:

[{
    "restore_job_id": "06b08366-a0a9-404d-96c2-e791c71743e5",
    "backup_id": "95707edb-e482-49cf-b5a5-312219a51a97",
    "target_index_name": "restored-index",
    "target_index_id": "027aff93-de40-4f48-a573-6dbcd654f961",
    "status": "Completed",
    "created_at": "2025-05-15T13:59:51.439479+00:00",
    "completed_at": "2025-05-15T14:00:09.222998+00:00",
    "percent_complete": 100.0
}, {
    "restore_job_id": "4902f735-b876-4e53-a05c-bc01d99251cb",
    "backup_id": "8c85e612-ed1c-4f97-9f8c-8194e07bcf71",
    "target_index_name": "restored-index2",
    "target_index_id": "027aff93-de40-4f48-a573-6dbcd654f961",
    "status": "Completed",
    "created_at": "2025-05-15T21:06:19.906074+00:00",
    "completed_at": "2025-05-15T21:06:39.360509+00:00",
    "percent_complete": 100.0
}]

View restore job details

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

from pinecone import Pinecone

pc = Pinecone(api_key="YOUR_API_KEY")

restore_job = pc.describe_restore_job(job_id="9857add2-99d4-4399-870e-aa7f15d8d326")

print(restore_job)

The example returns a response like the following:

{'backup_id': '94a63aeb-efae-4f7a-b059-75d32c27ca57',
 'completed_at': datetime.datetime(2025, 4, 25, 18, 14, 11, 74618, tzinfo=tzutc()),
 'created_at': datetime.datetime(2025, 4, 25, 18, 14, 5, 227526, tzinfo=tzutc()),
 'percent_complete': 100.0,
 'restore_job_id': '9857add2-99d4-4399-870e-aa7f15d8d326',
 'status': 'Completed',
 'target_index_id': '0d8aed24-adf8-4b77-8e10-fd674309dc85',
 'target_index_name': 'restored-index'}