Skip to main content

At a glance

  • Where the key lives: web app → Settings → Project Settings. One key per project, created by Checksum during onboarding.
  • Base URLs: https://api.checksum.ai/public-api/v1/ for almost everything; https://api.checksum.ai/public-api/v2/ for POST /execution/grep and GET /execution/status/{jobName}.
  • Async: execution returns a runId (poll until isTerminal is true); generation and healing return a batchId (poll until allTerminal is true).
  • Validation: invalid bodies return 400; a missing or invalid key returns 401.
  • No cancel: API-triggered runs can’t be cancelled through the API.
Developer guide
Your API key, making requests, checking a key, and the typical integration flow

Your API key

Your project’s API key is in the web app under Settings → Project Settings. Checksum creates it with your project during onboarding, so you don’t need to generate one. Store it as the environment variable CHECKSUM_API_KEY wherever you use it: your shell, your CI secrets, or your coding agent’s config.
In CI, add it as a secret named CHECKSUM_API_KEY (see CI/CD Integration). The GitHub Action takes it as api-key: ${{ secrets.CHECKSUM_API_KEY }}, and your tests read it through apiKey: process.env.CHECKSUM_API_KEY in checksum.config.ts.
Keep it secretThe key is unique to your project. Anyone who has it can run tests, start billable agent sessions, open pull requests, and read results for the project. Keep it in a secrets manager or CI secret, and never commit it. A key is always tied to exactly one project.
Scope: one key per project. Location: Settings → Project Settings. Environment variable name: CHECKSUM_API_KEY.

Making requests

Every call to the REST API sends your key in an Authorization: Bearer header, and requests with a body send JSON. Calls that start agent work (runs, generation, healing) return right away with an ID, and you poll for the result. The examples in these docs poll every 10–30 seconds.

Base URL and versions

Almost everything lives under the v1 base URL. Two endpoints also have a v2 with more options. For running tests by name pattern, use v2.
v1 base URL
v2 base URL

Check that your key works

Before wiring up runs, call GET /me. It’s a lightweight check that returns the project your key belongs to, and whether a tests repository is connected.
If you get 401, the key is missing, malformed, or has been rotated. Once this call works, you’re ready to start a run.

GET https://api.checksum.ai/public-api/v1/me

Returns basic information about the project the API key belongs to. Use it as a lightweight auth check before triggering runs.Next: trigger a run with an execution endpoint (Running Tests → execution endpoints).

A typical integration

Most integrations follow the same path: check the key, pick tests, start a run, wait for the verdict, read the details, and heal what broke.
1

Confirm the key

2

Choose tests (optional)

POST /public-api/v1/affected-tests with your changed files returns the test IDs most likely affected. See Selecting tests.
3

Trigger a run

Run the suite, a collection, specific tests, or a grep pattern. Add autoHeal to heal failures automatically. See Execution endpoints.
4

Poll the run

GET /public-api/v1/execution/status/run/{runId} until isTerminal, then gate on verdict. See Run status.
5

Read the details

Per-test results, HTML report, and attachments. See Results API.
6

Heal

Include autoHeal at step 3, or call POST /public-api/v1/auto-heal afterward with the run’s UUID. See Trigger healing.
On GitHub Actions?checksum-ai/test-run-action wraps steps 2–6 in a single step, including verdict gating and auto-heal.

Which ID goes where

The most common mistake is passing the wrong ID. Use the run’s UUID (runId) for status, results, and healing. The job name only works with the legacy status endpoint.
The full table, with where each ID comes from, is in Key Concepts → IDs you’ll meet.

Current limitations

Runs can’t be cancelled via the APICancelling your CI job only stops your workflow from polling. The Checksum run keeps going until it finishes. Plan concurrency settings with this in mind: GitHub Actions’ cancel-in-progress, for example, cancels your workflow, not the run on Checksum.
A few other things to know: envOverrides rejects reserved variable names, the API can read bug entities but not change their status, and sharded runs need a recent checksumai.

Authenticating MCP clients

The Checksum MCP server (https://api.checksum.ai/public-api/mcp) supports two sign-in methods. On your own machine, use browser sign-in: you approve the connection while logged in to app.checksum.ai, choose which projects the client may use, and no key is stored. For CI, containers, or clients that only accept a static token, send your API key as a bearer header instead. Browser-sign-in connections belong to you, not the project. Review or revoke them from the MCP connections card on My Profile. An API key is always scoped to one project. Setup per client is on Coding Agents & MCP.
Server URL: https://api.checksum.ai/public-api/mcp. Browser connections are per user and revocable from My Profile → MCP connections. API keys are per project.

Troubleshooting

Check that the header is exactly Authorization: Bearer <key>, that there is no stray whitespace or quoting from your secret store, and that the key hasn’t been rotated. Call GET /me to test the key on its own.
No tests repository is connected, so generation and healing can’t open PRs. See Git Integration or contact your Checksum team.
Those fields are only supported on the v2 grep endpoint. Check that you’re calling /public-api/v2/execution/grep.

Running Tests

Execution and status endpoints.

Key Concepts

Outcomes, verdicts, and IDs.