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:

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'}