Antithesis API

The Antithesis API enables programmatic access to the Antithesis autonomous testing environments. List runs, inspect run details, and retrieve logs.

Authentication

Pass the API key in the Authorization header as Authorization: Bearer <api_key>. To obtain an API key, please email us at support@antithesis.com or talk to your forward deployed engineer.

Versioning

All endpoints are versioned via a path prefix:

  • /api/v0/... Preview. APIs accessed from the v0 route are in preview. They may change or be removed.
  • /api/v1/... Stable. The first version with a compatibility commitment.

In the future only breaking changes trigger a new major version (e.g., v2). When that happens the previous version (v1) remains available, and preview APIs restart under v0.

Base URL

https://{tenant}.antithesis.com

  • {tenant} - Your organization's tenant name. (default: demo)

Errors

Every endpoint can return the same set of error responses (4xx and 5xx). To keep the per-endpoint sections concise, these are documented once in Error responses at the bottom of this page.

Test runs

Operations on test runs.

List all test runs

GET /api/v0/runs

Returns a paginated list of test runs. Results are ordered by creation time, newest first.

Parameters
limit query
integer Default: 50Min: 1 · Max: 100
Maximum number of results to return. Server-capped at 100.
after query
string
Cursor for pagination. Pass the next_cursor value (as well as any filter parameters) from a previous response to fetch the next page.
status query
stringAvailable values: starting, in_progress, completed, cancelled, incomplete, unknown
Filter test runs by status.
created_after query
string <date-time>
Only return test runs created after this timestamp (ISO 8601).
created_before query
string <date-time>
Only return test runs created before this timestamp (ISO 8601).
launcher query
string
Filter by the launcher that kicked off the test run.
Responses
200 A paginated list of test runs.

Content type: application/json

data required
array<object>
Items of data
run_id required
string
Unique identifier for the test run.
Example: 9325f006ffd3a399a8497bc888878b97-50-1
status required
stringAvailable values: starting, in_progress, completed, cancelled, incomplete, unknown
Current lifecycle status of a test run. starting: the run is being set up. in_progress: the run is actively running. completed: the run finished successfully. cancelled: the run was cancelled before completion. incomplete: the run did not complete successfully. unknown: the status of the run is unknown.
created_at required
string <date-time>
Timestamp when the test run was created (ISO 8601).
started_at
string <date-time> (nullable)
Timestamp when the test run started executing. Null if the run has not yet started.
completed_at
string <date-time> (nullable)
Timestamp when the test run finished. Null if the run is still in progress or has not started.
creator
object (nullable)
Information about who or what created this test run. Null if the creator is unknown.
Properties of creator
name
string
The name of the creator.
Example: demo
type
string
The type of creator (e.g. "ci", "user", "agent").
Example: ci
launcher required
string
The name of the launcher that kicked off this test run.
Example: Payments Nightly
description
string (nullable)
A human-readable description of the run. Null if no description was provided.
Example: basic_test on main
parameters
object (nullable)
Test run parameters. Null if no parameters were specified.
Properties of parameters
antithesis.config_image
string
The image version of your config image. This should be a single image version formatted in the same way as those in the antithesis.images parameter.
Example: my-config:latest
antithesis.description
string
A description of the test run. Appears in report headers and any emails triggered by the run.
Example: basic_test on main
antithesis.duration
string
Desired duration of the test run in minutes.
Example: 30
antithesis.images
string
A semicolon-delimited list of container image versions needed in the testing environment. Each entry in the format [REGISTRY/]NAME(:TAG|@DIGEST). In most cases, images are parsed from the orchestration configuration (e.g. docker-compose.yaml or /manifests) and do not need to be specified here. It is recommended to use a digest over a tag. Images specified by digest will be tagged as latest within the Antithesis environment. The default registry is us-central1-docker.pkg.dev/molten-verve-216720/$TENANT_NAME-repository/. When images mentioned in the config are also passed via this parameter, the value here overwrites the config. We recommend only using this parameter for images not already mentioned in the config files.
Example: registry/container_1:tag1; registry/container_2:latest
antithesis.is_ephemeral
string (nullable)Available values: true, false
A boolean (represented as "true" or "false") that indicates whether or not the run's results should be reflected in future reports as a historic result. Set to "true" when kicking off one-off, exploratory runs. Defaults to "false".
antithesis.report.recipients
string
A semicolon-delimited list of email addresses to receive the triage report link. If not specified, emails are sent to the default users configured for the endpoint.
Example: user1@example.com; user2@example.com
antithesis.source
string
An identifier used to separate property history in reports. Each property's history is generated from all previous runs sharing the same source value. Useful for tracking test history per branch.
Example: main

Additional properties: string — Additional parameters including tooling integration parameters (e.g. antithesis.integrations.<type>.callback_url, antithesis.integrations.<type>.token where type is github, discord, or slack).

links
object (nullable)
Relevant links for this test run. Null if no links are available yet.
Properties of links
triage_report
string <uri>
URL to the triage report for this test run.
next_cursor
string (nullable)
Opaque pagination cursor. Pass as the after query parameter to fetch the next page. Null if no more pages.
Example response
{
"data": [
{
"run_id": "9043254f65c9c65d63fe043a0abfc7fc-53-1",
"status": "completed",
"created_at": "2026-04-28T13:49:49Z",
"launcher": "Research Nightly",
"started_at": "2026-04-28T13:49:49Z",
"completed_at": "2026-04-28T14:14:07Z",
"creator": {
"name": "abc.xyz",
"type": "user"
},
"parameters": {
"antithesis.description": "Placeholder description",
"antithesis.integrations.type": "none",
"antithesis.is_ephemeral": "false"
},
"links": {
"triage_report": "https://antithesis-dev.antithesis.com/report/VQ81z_5My-BjOmj6uFNKqVPq/Pv_GDPOCDEer8yk3Tf90Twj-83iedGwTgf60FyOYtA8.html?auth=v2.public.eyJuYmYiOiIyMDI2LTA0LTI4VDEzOjE0OjA1LjY3NTMyMTY1N1oiLCJzY29wZSI6eyJSZXBvcnRTY29wZVYxIjp7ImFzc2V0IjoiUHZfR0RQT0NERWVyOHlrM1RmOTBUd2otODNpZWRHd1RnZjYwRnlPWXRBOC5odG1sIiwicmVwb3J0X2lkIjoiVlE4MXpfNU15LUJqT21qNnVGTktxVlBxIn19fTuj6S2XLg2SC-7dhP7H4CNTV5WZME2xiXlmReHLchLERjHxLXaOVxnkkv2Li5VF_4MLtIxunbBl_4gOwNJE3gY&debug=true"
}
},
{
"run_id": "ced73597f5f6499a6041f4c7f2329cf1-53-1",
"status": "completed",
"created_at": "2026-04-28T13:49:49Z",
"launcher": "Thesis",
"started_at": "2026-04-28T13:49:49Z",
"completed_at": "2026-04-28T14:07:36Z",
"creator": {
"name": "abc.xyz",
"type": "user"
},
"parameters": {
"antithesis.description": "Placeholder description",
"antithesis.integrations.type": "none",
"antithesis.is_ephemeral": "true"
},
"links": {
"triage_report": "https://antithesis-dev.antithesis.com/report/upBLS-4SrdaVqSi7tv5IbF38/Fqt1GZOTLPd978JxmCxAY-fXoUWvnqDjaTOmRM2g_g4.html?auth=v2.public.eyJzY29wZSI6eyJSZXBvcnRTY29wZVYxIjp7ImFzc2V0IjoiRnF0MUdaT1RMUGQ5NzhKeG1DeEFZLWZYb1VXdm5xRGphVE9tUk0yZ19nNC5odG1sIiwicmVwb3J0X2lkIjoidXBCTFMtNFNyZGFWcVNpN3R2NUliRjM4In19LCJuYmYiOiIyMDI2LTA0LTI4VDEzOjA3OjI1LjcwMDgzODkwM1oifVZW5_voXDGIhlndVP0FXfpDpBhUyYPbm99Zl7DlSzO38NSGXVU4_hKliNLgMGz1SXP9VW4NJLwDcEGetW224gY&debug=true"
},
"session_id": "da7ae868398bbbc39bb6fe183e6a8880-53-1"
}
],
"next_cursor": "MjAyNi0wNC0yOFQxMzo0OTo0NVosMDM2MDc0MjdmMDg0NmE0OGE3ZjY2ZTQyYTUxOTY3ODktNTMtMQ=="
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Get test run details

GET /api/v0/runs/{run_id}

Returns the full details of a single test run, including results.

Parameters
run_id path required
string
Unique identifier of the test run to retrieve.
Responses
200 Full details of the requested test run.

Content type: application/json

run_id required
string
Unique identifier for the test run.
Example: 9325f006ffd3a399a8497bc888878b97-50-1
status required
stringAvailable values: starting, in_progress, completed, cancelled, incomplete, unknown
Current lifecycle status of a test run. starting: the run is being set up. in_progress: the run is actively running. completed: the run finished successfully. cancelled: the run was cancelled before completion. incomplete: the run did not complete successfully. unknown: the status of the run is unknown.
created_at required
string <date-time>
Timestamp when the test run was created (ISO 8601).
started_at
string <date-time> (nullable)
Timestamp when the test run started executing. Null if the run has not yet started.
completed_at
string <date-time> (nullable)
Timestamp when the test run finished. Null if the run is still in progress or has not started.
creator
object (nullable)
Information about who or what created this test run. Null if the creator is unknown.
Properties of creator
name
string
The name of the creator.
Example: demo
type
string
The type of creator (e.g. "ci", "user", "agent").
Example: ci
launcher required
string
The name of the launcher that kicked off this test run.
Example: Payments Nightly
description
string (nullable)
A human-readable description of the run. Null if no description was provided.
Example: basic_test on main
parameters
object (nullable)
Test run parameters. Null if no parameters were specified.
Properties of parameters
antithesis.config_image
string
The image version of your config image. This should be a single image version formatted in the same way as those in the antithesis.images parameter.
Example: my-config:latest
antithesis.description
string
A description of the test run. Appears in report headers and any emails triggered by the run.
Example: basic_test on main
antithesis.duration
string
Desired duration of the test run in minutes.
Example: 30
antithesis.images
string
A semicolon-delimited list of container image versions needed in the testing environment. Each entry in the format [REGISTRY/]NAME(:TAG|@DIGEST). In most cases, images are parsed from the orchestration configuration (e.g. docker-compose.yaml or /manifests) and do not need to be specified here. It is recommended to use a digest over a tag. Images specified by digest will be tagged as latest within the Antithesis environment. The default registry is us-central1-docker.pkg.dev/molten-verve-216720/$TENANT_NAME-repository/. When images mentioned in the config are also passed via this parameter, the value here overwrites the config. We recommend only using this parameter for images not already mentioned in the config files.
Example: registry/container_1:tag1; registry/container_2:latest
antithesis.is_ephemeral
string (nullable)Available values: true, false
A boolean (represented as "true" or "false") that indicates whether or not the run's results should be reflected in future reports as a historic result. Set to "true" when kicking off one-off, exploratory runs. Defaults to "false".
antithesis.report.recipients
string
A semicolon-delimited list of email addresses to receive the triage report link. If not specified, emails are sent to the default users configured for the endpoint.
Example: user1@example.com; user2@example.com
antithesis.source
string
An identifier used to separate property history in reports. Each property's history is generated from all previous runs sharing the same source value. Useful for tracking test history per branch.
Example: main

Additional properties: string — Additional parameters including tooling integration parameters (e.g. antithesis.integrations.<type>.callback_url, antithesis.integrations.<type>.token where type is github, discord, or slack).

links
object (nullable)
Relevant links for this test run. Null if no links are available yet.
Properties of links
triage_report
string <uri>
URL to the triage report for this test run.
results
object
Aggregate results for the test run. Structure varies by run type. May be absent or partial for runs that have not yet completed.
failure_moment
object (nullable)
The moment at which the run became incomplete. Populated only when the run is incomplete. Pass this moment's vtime and input_hash to the logs endpoint to retrieve logs around the event that caused the run to become incomplete.
Properties of failure_moment
input_hash required
string
The input hash value identifying the moment.
Example: -3625518438076122494
vtime required
string
The virtual time value identifying the moment.
Example: 398.4898056755774
Example response
{
"run_id": "ff0192ee9607f8ffa39187731d359c43-54-0",
"status": "completed",
"created_at": "2026-05-14T03:01:27Z",
"launcher": "basic_k8s_test",
"started_at": "2026-05-14T03:01:27Z",
"completed_at": "2026-05-14T03:29:04Z",
"creator": {
"name": "antithesis_pdev",
"type": "antithesis_scheduler"
},
"parameters": {
"antithesis.config_image": "etcd-config-k8s:latest",
"antithesis.description": "Nightly: Basic K8s test (etcd)",
"antithesis.duration": "15",
"antithesis.integrations.type": "none",
"antithesis.is_ephemeral": "false",
"antithesis.report.recipients": "foo.bar@antithesis.com"
},
"links": {
"triage_report": "https://antithesis-dev.antithesis.com/report/mj9kKGUQwD-NuB5MKdvoBbUs/hHB2tlELW0k2fysU3tEHMyluQqqzBhspg2JalbFl3tQ.html?auth=v2.public.eyJzY29wZSI6eyJSZXBvcnRTY29wZVYxIjp7ImFzc2V0IjoiaEhCMnRsRUxXMGsyZnlzVTN0RUhNeWx1UXFxekJoc3BnMkphbGJGbDN0US5odG1sIiwicmVwb3J0X2lkIjoibWo5a0tHVVF3RC1OdUI1TUtkdm9CYlVzIn19LCJuYmYiOiIyMDI2LTA1LTE0VDAyOjI5OjAyLjY1MTUxNzIyMloifetWU3K1qICy8CzM5VzyveqhPMgpKgej_FOogxKqyfG9r16HsGjbAEKoiXXIIl6pi6_hvgIduzAgroEoNigj3wo"
},
"results": {
"environment": {
"antithesis_version": "v54-0",
"images": [
{
"name": "etcd-config-k8s",
"image": "us-central1-docker.pkg.dev/molten-verve-216720/antithesis-pdev-repository/etcd-config-k8s@sha256:16f57a2ec79c0d61886c28774264ab1d027e51a9301e014941404a35dcf8c631",
"tag": "latest"
},
{
"name": "mirrored-coredns-coredns",
"image": "docker.io/rancher/mirrored-coredns-coredns@sha256:4f7a57135719628cf2070c5e3cbde64b013e90d4c560c5ecbf14004181f91998"
},
{
"name": "etcd",
"image": "docker.io/bitnamilegacy/etcd@sha256:4abe38869d5919c9ec70b2008713c2eb90c1b26d9e6700e126875894681b5b99",
"tag": "3.5"
},
{
"name": "local-path-provisioner",
"image": "docker.io/rancher/local-path-provisioner@sha256:5fb0394abf87407a27cc56db94334eb0c92d0b5de2636683a7ec51f38143dfc9"
},
{
"name": "busybox",
"image": "docker.io/library/busybox@sha256:e56bc0f7fc7d4452b17eb4ac0a9261ff4c9a469afa45d2b673e03650716d095d"
},
{
"name": "mirrored-pause",
"image": "docker.io/rancher/mirrored-pause@sha256:7c38f24774e3cbd906d2d33c38354ccf787635581c122965132c9bd309754d4a"
},
{
"name": "etcd-client-k8s",
"image": "us-central1-docker.pkg.dev/molten-verve-216720/antithesis-pdev-repository/etcd-client-k8s@sha256:112394d9bacd070df4a8d18db3b7575d6e314220ee2462a31dc24df2e98373cc",
"tag": "latest"
}
]
}
}
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Get logs for a specific moment

GET /api/v0/runs/{run_id}/logs

Streams the logs for a moment in the test run as newline-delimited JSON (NDJSON) in chronological order. Each line is a self-contained JSON object. The response is streamed and the connection remains open until all matching log lines have been sent.

Parameters
run_id path required
string
Unique identifier of the test run to retrieve logs for.
input_hash query required
string
The input hash value identifying the moment.
vtime query required
string
The virtual time value identifying the moment.
begin_vtime query
string
Start streaming logs from this virtual time instead of from the beginning of the test run.
begin_input_hash query
string
The input hash of the moment to start streaming logs from. Must be provided together with begin_vtime to fully identify the begin moment.
Responses
200 A stream of log lines in NDJSON format. Each line is a JSON object.

Content type: application/x-ndjson

moment required
object
Identifies a specific moment in the run's execution timeline.
Properties of moment
input_hash required
string
The input hash value identifying the moment.
Example: -3625518438076122494
vtime required
string
The virtual time value identifying the moment.
Example: 398.4898056755774

Accepts additional properties.

A raft pre-vote request log line
{
"moment": {
"input_hash": "-3625518438076122494",
"vtime": "398.4898056755774"
},
"output_text": "{\"level\":\"info\",\"ts\":\"2026-03-26T01:42:55.628233Z\",\"logger\":\"raft\",\"caller\":\"v3@v3.6.0/raft.go:1064\",\"msg\":\"2c6c7b8d0d0933f7 [logterm: 78, index: 436] sent MsgPreVote request to dcb68c82481661be at term 79\"}",
"source": {
"container": "etcd0",
"name": "etcd0",
"stream": "error"
}
}
A slow request warning log line
{
"output_text": "{\"level\":\"warn\",\"ts\":\"2026-03-26T01:41:30.289731Z\",\"caller\":\"txn/util.go:93\",\"msg\":\"apply request took too long\",\"took\":\"200.69629ms\",\"expected-duration\":\"100ms\",\"prefix\":\"read-only range \",\"request\":\"key:\\\"key\\\" \",\"response\":\"\",\"error\":\"context deadline exceeded\"}",
"source": {
"container": "etcd1",
"name": "etcd1",
"stream": "error"
},
"moment": {
"input_hash": "-8212366801093655922",
"vtime": "313.15126806590706"
}
}
A watch channel closed log line
{
"output_text": "{\"level\":\"info\",\"ts\":1774489067.310644,\"caller\":\"client/watch.go:101\",\"msg\":\"Watch channel closed\"}",
"source": {
"container": "client",
"name": "antithesis/pods/client/commands/robustness/singleton_driver_traffic.err",
"pid": 45,
"stream": "error"
},
"moment": {
"input_hash": "-3704286174724581163",
"vtime": "90.17225814750418"
}
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Stream build logs

GET /api/v0/runs/{run_id}/build_logs

Streams the build logs for a test run as newline-delimited JSON (NDJSON). Each line contains a timestamp, a stream indicator, and the log text. The response is streamed and the connection remains open until all matching log lines have been sent.

Parameters
run_id path required
string
Unique identifier of the test run to retrieve build logs for.
Responses
200 A stream of build log lines in NDJSON format.

Content type: application/x-ndjson

timestamp required
string <date-time>
UTC timestamp of the log line (ISO 8601).
Example: 2025-03-20T02:01:12Z
stream
stringAvailable values: stdout, stderr
Whether this line is from standard output or standard error.
text required
string
The log line text.
Example: Building image payments-service...

Accepts additional properties.

Example response
{"timestamp":"2026-05-14T03:03:23.481Z","text":"","stream":"stdout"}
{"timestamp":"2026-05-14T03:03:24.668Z","text":"About to wait for the flock. If the script is hanging here, somebody else is doing a build.","stream":"stdout"}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

List test run properties

GET /api/v0/runs/{run_id}/properties

Returns a paginated list of property results for a test run, including both passing and failing properties by default. Use the status parameter to filter by a specific status.

Parameters
run_id path required
string
Unique identifier of the test run to retrieve properties for.
status query
stringAvailable values: Passing, Failing
Filter properties by status. When omitted, properties of all statuses are returned.
limit query
integer Default: 50Min: 1 · Max: 100
Maximum number of results to return. Server-capped at 100.
after query
string
Cursor for pagination. Pass the next_cursor value from a previous response to fetch the next page.
Responses
200 A paginated list of property results.

Content type: application/json

data required
array<any>
One of for items of data

object

name required
string
The name of the property.
description
string
A human-readable description of the property.
status required
stringAvailable values: Passing, Failing
Whether the property is currently passing or failing.
is_event required
boolean
Whether this property is an event-based property. When true, examples and counterexamples are Event objects; when false, they may have any shape. If is_event is false, it's evaluated at the level of a whole test rather than a specific branch of execution, e.g., 'Recent version of software was provided' is evaluated at a whole test level and is independent of a branch of execution.
is_group
boolean
When true, this property represents a group property that contains other properties. Individual properties belonging to this group will reference it by name via the group field.
group
string
The name of the group this property belongs to. Present only for properties that are part of a group.
example_count
integer <uint32>
Total number of examples observed.
counterexample_count
integer <uint32>
Total number of counterexamples observed.
examples
array<object>
A sample of example events that satisfy the property. This is not an exhaustive list.
Items of examples
moment required
object
Identifies a specific moment in the run's execution timeline.
Properties of moment
input_hash required
string
The input hash value identifying the moment.
Example: -3625518438076122494
vtime required
string
The virtual time value identifying the moment.
Example: 398.4898056755774

Accepts additional properties.

counterexamples
array<object>
A sample of counterexample events that violate the property. This is not an exhaustive list.
Items of counterexamples
moment required
object
Identifies a specific moment in the run's execution timeline.
Properties of moment
input_hash required
string
The input hash value identifying the moment.
Example: -3625518438076122494
vtime required
string
The virtual time value identifying the moment.
Example: 398.4898056755774

Accepts additional properties.

Accepts additional properties.

object

name required
string
The name of the property.
description
string
A human-readable description of the property.
status required
stringAvailable values: Passing, Failing
Whether the property is currently passing or failing.
is_event required
boolean
Whether this property is an event-based property. When true, examples and counterexamples are Event objects; when false, they may have any shape. If is_event is false, it's evaluated at the level of a whole test rather than a specific branch of execution, e.g., 'Recent version of software was provided' is evaluated at a whole test level and is independent of a branch of execution.
is_group
boolean
When true, this property represents a group property that contains other properties. Individual properties belonging to this group will reference it by name via the group field.
group
string
The name of the group this property belongs to. Present only for properties that are part of a group.
example_count
integer <uint32>
Total number of examples observed.
counterexample_count
integer <uint32>
Total number of counterexamples observed.
examples
array<any>
A sample of example instances that satisfy the property. This is not an exhaustive list.
counterexamples
array<any>
A sample of counterexample instances that violate the property. This is not an exhaustive list.

Accepts additional properties.

next_cursor
string (nullable)
Opaque pagination cursor. Pass as the after query parameter to fetch the next page. Null if no more pages.
Example response
{
"data": [
{
"name": "Sometimes: Root moments",
"description": null,
"status": "Passing",
"is_event": true,
"is_group": false,
"example_count": 1,
"counterexample_count": 0,
"examples": [
{
"env_setup": "complete",
"source": {
"name": "env_root"
},
"moment": {
"input_hash": "-363173456058459333",
"vtime": "22.475549569819123"
}
}
],
"counterexamples": []
},
{
"name": "Input count",
"description": null,
"status": "Passing",
"is_event": false,
"is_group": false,
"example_count": 1,
"counterexample_count": 0,
"examples": [
318446
],
"counterexamples": []
}
]
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Search run events

GET /api/v0/runs/{run_id}/events

Searches events in a test run for the given query string. The search matches against output text, assertion messages, function names, and test composer commands. Results are streamed as newline-delimited JSON (NDJSON). Each line is a self-contained JSON object representing an event.

Parameters
run_id path required
string
Unique identifier of the test run to search.
q query required
string
The search term. Matches events where this string is contained in the output text, assertion message, function name, or test command.
Responses
200 A stream of matching events in NDJSON format. Each line is a JSON object.

Content type: application/x-ndjson

moment required
object
Identifies a specific moment in the run's execution timeline.
Properties of moment
input_hash required
string
The input hash value identifying the moment.
Example: -3625518438076122494
vtime required
string
The virtual time value identifying the moment.
Example: 398.4898056755774

Accepts additional properties.

Example response
{"moment":{"input_hash":"-2978388909754056022","vtime":22.66615231265314},"IPT_bytes_out":1073904,"source":{"command_id":"BSPID1ERCnmoGEnk6WjwIZ4o3TM","name":"setup","stream":"info"},"output_text":"3:08:17AM: ^ Pending: ContainerCreating"}
{"moment":{"input_hash":"-2978388909754056022","vtime":22.6661523131188},"IPT_bytes_out":1074064,"source":{"command_id":"BSPID1ERCnmoGEnk6WjwIZ4o3TM","name":"setup","stream":"info"},"output_text":"3:08:17AM: ^ Pending: ContainerCreating"}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Launch

Launch a test run or debugging session.

Launch a test

POST /api/v1/launch/{launcher_name}

Kicks off a test using the specified launcher (e.g. basic_test or basic_k8s_test). Fetches the relevant container images specified in configuration files and in antithesis.images, builds the test environment, and runs the test for the duration set in antithesis.duration. Returns an HTTP status code indicating whether the test was successfully started (not the test result itself).

Parameters
launcher_name path required
string
Name of the launcher to use. Use basic_test for Docker Compose orchestration or basic_k8s_test for Kubernetes orchestration.
Request Body required

Content type: application/json

params required
object
Launch parameters. All parameters are optional.
Properties of params
antithesis.config_image
string
The image version of your config image. This should be a single image version formatted in the same way as those in the antithesis.images parameter.
Example: my-config:latest
antithesis.description
string
A description of the test run. Appears in report headers and any emails triggered by the run.
Example: basic_test on main
antithesis.duration
string
Desired duration of the test run in minutes.
Example: 30
antithesis.images
string
A semicolon-delimited list of container image versions needed in the testing environment. Each entry in the format [REGISTRY/]NAME(:TAG|@DIGEST). In most cases, images are parsed from the orchestration configuration (e.g. docker-compose.yaml or /manifests) and do not need to be specified here. It is recommended to use a digest over a tag. Images specified by digest will be tagged as latest within the Antithesis environment. The default registry is us-central1-docker.pkg.dev/molten-verve-216720/$TENANT_NAME-repository/. When images mentioned in the config are also passed via this parameter, the value here overwrites the config. We recommend only using this parameter for images not already mentioned in the config files.
Example: registry/container_1:tag1; registry/container_2:latest
antithesis.is_ephemeral
string (nullable)Available values: true, false
A boolean (represented as "true" or "false") that indicates whether or not the run's results should be reflected in future reports as a historic result. Set to "true" when kicking off one-off, exploratory runs. Defaults to "false".
antithesis.report.recipients
string
A semicolon-delimited list of email addresses to receive the triage report link. If not specified, emails are sent to the default users configured for the endpoint.
Example: user1@example.com; user2@example.com
antithesis.source
string
An identifier used to separate property history in reports. Each property's history is generated from all previous runs sharing the same source value. Useful for tracking test history per branch.
Example: main

Additional properties: string — Additional parameters including tooling integration parameters (e.g. antithesis.integrations.<type>.callback_url, antithesis.integrations.<type>.token where type is github, discord, or slack).

Responses
202 Test successfully launched.

Content type: application/json

runId required
string
Unique identifier for the launched run.
Example: c8d2f4a6e0b3197d5f8a2c4e6b0d3f79-49-1
statusCode required
integer
HTTP status code indicating whether the test was successfully started.
Example: 200
Example response
{
"statusCode": 202,
"runId": "0e62aa320a60967967096401ce826bd5-54-1"
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Launch a debugging session

POST /api/v1/launch/debugging

Kicks off a multiverse debugging session that'll be available for six hours. Returns an HTTP status code indicating whether the debugging session request was successfully accepted and the session is getting ready.

Request Body required

Content type: application/json

params required
object
Launch parameters. All parameters are optional.
Properties of params
antithesis.debugging.session_id required
string
The session ID of the test run you want to start debugging. Obtain it from the copy moment button in the triage report.
Example: d5d1c9cf0e64b5dd69b00e97b07fe3f4-18-1
antithesis.debugging.input_hash required
string
Obtain it from the copy moment button in the triage report.
Example: -9067336385060865277
antithesis.debugging.vtime required
string
The virtual time at which you want to start debugging. Obtain it from the copy moment button in the triage report.
Example: 45.334635781589895
antithesis.event_description
string
A description of the debugging event or session.
Example: Investigate the failed assertion at this moment
antithesis.report.recipients
string
A semicolon-delimited list of email addresses that receive the link to the debugging session when ready. If not specified, emails are sent to the default users configured for the endpoint.
Example: user1@example.com; user2@example.com

Accepts additional properties.

Responses
202 Debugging session launcher successfully started.

Content type: application/json

run_id required
string
Unique identifier for the launched debugging session.
Example: c8d2f4a6e0b3197d5f8a2c4e6b0d3f79-49-1

Accepts additional properties.

Example response
{
"statusCode": 202,
"runId": "633c43d99162a42d8c6b784751802f30-54-1"
}

Error responses (4xx, 5xx) are shared across all endpoints — see Error responses.

Error responses

The following error responses can be returned by any endpoint in the API. All errors share the same schema.

400 Bad request — likely missing or invalid parameters.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "limit must be between 1 and 100"
}
401 Unauthorized — invalid or missing authentication credentials.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "Invalid or expired bearer token."
}
403 Forbidden — the authenticated user does not have permission to access this resource.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "You do not have permission to access this resource."
}
404 The requested resource was not found.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "Run not found: 9325f006ffd3a399a8497bc888878b97-48-1"
}
405 Method not allowed — the HTTP method is not supported for this endpoint.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "Resource not found"
}
406 Not acceptable — the requested content type in the Accept header is not supported by this endpoint.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "This endpoint does not support the requested Accept type."
}
429 Rate limit exceeded. The response includes a `Retry-After` header indicating the number of seconds to wait before retrying. We recommend implementing a retry mechanism to handle rate limiting. Follow an exponential backoff schedule to reduce request volume when necessary, and add randomness (jitter) to the backoff schedule to avoid thundering-herd retries.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "Too many requests. Retry after 30 seconds."
}
500 Unknown internal server error.

Content type: application/json

message required
string
A human-readable explanation of what went wrong.
Example: limit must be between 1 and 100
Example response
{
"message": "An unexpected error occurred. Please try again later."
}
  • Introduction
  • Welcome to Antithesis
  • How Antithesis works
  • Using Antithesis with AI
  • Get started
  • Setup guide
  • Overview
  • For Docker Compose users
  • For Kubernetes users
  • Test an example system
  • Overview
  • With Docker Compose
  • Overview
  • Build and run an etcd cluster
  • Add a test template
  • With Kubernetes
  • Overview
  • Build and run an etcd cluster
  • Add a test template
  • Product
  • Test templates
  • Overview
  • Creating test templates
  • Test commands
  • How to check a test template locally
  • How to port tests to Antithesis
  • Test launchers
  • The triage report
  • Overview
  • Findings
  • Environment
  • Utilization
  • Properties
  • Logs Explorer & multiverse map
  • Debugging
  • Overview
  • Causality analysis
  • Multiverse debugging
  • Simple Multiverse debugging
  • Advanced
  • Overview
  • The Antithesis multiverse
  • Querying with event sets
  • Environment utilities
  • Using the Antithesis Notebook
  • Cookbook
  • Tooling integrations
  • CI integration
  • Discord and Slack integrations
  • Issue tracker integration - BETA
  • Configuration
  • Access and authentication
  • The Antithesis environment
  • Best practices
  • Docker best practices
  • Kubernetes best practices
  • Optimizing for testing
  • Concepts
  • Properties and Assertions
  • Overview
  • Properties in Antithesis
  • Assertions in Antithesis
  • Sometimes Assertions
  • Properties to test for
  • Fault injection
  • Reference
  • Webhooks
  • Overview
  • Launching a test
  • Launching a debugging session
  • webhook reference
  • Antithesis API
  • Handling external dependencies
  • SDK reference
  • Overview
  • Define test properties
  • Generate randomness
  • Manage test lifecycle
  • Assertion catalog
  • Coverage instrumentation
  • Go
  • Go SDK
  • Instrumentor
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • Java
  • Java SDK
  • Using the SDK
  • Building your software
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • C SDK
  • C++
  • C++ SDK
  • C/C++ Instrumentation
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • JavaScript
  • Python
  • Python SDK
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • Rust
  • Rust SDK
  • Instrumentation
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • .NET
  • .NET SDK
  • Instrumentation
  • Tutorial
  • Assert (reference)
  • Lifecycle (reference)
  • Random (reference)
  • Languages not listed above
  • Fallback SDK
  • Assert (reference)
  • Lifecycle (reference)
  • Assertion Schema
  • FAQ
  • Product FAQs
  • About Antithesis POCs
  • Release notes
  • Release notes
  • General reliability resources
  • Reliability glossary
  • Techniques for better software testing
  • Autonomous testing
  • Deterministic simulation testing
  • Property-based testing
  • White paper — How much does an outage cost?
  • Catalog of reliability properties for key-value datastores
  • Catalog of reliability properties for blockchains
  • Test ACID compliance with a ring test