Builds
Build lifecycle — queue, list, detail, cancel.
Returns builds, optionally filtered by project, pipeline, status, branch, trigger, actor, or creation time, or searched with q.
Authorization
bearer_auth In: header
Query Parameters
Page size (default 50)
int64Page offset (default 0)
int64Filter by project
Filter by pipeline
Filter by one status or up to 9 comma-separated statuses
Filter by exact branch name
Filter by one or more comma-separated trigger kinds: manual, api, schedule, push, pull_request, or tag_push. The last three are webhook events.
Filter by exact trigger actor (the user email for manual builds, the SCM login for webhook builds). At most 320 characters.
Only builds created at or after this Unix time in seconds
int64Only builds created before this Unix time in seconds. Must be later than created_after.
int64Search builds, case-insensitively, by build number (with or without #), part of the branch, the start of the commit SHA, or part of the pipeline or project name. At most 200 characters.
Sort by created_at, status, project_name, pipeline_name, or branch
Sort direction: asc or desc
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds"{ "builds": [ { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 } ], "total": 0}Distinct trigger actors on builds the caller can see, most recently active first, for the builds list's actor filter.
Authorization
bearer_auth In: header
Query Parameters
Only actors of this project's builds
Case-insensitive part of the actor. At most 200 characters.
Maximum actors (default 50, at most 200)
int64Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/actors"{ "actors": [ "string" ]}Success rate, run time, queue wait, a daily trend, per-project health and the most-failing pipelines for builds the caller can see.
Authorization
bearer_auth In: header
Query Parameters
Window length in days: 7 (default), 14, 30 or 90
int64Limit to one project
Caller's UTC offset for daily buckets, -720 to 840 (default 0)
int64Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/insights"{ "daily": [ { "day_start": 0, "failed": 0, "other": 0, "p50_duration_seconds": 0, "succeeded": 0 } ], "duration": { "p50_seconds": 0, "p90_seconds": 0, "samples": 0 }, "failing_pipelines": [ { "current_streak": 0, "failures": 0, "finished": 0, "last_failed_at": 0, "last_failed_build_id": "string", "last_failed_build_number": 0, "pipeline_id": "string", "pipeline_name": "string", "project_id": "string", "project_name": "string" } ], "previous_duration": { "p50_seconds": 0, "p90_seconds": 0, "samples": 0 }, "previous_totals": { "canceled": 0, "expired": 0, "failed": 0, "finished": 0, "succeeded": 0, "success_rate": 0, "timed_out": 0 }, "projects": [ { "duration": { "p50_seconds": 0, "p90_seconds": 0, "samples": 0 }, "last_finished_at": 0, "last_status": "queued", "project_id": "string", "project_name": "string", "totals": { "canceled": 0, "expired": 0, "failed": 0, "finished": 0, "succeeded": 0, "success_rate": 0, "timed_out": 0 } } ], "queue": { "awaiting_approval": 0, "oldest_waiting_since": 0, "running": 0, "waiting": 0 }, "queue_wait": { "p50_seconds": 0, "p90_seconds": 0, "samples": 0 }, "since": 0, "totals": { "canceled": 0, "expired": 0, "failed": 0, "finished": 0, "succeeded": 0, "success_rate": 0, "timed_out": 0 }, "window_days": 0}Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/string"{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }, "events": [ { "actor": "string", "build_id": "string", "created_at": 0, "from_status": "string", "id": "string", "reason": "string", "to_status": "string" } ], "retryable_steps": [ "string" ]}Returns the dart analyze counts and most severe diagnostics of a
build, with the baseline build on the base branch it compares with.
analysis is null when the build reported none.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/string/analysis"{ "analysis": null, "base_branch": "string", "baseline": null}Releases a build that is waiting for approval to the runner queue. Requires the project maintainer role.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Request Body
application/json
Optional note for the audit log
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/approve" \ -H "Content-Type: application/json" \ -d '{}'{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Cancels a queued or running build.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/cancel"{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Notes testers sent about this build, oldest first. Needs read access to the build's project.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/string/feedback"{ "feedback": [ { "app_version": "string", "artifact_id": "string", "author_email": "string", "author_name": "string", "build_id": "string", "created_at": 0, "device": "string", "has_screenshot": true, "id": "string", "message": "string", "os_version": "string" } ]}Files a tester's note against a build, with optional device, OS
version, app version and a PNG, JPEG or WebP screenshot of up to
5 MiB. Anyone who can install the build's artifacts can send one. The
note shows on the build's timeline and is sent to the project's
notification channels as a qa_feedback event. Each person can send
10 notes per 10 minutes.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/feedback" \ -H "Content-Type: application/json" \ -d '{ "message": "string" }'{ "app_version": "string", "artifact_id": "string", "author_email": "string", "author_name": "string", "build_id": "string", "created_at": 0, "device": "string", "has_screenshot": true, "id": "string", "message": "string", "os_version": "string"}Returns the screenshot attached to a feedback note, with the image type detected from its bytes. Needs read access to the build's project.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Feedback ID
Response Body
image/*
application/json
application/json
curl -X GET "https://example.com/v1/builds/string/feedback/string/screenshot""string"Cancels a build that is waiting for approval. Requires the project maintainer role.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Request Body
application/json
Optional reason, shown on the build
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/reject" \ -H "Content-Type: application/json" \ -d '{}'{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Creates a new build cloning the original build's config_snapshot, branch, and commit_sha.
Authorization
bearer_auth In: header
Path Parameters
Source build ID to re-run
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/rerun"{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Queues a new build that runs one store upload of a finished build again,
plus any later upload that has not succeeded, with the artifacts the
build already stored. Only steps listed in the build's
retryable_steps can be retried; other steps need a full re-run.
Authorization
bearer_auth In: header
Path Parameters
Build whose step to retry
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/builds/string/retry-step" \ -H "Content-Type: application/json" \ -d '{ "step": "string" }'{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Returns the test summary and failed tests of a build. Each failure carries its outcome in recent test-reporting builds of the same pipeline and whether it looks flaky.
Authorization
bearer_auth In: header
Path Parameters
Build ID
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/builds/string/tests"{ "failures": [ { "duration_ms": 0, "flaky": true, "history": [ { "build_id": "string", "build_number": 0, "status": "string" } ], "message": "string", "name": "string", "stack_trace": "string", "step": "string", "suite": "string" } ], "history_window": 0, "summary": null}Queues a new build for the specified project.
Authorization
bearer_auth In: header
Path Parameters
Project ID
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/projects/string/builds" \ -H "Content-Type: application/json" \ -d '{ "pipeline_id": "string" }'{ "build": { "approval": null, "branch": "string", "build_number": 0, "changelog": "string", "commit_sha": "string", "config_snapshot": {}, "context": null, "created_at": 0, "exit_code": 0, "finished_at": 0, "id": "string", "pipeline_id": "string", "project_id": "string", "queued_at": 0, "retry_steps": [ "string" ], "runner_id": "string", "runner_policy_block_reason": null, "source_build_id": "string", "started_at": 0, "status": "queued", "step_results": [ { "duration_ms": 0, "exit_code": 0, "finished_at": 0, "name": "string", "publish_from_file": true, "started_at": 0, "status": "string" } ], "trigger_actor": "string", "trigger_event": "string", "trigger_ref": "string", "trigger_type": "manual", "updated_at": 0 }}Authorization
bearer_auth In: header
Path Parameters
Project ID
Query Parameters
Pipeline ID
Target branch
Target commit
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/projects/string/builds/changelog-preview?pipeline_id=string"{ "base_commit": "string", "markdown": "string", "target_commit": "string"}Runner reports the dart analyze --format=json summary of a build. A
later report replaces an earlier one. Only accepted while the build
runs.
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.
The summary of dart analyze --format=json a runner reports after the
build's steps.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/analysis" \ -H "Content-Type: application/json" \ -d '{ "counts": { "errors": 0, "infos": 0, "warnings": 0 }, "diagnostics": [ { "code": "string", "column": 0, "file": "string", "line": 0, "message": "string", "severity": "error" } ] }'{ "ok": true}Runner reports the tests parsed from one build step. Reports from several steps of a build add up. Only accepted while the build runs.
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.
Test results parsed by the runner from one build step.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/runners/string/jobs/string/test-results" \ -H "Content-Type: application/json" \ -d '{ "duration_ms": 0, "failed": 0, "failures": [ { "name": "string", "suite": "string" } ], "passed": 0, "skipped": 0, "step": "string", "total": 0 }'{ "ok": true}