Update a check run
Change a check run reported through the API, by id (cr_…).
PATCH
/repos/{owner}/{name}/check-runs/{id}Fields left out stay as they are; output annotations are added to the ones it has (at most 1000 in all); actions, when given, replace its buttons. Giving a conclusion completes it. Publishes check_run.completed when it completes. A g1t Actions job’s check run is its workflow’s and cannot be changed.
Annotations given here are added to the ones the run has, at most 50 a request and 1000 in all.
- Authentication: Required. Send an access token as
Authorization: Bearer. - MCP tool:
workflowwithactionupdate_check_run, and the same inputs - Scope: An access token needs
checks:write.
Path parameters
Section titled “Path parameters”| Name | Type | Required | Description |
|---|---|---|---|
owner |
string | Yes | The workspace that owns the repository. |
name |
string | Yes | The repository’s name. |
id |
string | Yes | The check run’s id: cr_…, or a g1t Actions job’s job_… |
Body parameters
Section titled “Body parameters”Send a JSON object. Names are snake_case, as in responses; the camelCase spelling is accepted too.
| Name | Type | Required | Description |
|---|---|---|---|
name |
string | No | The check’s name, at most 100 characters, such as lint or coverage. |
status |
string | No | Where it is: queued, in_progress or completed. One of queued, in_progress, completed. |
conclusion |
string | No | How it came out; giving one completes it. One of success, failure, neutral, cancelled, skipped, timed_out, action_required. |
started_at |
string | No | When it started, RFC 3339. |
completed_at |
string | No | When it completed, RFC 3339. |
details_url |
string | No | Your page for it, http or https. |
external_id |
string | No | Your id for it. |
output |
object | No | Its report: a title, a Markdown summary and text, and annotations on lines of files (at most 50 a request). |
output.title |
string | No | |
output.summary |
string | No | |
output.text |
string | No | |
output.annotations |
array of objects | No | |
output.annotations[].path |
string | Yes | |
output.annotations[].start_line |
integer | Yes | |
output.annotations[].end_line |
integer | Yes | |
output.annotations[].start_column |
integer | No | |
output.annotations[].end_column |
integer | No | |
output.annotations[].annotation_level |
string | Yes | One of notice, warning, failure. |
output.annotations[].message |
string | Yes | |
output.annotations[].title |
string | No | |
output.annotations[].raw_details |
string | No | |
actions |
array of objects | No | Up to 3 buttons on its page. Pressing one sends you check_run.requested_action with its identifier. |
actions[].label |
string | Yes | At most 20 characters. |
actions[].description |
string | Yes | At most 40 characters. |
actions[].identifier |
string | Yes | At most 20 characters. |
Example request
Section titled “Example request”curl -X PATCH https://api.g1t.sh/repos/flagon-io/hello/check-runs/cr_01kq4b7c8d9e0f1g2h3j4k5m6n \ -H "Authorization: Bearer $G1T_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "conclusion": "success", "output": { "title": "No problems", "summary": "All clear." } }'Example response
Section titled “Example response”A successful request answers 200 with:
{ "id": "cr_01kq4b7c8d9e0f1g2h3j4k5m6n", "name": "lint", "head_sha": "9f3c2a1b7e6d5c4b3a2918f7e6d5c4b3a2918f7e", "status": "completed", "conclusion": "success", "started_at": "2026-10-07T14:02:11.000Z", "completed_at": "2026-10-07T14:02:36.000Z", "details_url": "https://ci.example.com/builds/4821", "external_id": "4821", "html_url": "https://g1t.sh/flagon-io/hello/checks/cr_01kq4b7c8d9e0f1g2h3j4k5m6n", "output": { "title": "No problems", "summary": "All clear.", "text": null, "annotations_count": 2 }, "actions": [ { "label": "Fix this", "description": "Apply the suggested fixes", "identifier": "fix" } ], "check_suite": { "id": "cs_01kq4b7c8d9e0f1g2h3j4k5m6p" }, "app": { "slug": "buildkite", "name": "Buildkite" }, "created_at": "2026-10-07T14:02:11.318Z"}Errors
Section titled “Errors”A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.
| Status | Code | When |
|---|---|---|
| 401 | unauthenticated |
A token is required, or the one sent is not valid. |
| 403 | forbidden |
The token is valid but not allowed to do this, such as a member-only change or an agent token outside its repository. |
| 404 | not_found |
It does not exist, or you cannot see it. |
| 409 | conflict |
The request conflicts with the current state. |
| 422 | invalid |
The input is not valid. message says which field and why. |