Skip to main content
Pinecone Docs

Search documentation

Type to search this documentation.

On this pageOverview

Create an index

For guidance and examples, see Create an index.

Python
# pip install "pinecone[grpc]"
from pinecone.grpc import PineconeGRPC as Pinecone
from pinecone import ServerlessSpec

pc = Pinecone(api_key="YOUR_API_KEY")

pc.create_index(
  name="docs-example1",
  dimension=1536,
  metric="cosine",
  spec=ServerlessSpec(
    cloud="aws",
    region="us-east-1",
  ),
  deletion_protection="disabled"
)
JavaScript
// npm install @pinecone-database/pinecone
import { Pinecone } from '@pinecone-database/pinecone'

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

await pc.createIndex({
  name: 'docs-example1',
  dimension: 1536,
  metric: 'cosine',
  spec: {
    serverless: {
      cloud: 'aws',
      region: 'us-east-1'
    }
  },
  deletionProtection: 'disabled',
});
Java
import io.pinecone.clients.Pinecone;

public class CreateServerlessIndexExample {
    public static void main(String[] args) {
        Pinecone pc = new Pinecone.Builder("YOUR_API_KEY").build();
        pc.createServerlessIndex("docs-example1", "cosine", 1536, "aws", "us-east-1", DeletionProtection.disabled);
    }
}
Go
package main

import (
    "context"
    "fmt"
    "log"

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

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

    deletionProtection := pinecone.DeletionProtectionDisabled

    idx, err := pc.CreateServerlessIndex(ctx, &pinecone.CreateServerlessIndexRequest{
        Name:      "docs-example1",
        Dimension: 1536,
        Metric:    pinecone.Cosine,
        Cloud:     pinecone.Aws,
        Region:    "us-east-1",
        DeletionProtection: &deletionProtection,
    })
  	if err != nil {
        log.Fatalf("Failed to create serverless index: %v", err)
    } else {
        fmt.Printf("Successfully created serverless index: %v", idx.Name)
    }
}
C#
using Pinecone;

var pinecone = new PineconeClient("YOUR_API_KEY");

var createIndexRequest = await pinecone.CreateIndexAsync(new CreateIndexRequest
{
    Name = "docs-example1",
    Dimension = 1536,
    Metric = MetricType.Cosine,
    Spec = new ServerlessIndexSpec
    {
        Serverless = new ServerlessSpec
        {
            Cloud = ServerlessSpecCloud.Aws,
            Region = "us-east-1",
        }
    },
    DeletionProtection = DeletionProtection.Disabled
});
curl
PINECONE_API_KEY="YOUR_API_KEY"

# Serverless index
curl -X POST "https://api.pinecone.io/indexes" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Api-Key: $PINECONE_API_KEY" \
     -H "X-Pinecone-Api-Version: 2025-04" \
     -d '{
           "name": "docs-example1",
           "vector_type": "dense",
           "dimension": 1536,
           "metric": "cosine",
           "spec": {
               "serverless": {
                   "cloud": "aws",
                   "region": "us-east-1"
               }
           },
           "tags": {
               "example": "tag"
           },
           "deletion_protection": "disabled"
         }'

# BYOC index
curl -X POST"https://api.pinecone.io/indexes" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -H "Api-Key: $PINECONE_API_KEY" \
     -H "X-Pinecone-Api-Version: 2025-04" \
     -d '{
           "name": "example-byoc-index",
           "vector_type": "dense",
           "dimension": 1536,
           "metric": "cosine",
           "spec": {
               "byoc": {
                   "environment": "aws-us-east-1-b921"
               }
           },
           "tags": {
               "example": "tag"
           },
           "deletion_protection": "disabled"
         }'
CLI
# Target the project where you'd like to create the index.
pc target -o "example-org" -p "example-project"
# Create the index.
pc index create \
  --name "docs-example1" \
  --dimension 1536 \
  --metric "cosine" \
  --cloud "aws" \
  --region "us-east-1" \
  --deletion_protection "disabled" \
  --tags "example=tag,example2=tag2"
Response
# Serverless index
{
    "name": "docs-example1",
    "vector_type": "dense",
    "metric": "cosine",
    "dimension": 1536,
    "status": {
        "ready": true,
        "state": "Ready"
    },
    "host": "example-serverless-index-govk0nt.svc.aped-4627-b74a.pinecone.io",
    "spec": {
        "serverless": {
            "region": "us-east-1",
            "cloud": "aws"
        }
    },
    "deletion_protection": "disabled",
    "tags": {
        "example": "tag"
    }
}

# BYOC index
{
    "name": "example-byoc-index",
    "vector_type": "dense",
    "metric": "cosine",
    "dimension": 1536,
    "status": {
        "ready": true,
        "state": "Ready"
    },
    "host": "example-byoc-index-govk0nt.svc.private.aped-4627-b74a.pinecone.io",
    "spec": {
        "byoc": {
            "environment": "aws-us-east-1-b921"
        }
    },
    "deletion_protection": "disabled",
    "tags": {
        "example": "tag"
    }
}

POST /indexes

  • 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 '-'.
  • dimension (body, integer) — The dimensions of the vectors to be inserted in the index.
  • metric (body, string) — The distance metric to be used for similarity search. You can use 'euclidean', 'cosine', or 'dotproduct'. If the 'vector_type' is 'sparse', the metric must be 'dotproduct'. If the vector_type is dense, the metric defaults to 'cosine'.
  • deletion_protection (body, string) — Whether deletion protection is enabled/disabled for the index.
  • 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.
  • spec (body, object, required) — The spec object defines how the index should be deployed. For serverless indexes, you set only the cloud and region where the index should be hosted. For pod-based indexes, you set the environment where the index should be hosted
  • vector_type (body, string) — The index vector type. You can use 'dense' or 'sparse'. If 'dense', the vector dimension must be specified. If 'sparse', the vector dimension should not be specified.
  • 201 — The index has been successfully created.
  • 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 — Unknown cloud or region when creating a serverless index.
  • 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