Skip to content

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: workflow with action update_check_run, and the same inputs
  • Scope: An access token needs checks:write.
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_…

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.
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."
}
}'

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"
}

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.