[!IMPORTANT] Update, September 2026:
This codebase is not being actively maintained by Supabase or the community, but it's not the end of the road... We're busy building an official Supabase SDK for Go that will make this repository and the module it publishes obsolete. This thread has more information, as well as providing a venue for discussion in the meantime.
This library is a Golang client for the Supabase Storage API. It's a collection of helper functions that help you manage your buckets through the API.
go get github.com/supabase-community/storage-go
package main
import (
"fmt"
"log"
"os"
storage_go "github.com/supabase-community/storage-go"
)
func main() {
storageClient := storage_go.NewClient("https://<project-reference-id>.supabase.co/storage/v1", "<project-secret-api-key>", nil)
}
result, err := storageClient.CreateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})
result, err := storageClient.GetBucket("bucket-id")
result, err := storageClient.UpdateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})
result, err := storageClient.EmptyBucket("bucket-id")
result, err := storageClient.DeleteBucket("bucket-id")
result, err := storageClient.ListBuckets("bucket-id")
fileBody := ... // load your file here
result, err := storageClient.UploadFile("test", "test.txt", fileBody)
Note: The
uploadmethod also accepts a map of optional parameters.
result, err := storageClient.DownloadFile("bucket-id", "test.txt")
result, err := storageClient.ListFiles("bucket-id", "", storage_go.FileSearchOptions{
Limit: 10,
Offset: 0,
SortByOptions: storage_go.SortBy{
Column: "",
Order: "",
},
})
Note: The
listmethod also accepts a map of optional parameters.
fileBody := ... // load your file here
result, err := storageClient.UpdateFile("test", "test.txt", file)
result, err := storageClient.MoveFile("test", "test.txt", "random/test.txt")
result, err := storageClient.RemoveFile("test", []string{"book.pdf"})
const expireIn = 60
result, err := storageClient.CreateSignedUrl("test", "test.mp4", expireIn)
result, err := storageClient.GetPublicUrl("test", "book.pdf")
fileBody := ... // load your file here
resp, err := storageClient.CreateSignedUploadUrl("test", "test.txt")
res, err := storageClient.UploadToSignedUrl(resp.Url, file)
Overall
Maintained
Code review
Latest release
Releases this year
[!IMPORTANT] Update, September 2026:
This codebase is not being actively maintained by Supabase or the community, but it's not the end of the road... We're busy building an official Supabase SDK for Go that will make this repository and the module it publishes obsolete. This thread has more information, as well as providing a venue for discussion in the meantime.
This library is a Golang client for the Supabase Storage API. It's a collection of helper functions that help you manage your buckets through the API.
go get github.com/supabase-community/storage-go
package main
import (
"fmt"
"log"
"os"
storage_go "github.com/supabase-community/storage-go"
)
func main() {
storageClient := storage_go.NewClient("https://<project-reference-id>.supabase.co/storage/v1", "<project-secret-api-key>", nil)
}
result, err := storageClient.CreateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})
result, err := storageClient.GetBucket("bucket-id")
result, err := storageClient.UpdateBucket("bucket-id", storage_go.BucketOptions{
Public: true,
})
result, err := storageClient.EmptyBucket("bucket-id")
result, err := storageClient.DeleteBucket("bucket-id")
result, err := storageClient.ListBuckets("bucket-id")
fileBody := ... // load your file here
result, err := storageClient.UploadFile("test", "test.txt", fileBody)
Note: The
uploadmethod also accepts a map of optional parameters.
result, err := storageClient.DownloadFile("bucket-id", "test.txt")
result, err := storageClient.ListFiles("bucket-id", "", storage_go.FileSearchOptions{
Limit: 10,
Offset: 0,
SortByOptions: storage_go.SortBy{
Column: "",
Order: "",
},
})
Note: The
listmethod also accepts a map of optional parameters.
fileBody := ... // load your file here
result, err := storageClient.UpdateFile("test", "test.txt", file)
result, err := storageClient.MoveFile("test", "test.txt", "random/test.txt")
result, err := storageClient.RemoveFile("test", []string{"book.pdf"})
const expireIn = 60
result, err := storageClient.CreateSignedUrl("test", "test.mp4", expireIn)
result, err := storageClient.GetPublicUrl("test", "book.pdf")
fileBody := ... // load your file here
resp, err := storageClient.CreateSignedUploadUrl("test", "test.txt")
res, err := storageClient.UploadToSignedUrl(resp.Url, file)
Overall
Maintained
Code review
Latest release
Releases this year