CheckRun

A persisted check run, as returned by `PostCheckRun`. All fields are server-owned; the writable shape is `CheckRunInput`. Each `(check_suite, key, external_id)` is one run attempt. Within a suite, the current attempt for a `key` — the one `ListCheckRunsForSuite`, `ListCheckRunsForCommit`, and the pull request's CI state and required checks use — is the run with the newest `external_updated_at`; ties break by `created_at`, then `id`, newest first. A run is current for its commit only when its suite is the commit's current suite attempt (see `CheckSuite`). Superseded attempts stay readable by id.

AI CodingDevelopment ToolsCloud AgentsCLIEnterprise Software

Properties

Name Type Description
id string Server-assigned unique ID of the check run.
repository object Repository the check run belongs to.
checkSuite object Suite this check run belongs to.
sha string Resolved head commit SHA the check run is attached to (lowercase hex).
key string App-chosen idempotency key for the check run.
name string Human-facing check-run name.
status string Lifecycle state. `rerequested` is a completed run whose re-run was requested and not yet answered by the owning app: pending for readers (render like `queued`), with `conclusion` and the timings still
conclusion string Present iff `status` is `completed` or `rerequested`. For a `rerequested` run it is the superseded attempt's verdict: treat the run as pending and read `conclusion` only when `status == completed`.
detailsUrl string Link to more detail about this specific check run, if set.
externalUpdatedAt string The external system's last-update time used for ordering.
startedAt string When the check run started, if reported.
completedAt string When the check run completed, if reported.
createdAt string
updatedAt string When Origin last wrote the run. Not advanced by a post that was ignored as stale or that repeated the stored values (see `PostCheckRunResponse.outcome`), so it cannot tell those two apart.
externalId string Provider-assigned immutable identity for this check attempt (see `CheckRunInput.external_id`: one per execution is the recommended style).
actor object Principal that produced the check run; always the owning suite's `actor`.
output object Human-readable output for this check run, if set.
deadlineAt string Optional deadline. Omitted or unset means no expiration. Cleared when the run completes, including when it expires as `timed_out` (see `CheckRunInput.deadline_at`).
isRerequestable boolean Whether the reporting app declared this run re-requestable (`CheckRunInput.is_rerequestable`).
rerequestedAt string Set while a re-request is outstanding; cleared when the provider posts again. Unset means no re-request is pending. While set, `status` is `rerequested` and the run stays in the commit's CI state as p
rerequestedBy object Principal that re-requested the run. Present iff `rerequested_at` is set; cleared together with it when the owning app answers.
View JSON Schema on GitHub

JSON Schema

anysphere-cursor.com-check-run-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/anysphere-cursor.com/main/json-schema/anysphere-cursor.com-check-run-schema.json",
  "title": "CheckRun",
  "description": "A persisted check run, as returned by `PostCheckRun`. All fields are\n server-owned; the writable shape is `CheckRunInput`.\n\n Each `(check_suite, key, external_id)` is one run attempt. Within a suite,\n the current attempt for a `key` — the one `ListCheckRunsForSuite`,\n `ListCheckRunsForCommit`, and the pull request's CI state and required\n checks use — is the run with the newest `external_updated_at`; ties break\n by `created_at`, then `id`, newest first. A run is current for its commit\n only when its suite is the commit's current suite attempt (see\n `CheckSuite`). Superseded attempts stay readable by id.",
  "x-generated": "2026-09-25",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/anysphere-cursor.com-openapi.yaml#/components/schemas/CheckRun",
  "type": "object",
  "properties": {
    "id": {
      "readOnly": true,
      "type": "string",
      "description": "Server-assigned unique ID of the check run."
    },
    "repository": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/RepositoryReference"
        }
      ],
      "description": "Repository the check run belongs to."
    },
    "checkSuite": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/CheckSuiteReference"
        }
      ],
      "description": "Suite this check run belongs to."
    },
    "sha": {
      "readOnly": true,
      "type": "string",
      "description": "Resolved head commit SHA the check run is attached to (lowercase hex)."
    },
    "key": {
      "readOnly": true,
      "type": "string",
      "description": "App-chosen idempotency key for the check run."
    },
    "name": {
      "readOnly": true,
      "type": "string",
      "description": "Human-facing check-run name."
    },
    "status": {
      "readOnly": true,
      "enum": [
        "queued",
        "in_progress",
        "completed",
        "rerequested"
      ],
      "type": "string",
      "description": "Lifecycle state. `rerequested` is a completed run whose re-run was\n requested and not yet answered by the owning app: pending for readers\n (render like `queued`), with `conclusion` and the timings still\n describing the superseded attempt. Set only by Origin on re-request\n (RerequestCheckRun); apps cannot post it."
    },
    "conclusion": {
      "readOnly": true,
      "enum": [
        "success",
        "failure",
        "neutral",
        "cancelled",
        "skipped",
        "timed_out",
        "action_required",
        "stale"
      ],
      "type": "string",
      "description": "Present iff `status` is `completed` or `rerequested`. For a\n `rerequested` run it is the superseded attempt's verdict: treat the run\n as pending and read `conclusion` only when `status == completed`."
    },
    "detailsUrl": {
      "readOnly": true,
      "type": "string",
      "description": "Link to more detail about this specific check run, if set."
    },
    "externalUpdatedAt": {
      "readOnly": true,
      "type": "string",
      "description": "The external system's last-update time used for ordering.",
      "format": "date-time"
    },
    "startedAt": {
      "readOnly": true,
      "type": "string",
      "description": "When the check run started, if reported.",
      "format": "date-time"
    },
    "completedAt": {
      "readOnly": true,
      "type": "string",
      "description": "When the check run completed, if reported.",
      "format": "date-time"
    },
    "createdAt": {
      "readOnly": true,
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "readOnly": true,
      "type": "string",
      "description": "When Origin last wrote the run. Not advanced by a post that was ignored\n as stale or that repeated the stored values (see\n `PostCheckRunResponse.outcome`), so it cannot tell those two apart.",
      "format": "date-time"
    },
    "externalId": {
      "readOnly": true,
      "type": "string",
      "description": "Provider-assigned immutable identity for this check attempt (see\n `CheckRunInput.external_id`: one per execution is the recommended style)."
    },
    "actor": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/OriginActor"
        }
      ],
      "description": "Principal that produced the check run; always the owning suite's `actor`."
    },
    "output": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/CheckRunOutput"
        }
      ],
      "description": "Human-readable output for this check run, if set."
    },
    "deadlineAt": {
      "readOnly": true,
      "type": "string",
      "description": "Optional deadline. Omitted or unset means no expiration. Cleared when\n the run completes, including when it expires as `timed_out` (see\n `CheckRunInput.deadline_at`).",
      "format": "date-time"
    },
    "isRerequestable": {
      "readOnly": true,
      "type": "boolean",
      "description": "Whether the reporting app declared this run re-requestable\n (`CheckRunInput.is_rerequestable`)."
    },
    "rerequestedAt": {
      "readOnly": true,
      "type": "string",
      "description": "Set while a re-request is outstanding; cleared when the provider posts\n again. Unset means no re-request is pending. While set, `status` is\n `rerequested` and the run stays in the commit's CI state as pending\n (`conclusion` and the timings are the superseded result); the owning app\n answers by posting the run it committed to by declaring\n `is_rerequestable` — a new run for the same `key`, or an update of this\n run (which clears this field) — after which the run may be re-requested\n again.",
      "format": "date-time"
    },
    "rerequestedBy": {
      "readOnly": true,
      "allOf": [
        {
          "$ref": "#/$defs/OriginActor"
        }
      ],
      "description": "Principal that re-requested the run. Present iff `rerequested_at` is set;\n cleared together with it when the owning app answers."
    }
  },
  "$defs": {
    "CheckRunOutput": {
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "description": "Short headline for the output. Maximum length: 255 characters."
        },
        "summary": {
          "type": "string",
          "description": "Summary of the output. May contain Markdown.\n Maximum UTF-8 size: 65535 bytes."
        },
        "text": {
          "type": "string",
          "description": "Detailed output. May contain Markdown.\n Maximum UTF-8 size: 65535 bytes."
        }
      },
      "description": "Human-readable output reported for a check run."
    },
    "CheckSuiteReference": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "OriginActor": {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/$defs/OriginUserActor"
        },
        "app": {
          "$ref": "#/$defs/OriginAppActor"
        },
        "serviceAccount": {
          "$ref": "#/$defs/OriginServiceAccountActor"
        }
      },
      "description": "A user, app, or service account that performed an externally visible action."
    },
    "OriginAppActor": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "The app's registered display name, never empty when present. Omitted on\n payloads whose app could not be resolved and on the first-party Cursor\n facade actor."
        }
      }
    },
    "OriginServiceAccountActor": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "OriginUserActor": {
      "required": [
        "email"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "displayName": {
          "type": "string",
          "description": "Human-readable display name: the account's first and last name, each\n trimmed, joined with a space — exactly the name the product UI renders.\n Omitted when the account has no name; never synthesized from the email,\n the id, or any other field. May also be absent on webhook payloads whose\n actor could not be resolved."
        },
        "handle": {
          "type": "string",
          "description": "The user's claimed profile handle (the identity behind cursor.com\n /@handle), without the @ prefix. Present only while the user's profile\n is publicly visible; omitted for users without a claimed handle and for\n non-public profiles."
        }
      }
    },
    "Owner": {
      "type": "object",
      "properties": {
        "slug": {
          "type": "string",
          "description": "Unique URL-friendly name of the owner."
        },
        "id": {
          "type": "string",
          "description": "Unique ID of the owner namespace."
        },
        "type": {
          "readOnly": true,
          "enum": [
            "team",
            "user"
          ],
          "type": "string",
          "description": "`team` or `user`. Output-only; unset when unknown."
        }
      },
      "description": "The owner of a repo."
    },
    "RepositoryReference": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "owner": {
          "$ref": "#/$defs/Owner"
        }
      },
      "description": "Stable identity and display coordinates for a repository."
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/anysphere-cursor.com-check-run"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.