Meet API Docs Dashboard
On this page

Go SDK

github.com/respiresoft/meet-go, standard library only, a context on every call.

bash
go get github.com/respiresoft/meet-go

Publishing. The SDK packages are not on npm, PyPI, Packagist or the Go module proxy yet. Until they are, the REST API works from any language over plain HTTPS: every REST reference page has a curl example.

For a task by task start see the server quick start.

Reference from the package README#

Server SDK for the Meet API (rooms, meeting tokens, live control, sessions, transcripts, recordings, webhooks, usage). Go 1.23+, standard library only, typed.

Not published. The module path github.com/respiresoft/meet-go is a placeholder until the owner publishes the module. Until then, copy the folder or use a replace directive.

sh
go get github.com/respiresoft/meet-go
go
c, err := meet.New(meet.WithAPIKey(os.Getenv("MEET_API_KEY"))) // mk_test_... or mk_live_...
room, err := c.Rooms.Create(ctx, meet.RoomCreate{Name: "order-1042", Privacy: meet.Private})
tok, err := c.Rooms.CreateToken(ctx, room.Name, meet.TokenCreate{Name: "Ann", Role: meet.RoleHost, TTL: 3600})
// browser: embed("#meeting", { url: room.URL, token: tok.Token })
it := c.Rooms.Iter(ctx, meet.ListParams{})   // every page, automatically
for it.Next() { fmt.Println(it.Item().Name) }
if err := it.Err(); err != nil { /* ... */ }

Surface#

c.Whoami(ctx) project and mode of the key
c.Rooms Create List Iter Get Update Delete CreateToken CheckToken Presence End Eject Mute MuteAll Message UpdateLive
c.Sessions List Iter Get Transcript TranscriptIter TranscriptText(id, "txt"|"vtt"|"srt", lang) Chat ChatIter
c.Recordings List Iter Get DownloadLink Delete
c.Webhooks List Iter Create Get Update Delete Test RollSecret Deliveries DeliveriesIter ListEvents EventsIter GetEvent Redeliver
c.Usage Get Estimate
meet.VerifyWebhook(raw, header, secret, opts) Meet-Signature check, no client needed; the error matches meet.ErrSignature
meet.ConstructEvent(raw, header, secret) verify, then parse into *meet.WebhookEvent
meet.SignWebhook(raw, secret, time) make a header, for tests of your own receiver
meet.VerifyToken(ctx, token, opts) EdDSA check of a meeting token with crypto/ed25519; set opts.JWKS to stay offline; the error matches meet.ErrToken

Webhook receiver and token endpoint with net/http (verify the raw body, never a re-encoded struct):

go
http.HandleFunc("/meet-webhook", func(w http.ResponseWriter, r *http.Request) {
	raw, _ := io.ReadAll(http.MaxBytesReader(w, r.Body, 1<<20))
	ev, err := meet.ConstructEvent(raw, r.Header.Get(meet.SignatureHeader), os.Getenv("MEET_WEBHOOK_SECRET"))
	if err != nil {
		http.Error(w, "bad signature", http.StatusBadRequest)
		return
	}
	log.Printf("event %s", ev.Type)
	w.WriteHeader(http.StatusNoContent)
})

http.HandleFunc("/join", func(w http.ResponseWriter, r *http.Request) {
	tok, err := c.Rooms.CreateToken(r.Context(), r.URL.Query().Get("room"),
		meet.TokenCreate{Name: r.URL.Query().Get("name"), Role: meet.RoleParticipant, TTL: 3600})
	if err != nil {
		http.Error(w, "could not make a token", http.StatusBadGateway)
		return
	}
	json.NewEncoder(w).Encode(map[string]string{"url": tok.URL, "token": tok.Token})
})

Tests#

sh
export GOCACHE=/data/fastuser/go-build GOTMPDIR=/data/fastuser/tmp
go test ./... && go vet ./...