# Testorim > Documentation for Testorim: plain-English browser QA tests that run in a real browser. - [What is Testorim](https://docs.testorim.com/index.md): Testorim turns a plain-English description of a workflow into a browser test, runs it in a real browser, and reports what actually happened. - [Core capabilities](https://docs.testorim.com/introduction/core-capabilities.md): Everything a Testorim run can do: authoring, execution, evidence, and the integrations that surround it. - [How it works](https://docs.testorim.com/introduction/how-it-works.md): What happens between the sentence you type and the report you read. - [Quickstart](https://docs.testorim.com/getting-started/quickstart.md): Sign in, point Testorim at your site, and get a report back, in about five minutes. - [Create a project](https://docs.testorim.com/getting-started/create-a-project.md): A project is one website under test, and the home for its runs, tests, environments and integrations. - [Create your first test](https://docs.testorim.com/getting-started/first-test.md): Write one instruction, choose its intent, and send it. - [Run and inspect a test](https://docs.testorim.com/getting-started/run-and-inspect.md): Watching a run happen, and reading what it left behind. - [Writing tests in plain English](https://docs.testorim.com/test-creation/writing-tests.md): What to say so a test passes for the right reason. - [Steps and expected outcomes](https://docs.testorim.com/test-creation/steps-and-outcomes.md): The actions a step can take and the closed grammar of conditions it can assert. - [Test data](https://docs.testorim.com/test-creation/test-data.md): Tokens that generate fresh values, project variables, and values you supply mid-run. - [Reusable flows](https://docs.testorim.com/test-creation/reusable-flows.md): Saved procedures replay a recorded test exactly, without planning it again. - [Browser runs](https://docs.testorim.com/test-execution/browser-runs.md): What a run is, how one starts, and the limits it runs under. - [Run status](https://docs.testorim.com/test-execution/run-status.md): Run states, step states, and how the overall verdict is decided. - [Screenshots, logs and evidence](https://docs.testorim.com/test-execution/evidence.md): Everything a run captures, and where to find it. - [Debugging a failed run](https://docs.testorim.com/test-execution/debugging.md): Read the cause first, then the evidence. A method that stops you from debugging a working site. - [Projects](https://docs.testorim.com/projects/projects.md): One website under test, and everything that belongs to it. - [Environments](https://docs.testorim.com/projects/environments.md): Run the same test against staging, production, or a pull-request preview. - [Variables and secrets](https://docs.testorim.com/projects/variables-and-secrets.md): Where each kind of value belongs, and which of them are encrypted. - [Integrations overview](https://docs.testorim.com/integrations/overview.md): Where Testorim connects to the rest of your toolchain. - [GitHub](https://docs.testorim.com/integrations/github.md): Run your tests on every pull request, and see your own CI alongside them. - [Slack](https://docs.testorim.com/integrations/slack.md): Failure alerts in a channel you pick. - [Email alerts](https://docs.testorim.com/integrations/email-alerts.md): Failure alerts to a list of recipients. - [Common issues](https://docs.testorim.com/troubleshooting/common-issues.md): The problems people actually hit, and what to do about each. - [Browser failures](https://docs.testorim.com/troubleshooting/browser-failures.md): When the page, not the step, is what went wrong. - [Reliability](https://docs.testorim.com/troubleshooting/reliability.md): Making a suite you trust: stable targets, the right auth mode, and the signals that tell you a test is drifting. - [FAQ](https://docs.testorim.com/resources/faq.md): Short answers to the questions people ask before and just after signing up. - [Support](https://docs.testorim.com/resources/support.md): How to get help, and what to send so we can actually fix it. - [Platform overview](https://docs.testorim.com/developers/platform-overview.md): How the API is shaped, what it is scoped to, and what it will not do. - [Authentication and API keys](https://docs.testorim.com/developers/authentication.md): Minting a key, sending it, and what it can reach. - [CLI](https://docs.testorim.com/developers/cli.md): Trigger tests from your terminal or any CI pipeline. - [API reference](https://docs.testorim.com/api-reference/introduction.md): The API-key surface: trigger runs, read results, and manage projects, saved tests and keys. - [Start a test run headlessly](https://docs.testorim.com/api-reference/runs/start-a-test-run-headlessly.md): The primary CI endpoint. Starts a run **in the background** and returns immediately with a run id. The HTTP request does not block on test completion, because typical runs take 30-120 s (and may be allowed up to 120 minutes) while CI providers time out sooner. Poll `GET /api/runs/{runId}` until `sta… - [List runs across the organization](https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization.md): Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (`stepsJson`, network/console events, screenshot refs) are omitted. Fetch a single run for those. - [List in-flight runs, grouped by batch](https://docs.testorim.com/api-reference/runs/list-in-flight-runs-grouped-by-batch.md): Runs currently `pending` or `running` in the key's organization, grouped by `batchId` so a fan-out (fuzz batch, flaky 3× detection, role probe, desktop+mobile pair) reads as one entry with progress counters. Standalone runs come back as single-item groups. - [Get one run with all artifacts](https://docs.testorim.com/api-reference/runs/get-one-run-with-all-artifacts.md): The polling target named by `pollUrl` in the trigger response. Returns the complete run row (steps, network and console events, accessibility violations, performance metrics, visual-diff results, downloads) plus resolved artifact URLs. - [Cancel a single run](https://docs.testorim.com/api-reference/runs/cancel-a-single-run.md): Marks the run `cancelled` if it is still `running` or `pending`, then fires the in-memory cancel handler so the orchestrator tears its Playwright browser down within seconds instead of waiting for the orphan killer. - [Cancel every run in a batch](https://docs.testorim.com/api-reference/runs/cancel-every-run-in-a-batch.md): Same as the single-run cancel, applied to every `pending`/`running` row sharing the `batchId`. This is the way to stop a whole fuzz batch or matrix fan-out. Ownership is checked by requiring at least one run in the batch to belong to the key's organization. Takes no request body. - [List runs for one project](https://docs.testorim.com/api-reference/runs/list-runs-for-one-project.md): Runs belonging to a single project, newest first, in the summary shape. The project is resolved org-scoped first, so an unknown or foreign project id 404s before any run is read. - [List a project's saved procedures](https://docs.testorim.com/api-reference/procedures/list-a-projects-saved-procedures.md): Every procedure under the project, ordered by `lastRunAt` descending then `createdAt` descending, so the most recently exercised ones come first. Returns whole rows, including `stepsJson`. Used by `testorim list --project ` and by `testorim init` to build its alias map. - [Get one procedure by id](https://docs.testorim.com/api-reference/procedures/get-one-procedure-by-id.md): Flat, org-scoped lookup that does not require knowing the project. This is the call the CLI makes for `testorim run `: `POST /api/runs/trigger` requires `projectId`, so the CLI resolves it from `procedure.projectId` here first. A procedure in another organization 404s. - [Export a procedure as a standalone Playwright spec](https://docs.testorim.com/api-reference/procedures/export-a-procedure-as-a-standalone-playwright-spec.md): Renders the procedure to a self-contained `.spec.ts` Playwright test and returns it as a file download. Useful in CI when you want the steps checked into a repo rather than executed by Testorim. - [List projects](https://docs.testorim.com/api-reference/projects/list-projects.md): All non-archived projects in the key's organization, ordered by `lastUsedAt` descending. Returns whole rows. Deleted projects are soft-deleted (`archivedAt` set) and never appear here. - [Create (or re-use) a project](https://docs.testorim.com/api-reference/projects/create-or-re-use-a-project.md): Creates a project for the key's organization. - [Get one project](https://docs.testorim.com/api-reference/projects/get-one-project.md): Org-scoped lookup. Archived (soft-deleted) projects are treated as missing and return `404`. - [List active API keys](https://docs.testorim.com/api-reference/api-keys/list-active-api-keys.md): Keys owned by the **user** the credential belongs to, newest first. Only keys that are usable right now are listed: revoked keys and expired keys are filtered out in SQL. - [Mint a new API key (browser session only)](https://docs.testorim.com/api-reference/api-keys/mint-a-new-api-key-browser-session-only.md): > **An API key cannot create another API key.** The handler inspects > the `Authorization` header on this very request and returns `403` > when it starts with `tst_live_`, deliberately limiting the blast > radius of a leaked key. Mint keys from the dashboard (which > authenticates with a Clerk sessi… - [Revoke an API key](https://docs.testorim.com/api-reference/api-keys/revoke-an-api-key.md): Soft-revokes the key by stamping `revokedAt`; the row survives so audit references stay resolvable. Authentication rejects a revoked key immediately afterwards. - [Identify the presented credential](https://docs.testorim.com/api-reference/identity/identify-the-presented-credential.md): Returns the user the credential belongs to plus the active and personal organizations. The cheapest way to validate a key. This is exactly what `testorim login` calls before it writes the key to `~/.testorim/config.json`. For an API key, `currentOrg` is always the organization the key is bound to. `… ## OpenAPI Specs - [openapi](/api-reference/openapi.yaml) ## Optional - [Testorim app](https://app.testorim.com) - [Website](https://testorim.com)