Skip to main content
Pinecone Docs

Search documentation

Type to search this documentation.

On this pageOverview

Create an index from a backup

Python
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"
)
JavaScript
import { Pinecone } from '@pinecone-database/pinecone';

const pc = new Pinecone({ apiKey: 'YOUR_API_KEY' })

const response = await pc.createIndexFromBackup({
  backupId: 'a65ff585-d987-4da5-a622-72e19a6ed5f4',
  name: 'restored-index',
  tags: {
    tag0: 'val0',
    tag1: 'val1'
  },
  deletionProtection: 'enabled'
});

console.log(response);
Java
import io.pinecone.clients.Pinecone;
import org.openapitools.db_control.client.ApiException;
import org.openapitools.db_control.client.model.*;

public class CreateIndexFromBackup {
    public static void main(String[] args) throws ApiException {
        Pinecone pc = new Pinecone.Builder("YOUR_API_KEY").build();

        String backupID = "a65ff585-d987-4da5-a622-72e19a6ed5f4";
        String indexName = "restored-index";

        CreateIndexFromBackupResponse backupResponse = pc.createIndexFromBackup(backupID, indexName);
        System.out.println(backupResponse);
    }
}
Go
package main

import (
	"context"
	"encoding/json"
	"fmt"
	"log"
	"time"

	"github.com/pinecone-io/go-pinecone/v4/pinecone"
)

func prettifyStruct(obj interface{}) string {
	bytes, _ := json.MarshalIndent(obj, "", "  ")
	return string(bytes)
}

func main() {
	ctx := context.Background()

	pc, err := pinecone.NewClient(pinecone.NewClientParams{
		ApiKey: "YOUR_API_KEY",
	})
	if err != nil {
		log.Fatalf("Failed to create Client: %v", err)
	}

	indexName := "restored-index"
	restoredIndexTags := pinecone.IndexTags{"restored_on": time.Now().Format("2006-01-02 15:04")}
	createIndexFromBackupResp, err := pc.CreateIndexFromBackup(ctx, &pinecone.CreateIndexFromBackupParams{
		BackupId: "e12269b0-a29b-4af0-9729-c7771dec03e3",
		Name:     indexName,
		Tags:     &restoredIndexTags,
	})

	fmt.Printf(prettifyStruct(createIndexFromBackupResp))
}
C#
using Pinecone;

var pinecone = new PineconeClient("YOUR_API_KEY");

var response = await pinecone.Backups.CreateIndexFromBackupAsync(
    "a65ff585-d987-4da5-a622-72e19a6ed5f4", 
    new CreateIndexFromBackupRequest
    {
        Name = "restored-index",
        Tags = new Dictionary<string, string> 
        { 
            { "tag0", "val0" },
            { "tag1", "val1" }
        },
        DeletionProtection = DeletionProtection.Enabled
    }
);

Console.WriteLine(response);
curl
PINECONE_API_KEY="YOUR_API_KEY"
BACKUP_ID="a65ff585-d987-4da5-a622-72e19a6ed5f4"

curl -X POST "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"
         }'
Python
{'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'}
JavaScript
{
  "restoreJobId": "e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
  "indexId": "025117b3-e683-423c-b2d1-6d30fbe5027f"
}
Java
class CreateIndexFromBackupResponse {
    restoreJobId: e9ba8ff8-7948-4cfa-ba43-34227f6d30d4
    indexId: 025117b3-e683-423c-b2d1-6d30fbe5027f
    additionalProperties: null
}
Go
{
  "index_id": "025117b3-e683-423c-b2d1-6d30fbe5027f",
  "restore_job_id": "e9ba8ff8-7948-4cfa-ba43-34227f6d30d4"
}
C#
{
    "restore_job_id":"e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
    "index_id":"025117b3-e683-423c-b2d1-6d30fbe5027f"
}
curl
{
    "restore_job_id":"e9ba8ff8-7948-4cfa-ba43-34227f6d30d4",
    "index_id":"025117b3-e683-423c-b2d1-6d30fbe5027f"
}

POST /backups/{backup_id}/create-index

  • backup_id (path, string, required) — The ID of the backup to create an index from.
  • name (body, string, required) — The name of the index. Resource name must be 1-45 characters long, start and end with an alphanumeric character, and consist only of lower case alphanumeric characters or '-'.
  • tags (body, object) — Custom user tags added to an index. Keys must be 80 characters or less. Values must be 120 characters or less. Keys must be alphanumeric, '', or '-'. Values must be alphanumeric, ';', '@', '', '-', '.', '+', or ' '. To unset a key, set the value to be an empty string.
  • deletion_protection (body, string) — Whether deletion protection is enabled/disabled for the index.
  • 202 — The request to create the index has been accepted.
  • 400 — Bad request. The request body included invalid request parameters.
  • 401 — Unauthorized. Possible causes: Invalid API key.
  • 402 — Payment required. Organization is on a paid plan and is delinquent on payment.
  • 403 — You've exceed your pod quota.
  • 404 — Backup not found.
  • 409 — Index of given name already exists.
  • 422 — Unprocessable entity. The request body could not be deserialized.
  • 500 — Internal server error.
Suggest an edit

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

Export
Documentation menu