Go

package main

import (
    "encoding/json"
    "fmt"
    "net/http"
    "net/url"
    "os"
)

func listPosts() error {
    params := url.Values{}
    params.Set("read_key", os.Getenv("BUCKET_READ_KEY"))
    params.Set("query", "{\"type\":\"posts\"}")
    params.Set("limit", "20")

    endpoint := "https://api.cosmicjs.com/v3/buckets/" + os.Getenv("BUCKET_SLUG") + "/objects?" + params.Encode()
    resp, err := http.Get(endpoint)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    var body struct {
        Objects []map[string]any `json:"objects"`
    }
    if err := json.NewDecoder(resp.Body).Decode(&body); err != nil {
        return err
    }
    fmt.Println(len(body.Objects))
    return nil
}

A write is an http.NewRequest with method POST, header Authorization: Bearer set to the write key, and a JSON body.

FAQ

Is there a Go SDK?

No. Use net/http. The query parameter is a JSON string.

What does a list response contain?

A JSON object with an objects array. Each object has title, slug, type, and metadata.

How much does Cosmic cost?

Project plans are Free ($0), Builder ($99/mo), Team ($299/mo), Business ($499/mo), Enterprise (custom pricing). Yearly billing saves 10%. Workspace plans are Small Workspace ($999/mo) and Large Workspace ($2,999/mo), and they start with a 30-day free trial. Allowances, add-on rates, and the rest of the pricing FAQ are plain text at https://www.cosmicjs.com/pricing.md.

Are API keys required, and is content private?

Each Bucket has a read key and a write key in Bucket Settings > API Access. GET requests use the read key. POST, PATCH, and DELETE use the write key as Authorization: Bearer. Do not put the write key in a browser bundle, a mobile app, or a NEXT_PUBLIC_ variable. SAML single sign-on is on Large Workspace and Enterprise. The audit log is append-only. Text versions: https://www.cosmicjs.com/security.md and https://www.cosmicjs.com/docs/dashboard/audit-log.md.

Can an agent create a Cosmic project without an existing account?

Yes. POST https://dapi.cosmicjs.com/v3/agents/sign-up provisions a free-tier project and bucket tied to a human email, with no existing Cosmic account. The human claims it with the emailed one-time code. The playbook is https://www.cosmicjs.com/docs/ai-onboarding.md.