planetscale/planetscale-go

Go client library to access the PlanetScale API

129

stars

768

commits

Go

primary language

Sep 10, 2026

updated

www.planetscale.com
database
go
mysql
planetscale
vitess

README

planetscale-go Go Reference Build status

Go package to access the PlanetScale API.

[!NOTE] This repository is a read-only mirror. The client is developed in the pscale CLI repository at internal/planetscale/ and synced here automatically, so external users of this module keep getting updates through the usual tagged releases.

The module remains fully supported: keep importing github.com/planetscale/planetscale-go/planetscale as before. However, please do not open pull requests that change the client code here, since the next sync would overwrite them. Code contributions belong in the cli repository.

Install

go get github.com/planetscale/planetscale-go/planetscale

Usage

Here is an example application using the PlanetScale Go client. You can create and manage your service tokens via our pscale CLI with the pscale service-token subcommand.

package main

import (
	"context"
	"log"
	"os"
	"time"

	"github.com/planetscale/planetscale-go/planetscale"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	// Create a new PlanetScale API client with the given service token.
	client, err := planetscale.NewClient(
		planetscale.WithServiceToken("token-id", os.Getenv("PLANETSCALE_TOKEN")),
	)
	if err != nil {
		log.Fatalf("failed to create client: %v", err)
	}

	// Create a new database.
	_, err = client.Databases.Create(ctx, &planetscale.CreateDatabaseRequest{
		Organization: "my-org",
		Name:         "my-awesome-database",
		Notes:        "This is a test DB created via the planetscale-go API library",
	})
	if err != nil {
		log.Fatalf("failed to create database: %v", err)
	}

	// List all databases for the given organization.
	databases, err := client.Databases.List(ctx, &planetscale.ListDatabasesRequest{
		Organization: "my-org",
	})
	if err != nil {
		log.Fatalf("failed to list databases: %v", err)
	}

	log.Printf("found %d databases:", len(databases))
	for _, db := range databases {
		log.Printf("  - %q: %s", db.Name, db.Notes)
	}

	// Delete a database.
	_, err = client.Databases.Delete(ctx, &planetscale.DeleteDatabaseRequest{
		Organization: "my-org",
		Database:     "my-awesome-database",
	})
	if err != nil {
		log.Fatalf("failed to delete database: %v", err)
	}
}

Contributors

iheanyi

212 commits

nickvanw

114 commits

fatih

79 commits

notfelineit

68 commits

planetscale/planetscale-go

Go client library to access the PlanetScale API

129

stars

768

commits

Go

primary language

Sep 10, 2026

updated

www.planetscale.com
database
go
mysql
planetscale
vitess

README

planetscale-go Go Reference Build status

Go package to access the PlanetScale API.

[!NOTE] This repository is a read-only mirror. The client is developed in the pscale CLI repository at internal/planetscale/ and synced here automatically, so external users of this module keep getting updates through the usual tagged releases.

The module remains fully supported: keep importing github.com/planetscale/planetscale-go/planetscale as before. However, please do not open pull requests that change the client code here, since the next sync would overwrite them. Code contributions belong in the cli repository.

Install

go get github.com/planetscale/planetscale-go/planetscale

Usage

Here is an example application using the PlanetScale Go client. You can create and manage your service tokens via our pscale CLI with the pscale service-token subcommand.

package main

import (
	"context"
	"log"
	"os"
	"time"

	"github.com/planetscale/planetscale-go/planetscale"
)

func main() {
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()

	// Create a new PlanetScale API client with the given service token.
	client, err := planetscale.NewClient(
		planetscale.WithServiceToken("token-id", os.Getenv("PLANETSCALE_TOKEN")),
	)
	if err != nil {
		log.Fatalf("failed to create client: %v", err)
	}

	// Create a new database.
	_, err = client.Databases.Create(ctx, &planetscale.CreateDatabaseRequest{
		Organization: "my-org",
		Name:         "my-awesome-database",
		Notes:        "This is a test DB created via the planetscale-go API library",
	})
	if err != nil {
		log.Fatalf("failed to create database: %v", err)
	}

	// List all databases for the given organization.
	databases, err := client.Databases.List(ctx, &planetscale.ListDatabasesRequest{
		Organization: "my-org",
	})
	if err != nil {
		log.Fatalf("failed to list databases: %v", err)
	}

	log.Printf("found %d databases:", len(databases))
	for _, db := range databases {
		log.Printf("  - %q: %s", db.Name, db.Notes)
	}

	// Delete a database.
	_, err = client.Databases.Delete(ctx, &planetscale.DeleteDatabaseRequest{
		Organization: "my-org",
		Database:     "my-awesome-database",
	})
	if err != nil {
		log.Fatalf("failed to delete database: %v", err)
	}
}

Contributors

iheanyi

212 commits

nickvanw

114 commits

fatih

79 commits

notfelineit

68 commits

Languages

Go

100.0%