Skip to content

Get Deployment Logs

GET
/apps/{app_id}/deployments/{deployment_id}/logs

Why a build failed.

Returns every step of the build pod in the order Kubernetes runs them — fetch, scan-source, build, scan-image, then push — because “which step” is most of the answer. A step that has not started is omitted rather than returned empty, so a build in progress reports what exists so far.

An empty containers list means the build pod is gone or was never created. Build pods are reaped an hour after they finish (ttlSecondsAfterFinished), so logs for an older deployment are genuinely unavailable rather than hidden; last_error_sanitized on the deployment is what survives.

redacted is always true and means graph8’s credential patterns were applied. It is NOT a claim the output is safe to publish: this is a customer’s own build output and it can print a secret in a shape no pattern matches.

Authorizations

Parameters

Path Parameters

app_id
required
string
deployment_id
required
string

Query Parameters

tail_lines

Lines per build step, newest last.

integer
default: 200 >= 1 <= 2000

Lines per build step, newest last.

Header Parameters

X-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
required

Logs for one app or one of its builds.

redacted is always true and means only that graph8’s credential patterns were applied. It is NOT a claim the output is safe to publish: these are a customer’s own build and application logs, and an application can print a secret in a shape no pattern matches.

object
app_id
required
string
containers
Array<object>

One container’s tail of output.

A build is five steps in one pod (fetch, scan-source, build, scan-image, push), so a single flat blob would leave a caller unable to say which step failed. kind separates the four init steps from the one container, which is the ordering Kubernetes actually runs them in.

object
container
required
string
kind
required
string
Allowed values: init container
pod
required
string
text
required
string
truncated

The tail hit the per-container byte cap. Earlier output exists and was not returned.

boolean
deployment_id
Any of:
string
namespace
required

The app’s own Kubernetes namespace. Derived from the app id, never supplied.

string
redacted
boolean
default: true
tail_lines
required

Lines requested per container, after clamping to the server maximum.

integer
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string