# Tracks - [Tracks](https://docs.tracks.alpic.ai/index.md): Find out which coding agent gets your tasks right, with or without your tools, and at what cost - [Quickstart](https://docs.tracks.alpic.ai/quickstart.md): Compare two coding agents on your first task, in the web app - [Quickstart with the CLI](https://docs.tracks.alpic.ai/quickstart-cli.md): Start a coding agent in a sandbox from your terminal and read what it did - [Use Tracks from your agent](https://docs.tracks.alpic.ai/use-from-your-agent.md): Paste one prompt into Claude Code or Cursor to set Tracks up and compare two agents - [Runs](https://docs.tracks.alpic.ai/concepts/runs.md): One coding agent working on your prompt in its own sandbox, recorded from start to end - [Experiments](https://docs.tracks.alpic.ai/concepts/experiments.md): Give the same scenarios to several agents, with and without your tools, and see which ones succeed - [Reading results](https://docs.tracks.alpic.ai/concepts/reading-results.md): What verdicts, scores and pass rates mean, why some runs are not evaluated, and whether agents used your tools - [Agents and models](https://docs.tracks.alpic.ai/concepts/agents.md): The coding agents Tracks runs, the models each accepts, and the tools you can give them - [Billing](https://docs.tracks.alpic.ai/concepts/billing.md): Your prepaid balance, what runs cost and what is free - [Organization and sharing](https://docs.tracks.alpic.ai/concepts/organization.md): Invite members to your organization and share a run with a public link - [Compare two agents in 2 minutes](https://docs.tracks.alpic.ai/guides/compare-two-agents.md): Give Claude Code and Codex the same task on the same repository, then compare what they did and what it cost - [Measure your MCP server or skill](https://docs.tracks.alpic.ai/guides/measure-your-mcp-server.md): Find out whether your MCP server or skill helps coding agents, with an experiment run with and without it - [Write evaluations](https://docs.tracks.alpic.ai/guides/write-evaluations.md): Write yes-or-no criteria that judge an experiment's runs reliably, and weigh them - [Run from CI](https://docs.tracks.alpic.ai/guides/run-from-ci.md): Start runs and experiments from your CI, and fail the build on how they end - [Private repositories](https://docs.tracks.alpic.ai/guides/private-repositories.md): Let a run's agent work on a private GitHub repository with a token you pass as an environment variable - [MCP servers](https://docs.tracks.alpic.ai/guides/mcp-servers.md): Let a run's agent use MCP servers, including ones that need your account - [API](https://docs.tracks.alpic.ai/api/overview.md): Call Tracks over HTTP with an API key of your organization - [List runs](https://docs.tracks.alpic.ai/api-reference/runs/list-runs.md): Returns your runs, most recently started first. To get the next page, pass the `id` of the last run received as `after`. - [Create a run](https://docs.tracks.alpic.ai/api-reference/runs/create-a-run.md): Starts a coding agent on your prompt in a fresh sandbox. A one-shot run, the default, ends when the agent finishes; otherwise the run waits `idle` for follow-up prompts until you end it or it times out. Send an `Idempotency-Key` header to retry without creating a second run. The run gets the label `… - [Get a run](https://docs.tracks.alpic.ai/api-reference/runs/get-a-run.md): Returns a run and its current status. - [Get a run's usage](https://docs.tracks.alpic.ai/api-reference/runs/get-a-runs-usage.md): Returns what the run has consumed so far, per model and in sandbox time, and what it cost. - [End a run](https://docs.tracks.alpic.ai/api-reference/runs/end-a-run.md): Ends the run with `completed` once its current prompt finishes, then destroys its sandbox. Ending a run that has ended does nothing. - [Cancel a run](https://docs.tracks.alpic.ai/api-reference/runs/cancel-a-run.md): Stops the agent right away, even mid-prompt, ends the run with `canceled`, then destroys its sandbox. Canceling a run that has ended does nothing. - [List a run's prompts](https://docs.tracks.alpic.ai/api-reference/runs/list-a-runs-prompts.md): Returns the run's prompts in order. To get the next page, pass the `index` of the last prompt received as `after`. - [Send a follow-up prompt](https://docs.tracks.alpic.ai/api-reference/runs/send-a-follow-up-prompt.md): Asks the agent to continue where its last prompt stopped. Accepted only while the run is `idle`; the run is `working` again until the agent stops. - [List a run's frames](https://docs.tracks.alpic.ai/api-reference/runs/list-a-runs-frames.md): Returns the agent's output, line by line, in order. To get the next page, pass the `seq` of the last line received as `after`. - [List a run's events](https://docs.tracks.alpic.ai/api-reference/runs/list-a-runs-events.md): Returns what the agent did, in order: each prompt, then its messages, reasoning, tool calls and subagents, then a `stop` once the agent stopped. Events read alike whatever the harness, and are read from the run's output: `frame_seqs` points at the lines each one comes from. To get the next page, pas… - [Get a screenshot](https://docs.tracks.alpic.ai/api-reference/runs/get-a-screenshot.md): Returns the image of a page the agent's browser showed, for a `tool_ended` or `page_visited` event that has a `screenshot`. Its content type is the image's own, usually `image/jpeg`. - [Stream a run's frames](https://docs.tracks.alpic.ai/api-reference/runs/stream-a-runs-frames.md): Sends the agent's output as server-sent events as it is produced: a `frame` event per line, its data the line as JSON, and a `heartbeat` event every 30 seconds to keep the connection open. Closes once the run has ended and every line was sent. The connection may also close earlier; to pick up where… - [Stream a run's events](https://docs.tracks.alpic.ai/api-reference/runs/stream-a-runs-events.md): Sends what the agent did as server-sent events as it happens: an `event` event per event, its data the event as JSON, and a `heartbeat` event every 30 seconds to keep the connection open. Closes once the run has ended and every event was sent. The connection may also close earlier; to pick up where… - [Request a file upload](https://docs.tracks.alpic.ai/api-reference/files/request-a-file-upload.md): Request with `name`, `content_type` and exact byte `size`, e.g. `{"name":"photo.png","content_type":"image/png","size":12345}`. Any type of file, up to 20 MiB each. PUT raw bytes (not JSON or base64) to the returned `url` with every returned header within 15 minutes; browsers set `content-length` fr… - [List connections](https://docs.tracks.alpic.ai/api-reference/connections/list-connections.md): Returns every connection. - [Create a connection](https://docs.tracks.alpic.ai/api-reference/connections/create-a-connection.md): Starts connecting to an MCP server that acts as one of its users. Send the user's browser to `consent_url`. Once they consent, they get a `confirmation`: as a code shown to them, to give back to you, or, if you passed the optional `return_url`, sent to it with `connection_id`. Confirm the connection… - [Get a connection](https://docs.tracks.alpic.ai/api-reference/connections/get-a-connection.md): Returns a connection. - [Delete a connection](https://docs.tracks.alpic.ai/api-reference/connections/delete-a-connection.md): Deletes a connection and the access it holds. - [Confirm a connection](https://docs.tracks.alpic.ai/api-reference/connections/confirm-a-connection.md): Makes an `unconfirmed` connection `active`. Confirm it only when the browser that came back to your return URL belongs to the user who started the connection. - [List experiments](https://docs.tracks.alpic.ai/api-reference/experiments/list-experiments.md): Returns every experiment. - [Create an experiment](https://docs.tracks.alpic.ai/api-reference/experiments/create-an-experiment.md): Creates an experiment from its scenarios, agents, variants and run settings. Launch it to start its runs. - [Get an experiment](https://docs.tracks.alpic.ai/api-reference/experiments/get-an-experiment.md): Returns an experiment. - [Update an experiment](https://docs.tracks.alpic.ai/api-reference/experiments/update-an-experiment.md): Replaces the whole experiment: send it complete, as `GET /experiments/{id}` returns it. Executions already launched keep the experiment as it was. - [Delete an experiment](https://docs.tracks.alpic.ai/api-reference/experiments/delete-an-experiment.md): Deletes an experiment. Its executions, their runs and results stay. - [List an experiment's executions](https://docs.tracks.alpic.ai/api-reference/executions/list-an-experiments-executions.md): Returns the experiment's executions, the latest launched first, even after it was deleted. - [Launch an experiment](https://docs.tracks.alpic.ai/api-reference/executions/launch-an-experiment.md): Starts an execution of the experiment as it is now: a run for every scenario, variant, agent and repetition, at most 500, started in the background. Each run is judged on its scenario's evaluations once it ends. Executions start only while your organization's balance is above $0. - [Get an execution](https://docs.tracks.alpic.ai/api-reference/executions/get-an-execution.md): Returns an execution, where its runs stand and its pass rate. Poll it until it is no longer `pending`. - [List an execution's slots](https://docs.tracks.alpic.ai/api-reference/executions/list-an-executions-slots.md): Returns every run the execution plans, with its run once started and its verdict once judged. Read a run's work with the runs endpoints. - [Cancel an execution](https://docs.tracks.alpic.ai/api-reference/executions/cancel-an-execution.md): Starts none of its runs left and cancels those started. Canceling an execution already canceled does nothing. - [Get the library](https://docs.tracks.alpic.ai/api-reference/library/get-the-library.md): Returns the repositories, skills, MCP servers and command-line tools your experiments can pick, by id. - [Check health](https://docs.tracks.alpic.ai/api-reference/system/check-health.md): Returns 204 when the API is up. No key required. - [List egress IPs](https://docs.tracks.alpic.ai/api-reference/system/list-egress-ips.md): The fixed addresses we call MCP servers and their authorization servers from. Allow them on an MCP server that only accepts known addresses. Commands the agent runs in its sandbox, such as cloning the repository, come from other addresses. No key required. - [CLI](https://docs.tracks.alpic.ai/cli/overview.md): Drive Tracks from your terminal, a script or a coding agent - [tracks health](https://docs.tracks.alpic.ai/reference/cli/health.md): Check that the API is reachable - [tracks runs](https://docs.tracks.alpic.ai/reference/cli/runs.md): Manage runs - [tracks connections](https://docs.tracks.alpic.ai/reference/cli/connections.md): Manage connections to MCP servers - [tracks experiments](https://docs.tracks.alpic.ai/reference/cli/experiments.md): Compare agents on your scenarios - [tracks executions](https://docs.tracks.alpic.ai/reference/cli/executions.md): Follow and cancel experiments' executions - [tracks library](https://docs.tracks.alpic.ai/reference/cli/library.md): List the repositories, skills, MCP servers and command-line tools experiments can pick - [MCP server](https://docs.tracks.alpic.ai/mcp/overview.md): Use Tracks from Claude Code, Cursor, Codex or another MCP client - [Tools](https://docs.tracks.alpic.ai/reference/mcp/tools.md): Every tool the Tracks MCP server offers, with its parameters ## OpenAPI Specs - [openapi](https://tracks.alpic.ai/api/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.