Poll template build status and incremental events
import requests
url = "https://api.13-215-85-171.sslip.io/v1/templates/builds/{build_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://api.13-215-85-171.sslip.io/v1/templates/builds/{build_id} \
--header 'Authorization: Bearer <token>'{
"build": {
"build_id": "tb_123",
"template_id": "tmpl_123",
"name": "python-dev",
"tags": [
"default"
],
"status": "error",
"build_backend": "buildkit",
"source_type": "dockerfile",
"error": "build step 2 failed",
"error_detail": {
"code": "build_error",
"message": "build step 2 failed",
"phase": "build_step",
"retryable": false,
"suggested_action": "Inspect the build logs and fix the failing step.",
"build_id": "tb_123",
"request_id": "req_123",
"step_index": 2,
"details": {
"reason": "build_step_nonzero_exit"
}
},
"canonical_ref": "acme/python-dev",
"namespace_slug": "acme",
"visibility": "private",
"created_at": "2026-03-17T00:00:00Z",
"updated_at": "2026-03-17T00:00:12Z"
},
"entries": [
{
"build_id": "tb_123",
"template_id": "tmpl_123",
"offset": 10,
"timestamp": "2026-03-17T00:00:12Z",
"kind": "error",
"level": "error",
"message": "build step 2 failed",
"error_detail": {
"code": "build_error",
"message": "build step 2 failed",
"phase": "build_step",
"retryable": false,
"suggested_action": "Inspect the build logs and fix the failing step.",
"build_id": "tb_123",
"request_id": "req_123",
"step_index": 2,
"details": {
"reason": "build_step_nonzero_exit"
}
}
}
],
"next_offset": 11
}{
"error": "Missing or invalid bearer credential",
"code": "unauthorized",
"request_id": "req_123"
}{
"error": "<string>",
"code": "invalid_request",
"error_detail": {
"code": "unauthorized",
"message": "<string>",
"phase": "auth",
"retryable": true,
"suggested_action": "<string>",
"step_index": 123,
"attempt": 123,
"max_attempts": 123,
"cache_subject": "<string>",
"build_id": "<string>",
"request_id": "<string>",
"details": {}
},
"request_id": "<string>",
"build_id": "<string>"
}{
"error": "<string>",
"code": "invalid_request",
"error_detail": {
"code": "unauthorized",
"message": "<string>",
"phase": "auth",
"retryable": true,
"suggested_action": "<string>",
"step_index": 123,
"attempt": 123,
"max_attempts": 123,
"cache_subject": "<string>",
"build_id": "<string>",
"request_id": "<string>",
"details": {}
},
"request_id": "<string>",
"build_id": "<string>"
}Templates
Poll template build status and incremental events
Firecracker-only endpoint. Returns the canonical build snapshot plus incremental structured log entries. Owned custom-template builds are caller-scoped; polling with a different authenticated caller returns not found rather than revealing build existence. Terminal failures keep the legacy top-level error string and may also include structured error_detail on both the build record and terminal kind=error log entries.
GET
/
v1
/
templates
/
builds
/
{build_id}
Poll template build status and incremental events
import requests
url = "https://api.13-215-85-171.sslip.io/v1/templates/builds/{build_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://api.13-215-85-171.sslip.io/v1/templates/builds/{build_id} \
--header 'Authorization: Bearer <token>'{
"build": {
"build_id": "tb_123",
"template_id": "tmpl_123",
"name": "python-dev",
"tags": [
"default"
],
"status": "error",
"build_backend": "buildkit",
"source_type": "dockerfile",
"error": "build step 2 failed",
"error_detail": {
"code": "build_error",
"message": "build step 2 failed",
"phase": "build_step",
"retryable": false,
"suggested_action": "Inspect the build logs and fix the failing step.",
"build_id": "tb_123",
"request_id": "req_123",
"step_index": 2,
"details": {
"reason": "build_step_nonzero_exit"
}
},
"canonical_ref": "acme/python-dev",
"namespace_slug": "acme",
"visibility": "private",
"created_at": "2026-03-17T00:00:00Z",
"updated_at": "2026-03-17T00:00:12Z"
},
"entries": [
{
"build_id": "tb_123",
"template_id": "tmpl_123",
"offset": 10,
"timestamp": "2026-03-17T00:00:12Z",
"kind": "error",
"level": "error",
"message": "build step 2 failed",
"error_detail": {
"code": "build_error",
"message": "build step 2 failed",
"phase": "build_step",
"retryable": false,
"suggested_action": "Inspect the build logs and fix the failing step.",
"build_id": "tb_123",
"request_id": "req_123",
"step_index": 2,
"details": {
"reason": "build_step_nonzero_exit"
}
}
}
],
"next_offset": 11
}{
"error": "Missing or invalid bearer credential",
"code": "unauthorized",
"request_id": "req_123"
}{
"error": "<string>",
"code": "invalid_request",
"error_detail": {
"code": "unauthorized",
"message": "<string>",
"phase": "auth",
"retryable": true,
"suggested_action": "<string>",
"step_index": 123,
"attempt": 123,
"max_attempts": 123,
"cache_subject": "<string>",
"build_id": "<string>",
"request_id": "<string>",
"details": {}
},
"request_id": "<string>",
"build_id": "<string>"
}{
"error": "<string>",
"code": "invalid_request",
"error_detail": {
"code": "unauthorized",
"message": "<string>",
"phase": "auth",
"retryable": true,
"suggested_action": "<string>",
"step_index": 123,
"attempt": 123,
"max_attempts": 123,
"cache_subject": "<string>",
"build_id": "<string>",
"request_id": "<string>",
"details": {}
},
"request_id": "<string>",
"build_id": "<string>"
}Authorizations
API key passed as Bearer token