Skip to content
Get started

Stream build events (SSE)

client.Builds.Events(ctx, id, query) (*BuildEvent, error)
get/builds/{id}/events

Streams build events as Server-Sent Events. Events include:

  • log: Build log lines with timestamp and content
  • status: Build status changes (queued→building→pushing→ready/failed)
  • heartbeat: Keep-alive events sent every 30s to prevent connection timeouts

Returns existing logs as events, then continues streaming if follow=true.

ParametersExpand Collapse
id string
query BuildEventsParams
Follow param.Field[bool]optional

Continue streaming new events after initial output

ReturnsExpand Collapse
type BuildEvent struct{…}
Timestamp Time

Event timestamp

formatdate-time
Type BuildEventType

Event type

Accepts one of the following:
const BuildEventTypeLog BuildEventType = "log"
const BuildEventTypeStatus BuildEventType = "status"
const BuildEventTypeHeartbeat BuildEventType = "heartbeat"
Content stringoptional

Log line content (only for type=log)

Status BuildStatusoptional

New build status (only for type=status)

Accepts one of the following:
const BuildStatusQueued BuildStatus = "queued"
const BuildStatusBuilding BuildStatus = "building"
const BuildStatusPushing BuildStatus = "pushing"
const BuildStatusReady BuildStatus = "ready"
const BuildStatusFailed BuildStatus = "failed"
const BuildStatusCancelled BuildStatus = "cancelled"
Stream build events (SSE)
package main

import (
  "context"
  "fmt"

  "github.com/kernel/hypeman-go"
  "github.com/kernel/hypeman-go/option"
)

func main() {
  client := hypeman.NewClient(
    option.WithAPIKey("My API Key"),
  )
  stream := client.Builds.EventsStreaming(
    context.TODO(),
    "id",
    hypeman.BuildEventsParams{

    },
  )
  if stream.Err() != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", buildEvent.Timestamp)
}
Returns Examples