Logs
Build log ingestion and retrieval — append, paginated fetch, SSE streaming. Live build, runner and release changes over SSE. Read-only audit trail of all user and system actions.
Returns a paginated, filterable list of audit log entries recording user and system actions. Owner and admin roles only.
Authorization
bearer_auth In: header
Query Parameters
Page size (default 50, max 200)
int64Page offset (default 0)
int64Filter by actor user ID
Filter by action string
Filter by resource type
Start of time range (unix timestamp)
int64End of time range (unix timestamp)
int64Sort by created_at, actor_email, action, or resource_type
Sort direction: asc or desc
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/audit-logs"{ "entries": [ { "action": "string", "actor_email": "string", "actor_id": "string", "created_at": 0, "details": "string", "id": 0, "resource_id": "string", "resource_type": "string" } ], "total": 0}Returns paginated historical build logs.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Query Parameters
Return logs after this sequence
int64Page size
int64Response Body
application/json
curl -X GET "https://example.com/v1/builds/string/logs"{ "logs": [ { "content": "string", "sequence": 0, "stream": "stdout" } ], "total": 0}Server-sent event stream of build logs. Requires a short-lived streaming
token obtained from POST /v1/builds/{build_id}/stream-token.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Query Parameters
Short-lived streaming token; omit when bearer authentication is used
Response Body
text/event-stream
application/json
curl -X GET "https://example.com/v1/builds/string/logs/stream""string"Exchanges a session token for a short-lived (5 min) streaming token suitable for use in SSE query parameters.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
curl -X POST "https://example.com/v1/builds/string/stream-token"{ "expires_at": 0, "token": "string"}Server-sent event stream of build, runner and release changes, so
clients can refresh without polling. Every connection starts with a
ready event (EventStreamReady). Then: build (BuildChangedEvent),
release (ReleaseChangedEvent), runner (RunnerChangedEvent, only
for users who can read runners), resync (EventStreamResync, events
were dropped and clients should refetch) and done (the stream ends,
data is the reason). Build and release events are limited to projects
the caller can read. Events are not replayed, so a client that
reconnects should refetch once on ready. Comment keepalives are sent
every 15 seconds.
Authorization
bearer_auth In: header
Query Parameters
Only send build and release events for this project
Response Body
text/event-stream
application/json
application/json
application/json
curl -X GET "https://example.com/v1/events""string"Runner appends log chunks to a build. Max 10,000 lines per build, 4KB per line.
Authorization
bearer_auth In: header
Path Parameters
Runner ID
Build/Job ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/logs" \ -H "Content-Type: application/json" \ -d '{ "chunks": [ { "content": "string", "sequence": 0, "stream": "stdout" } ] }'{ "appended": 0}