Pinecone Go SDK
Install and use the Pinecone Go SDK to manage indexes and namespaces, upsert vectors, run semantic search, and call the Admin and Inference APIs from Go.
Requirements
Section titled “Requirements”The Pinecone Go SDK requires a Go version with modules support.
SDK versions
Section titled “SDK versions”SDK versions are pinned to specific API versions. When a new API version is released, a new version of the SDK is also released.
The mappings between API versions and Go SDK versions are as follows:
| API version | SDK version |
|---|---|
2026-04 |
v6.x |
2025-10 |
v5.x |
2025-04 |
v4.x |
2025-01 |
v3.x |
2024-10 |
v2.x |
2024-07 |
v1.x |
2024-04 |
v0.x |
When a new stable API version is released, you should upgrade your SDK to the latest version to ensure compatibility with the latest API changes.
Install
Section titled “Install”To install the latest version of the Go SDK, add a dependency to the current module:
go get github.com/pinecone-io/go-pinecone/v6/pineconeTo install a specific version of the Go SDK, run the following command:
go get github.com/pinecone-io/go-pinecone/v6/pinecone@<version>To check your SDK version, run the following command:
go list -u -m all | grep go-pineconeUpgrade
Section titled “Upgrade”Each major version carries its version number in the module path, so crossing a major requires updating the import path in every file that uses the SDK. For example, moving from v4 to v6 means changing:
// before
import "github.com/pinecone-io/go-pinecone/v4/pinecone"
// after
import "github.com/pinecone-io/go-pinecone/v6/pinecone"Apart from the module path, v5.0.0 and v6.0.0 are backward compatible with the release lines before them.
If you already have the Go SDK, upgrade to the latest version as follows:
go get -u github.com/pinecone-io/go-pinecone/v6/pinecone@latestInitialize
Section titled “Initialize”Once installed, you can import the SDK and then use an API key to initialize a client instance:
package main
import (
"context"
"log"
"github.com/pinecone-io/go-pinecone/v6/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)
}
} To manage organizations, projects, API keys, and role-based access control, initialize an AdminClient with service account credentials instead:
package main
import (
"context"
"log"
"os"
"github.com/pinecone-io/go-pinecone/v6/pinecone"
)
func main() {
ctx := context.Background()
adminClient, err := pinecone.NewAdminClientWithContext(ctx, pinecone.NewAdminClientParams{
ClientId: os.Getenv("PINECONE_CLIENT_ID"),
ClientSecret: os.Getenv("PINECONE_CLIENT_SECRET"),
})
if err != nil {
log.Fatalf("Failed to create AdminClient: %v", err)
}
}