Skip to content

Builds

View as Markdown

Image builds (Railpack, Dockerfile or a pulled image) with scans, SBOM and signatures.

Operation Method and path
Get a build GET /v1/builds/{build_id}
Build logs GET /v1/builds/{build_id}/logs
Cancel a running build POST /v1/builds/{build_id}/cancel
GET /v1/builds/{build_id}
  • Operation: getBuild
  • Scopes: projects:read

Parameters

Name In Type Description
build_id * path string

Responses

Status Meaning Body
200 OK OK. Build

Errors: 400, 401, 403, 404, 429, 500, as problem+json with a stable code.

Example

Terminal window
curl https://api.guv.dev/v1/builds/bui_01jbx2m9k7q4r8t5v6w3y0z1pr \
-H "Authorization: Bearer $GUV_TOKEN"

Example response

{
"id": "bld_01jbx2m9k7q4r8t5v6w3y0z1pr",
"project_id": "string",
"environment_id": "string",
"service_id": "string",
"deployment_id": "string",
"status": "queued",
"builder": "railpack",
"detected": {
"language": "node",
"language_version": "22",
"framework": "nextjs",
"summary": "We'll build a Next.js app with Node 22."
},
"commit": {
"sha": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678",
"branch": "string",
"message": "string",
"author": "string",
"url": "https://guv.dev/"
},
"image": {
"digest": "string",
"size_bytes": 1,
"signed": false,
"sbom_url": "string",
"provenance_url": "string"
},
"scan": {
"secrets_found": 1,
"secrets_in_bundle": 1,
"vulnerabilities": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"kev": 1
},
"blocked": false,
"block_reason": "string"
},
"cache_hit_ratio": 0.5,
"created_at": "2026-10-22T13:05:00Z",
"started_at": "2026-10-22T13:05:00Z",
"finished_at": "2026-10-22T13:05:00Z",
"duration_ms": 1
}
GET /v1/builds/{build_id}/logs

JSON page by default; Accept: text/event-stream follows the build live.

  • Operation: getBuildLogs
  • Scopes: logs:read

Parameters

Name In Type Description
build_id * path string
follow query boolean

Responses

Status Meaning Body
200 OK OK. LogQueryResult

Errors: 400, 401, 403, 404, 429, 500, as problem+json with a stable code.

Example

Terminal window
curl https://api.guv.dev/v1/builds/bui_01jbx2m9k7q4r8t5v6w3y0z1pr/logs \
-H "Authorization: Bearer $GUV_TOKEN"

Example response

{
"lines": [
{
"id": "lg_9f8e7d6c5b",
"timestamp": "2026-10-23T14:04:02.123Z",
"source": "runtime",
"level": "error",
"message": "TypeError: Cannot read properties of undefined (reading 'id')",
"service": {
"id": "svc_01jbx2m9k7q4r8t5v6w3y0z1sv",
"name": "web"
},
"environment": "production",
"deployment_id": "dep_01jbx2m9k7q4r8t5v6w3y0z1dp",
"replica": "web-1",
"http": null,
"attributes": {},
"redacted": false
}
],
"next_cursor": "string",
"has_more": false,
"query": "string",
"dropped_lines": 1
}
POST /v1/builds/{build_id}/cancel
  • Operation: cancelBuild
  • Scopes: projects:write
  • Idempotency-Key: required; supports ?dry_run=true

Parameters

Name In Type Description
build_id * path string

Responses

Status Meaning Body
200 OK OK. With dry_run=true: a Plan (application/vnd.guv.plan+json) and nothing changes. Build

Errors: 400, 401, 403, 404, 409, 422, 429, 500, as problem+json with a stable code.

Example

Terminal window
curl -X POST https://api.guv.dev/v1/builds/bui_01jbx2m9k7q4r8t5v6w3y0z1pr/cancel \
-H "Authorization: Bearer $GUV_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"

Example response

{
"id": "bld_01jbx2m9k7q4r8t5v6w3y0z1pr",
"project_id": "string",
"environment_id": "string",
"service_id": "string",
"deployment_id": "string",
"status": "queued",
"builder": "railpack",
"detected": {
"language": "node",
"language_version": "22",
"framework": "nextjs",
"summary": "We'll build a Next.js app with Node 22."
},
"commit": {
"sha": "a1b2c3d4e5f60718293a4b5c6d7e8f9012345678",
"branch": "string",
"message": "string",
"author": "string",
"url": "https://guv.dev/"
},
"image": {
"digest": "string",
"size_bytes": 1,
"signed": false,
"sbom_url": "string",
"provenance_url": "string"
},
"scan": {
"secrets_found": 1,
"secrets_in_bundle": 1,
"vulnerabilities": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 1,
"kev": 1
},
"blocked": false,
"block_reason": "string"
},
"cache_hit_ratio": 0.5,
"created_at": "2026-10-22T13:05:00Z",
"started_at": "2026-10-22T13:05:00Z",
"finished_at": "2026-10-22T13:05:00Z",
"duration_ms": 1
}