Chaos Mesh Experiments API
Create, manage, pause, and delete chaos experiments
Create, manage, pause, and delete chaos experiments
openapi: 3.1.0
info:
title: Chaos Mesh Dashboard Archives Experiments API
description: The Chaos Mesh Dashboard API provides REST endpoints for managing chaos experiments, schedules, workflows, and events on Kubernetes clusters. Chaos Mesh is a cloud-native chaos engineering platform that supports fault injection into pods, nodes, networks, IO subsystems, and cloud provider resources. The Dashboard API is served by the chaos-dashboard component and is the backend for the Chaos Mesh web UI, accessible at /api on the dashboard server.
version: '2.5'
contact:
name: Chaos Mesh Community
url: https://chaos-mesh.org/community/
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:2333/api
description: Default Chaos Mesh Dashboard server
tags:
- name: Experiments
description: Create, manage, pause, and delete chaos experiments
paths:
/experiments:
get:
operationId: listExperiments
summary: Chaos Mesh List chaos experiments
description: Returns a list of chaos experiments from the Kubernetes cluster. Results can be filtered by namespace, name, kind of chaos, and status. Each experiment entry includes its UID, name, namespace, kind, creation time, and current status.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/namespaceParam'
- name: name
in: query
description: Filter experiments by name (partial match supported).
required: false
schema:
type: string
- name: kind
in: query
description: Filter experiments by chaos kind (e.g., PodChaos, NetworkChaos, IOChaos, StressChaos, TimeChaos, HTTPChaos).
required: false
schema:
type: string
- name: status
in: query
description: Filter experiments by status (e.g., running, paused, finished).
required: false
schema:
type: string
responses:
'200':
description: List of chaos experiments returned successfully.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Experiment'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
post:
operationId: createExperiment
summary: Chaos Mesh Create a new chaos experiment
description: Creates a new chaos experiment in the Kubernetes cluster by submitting a chaos custom resource definition. The request body should contain a valid Chaos Mesh custom resource object such as PodChaos, NetworkChaos, IOChaos, StressChaos, TimeChaos, HTTPChaos, or other supported chaos kinds. The experiment begins injecting faults immediately upon creation.
tags:
- Experiments
requestBody:
description: Chaos experiment custom resource definition.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/KubeObjectDesc'
responses:
'200':
description: Experiment created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/KubeObjectDesc'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
operationId: batchDeleteExperiments
summary: Chaos Mesh Batch delete chaos experiments
description: Deletes multiple chaos experiments in a single request. Experiment UIDs to be deleted are specified as a comma-separated list in the uids query parameter. Force deletion bypasses graceful cleanup of injected faults.
tags:
- Experiments
parameters:
- name: uids
in: query
description: Comma-separated list of experiment UIDs to delete.
required: true
schema:
type: string
- name: force
in: query
description: Force delete experiments without waiting for fault cleanup.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Experiments deleted successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/experiments/{uid}:
get:
operationId: getExperiment
summary: Chaos Mesh Get a chaos experiment
description: Returns detailed information about a specific chaos experiment identified by its UID. The response includes the full experiment spec, current status, and associated Kubernetes resource details.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/uidParam'
responses:
'200':
description: Experiment details returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/ExperimentDetail'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
operationId: deleteExperiment
summary: Chaos Mesh Delete a chaos experiment
description: Deletes a specific chaos experiment by its UID. The experiment and its associated Kubernetes custom resource are removed. In-progress fault injections are terminated during cleanup.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/uidParam'
- name: force
in: query
description: Force delete without waiting for fault cleanup.
required: false
schema:
type: boolean
default: false
responses:
'200':
description: Experiment deleted successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/experiments/pause/{uid}:
put:
operationId: pauseExperiment
summary: Chaos Mesh Pause a chaos experiment
description: Pauses a running chaos experiment by its UID. When paused, fault injection is suspended but the experiment resource is retained. The experiment can be resumed with the start endpoint.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/uidParam'
responses:
'200':
description: Experiment paused successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/experiments/start/{uid}:
put:
operationId: startExperiment
summary: Chaos Mesh Start a chaos experiment
description: Resumes a paused chaos experiment by its UID. Once started, fault injection resumes according to the experiment spec. This endpoint is used to unpause experiments that were previously paused.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/uidParam'
responses:
'200':
description: Experiment started successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/experiments/state:
get:
operationId: getExperimentsState
summary: Chaos Mesh Get the status of all experiments
description: Returns a summary of experiment counts grouped by status across the cluster. Useful for dashboard overview displays showing how many experiments are running, paused, stopped, or finished.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/namespaceParam'
responses:
'200':
description: Experiment status summary returned successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/ExperimentState'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/api/experiments:
get:
operationId: listExperiments
summary: Chaos Mesh List experiments
description: Returns a list of chaos experiments across all or a filtered set of namespaces. Results can be filtered by namespace, kind (chaos type), name substring, and status. Each experiment entry includes the chaos type, namespace, name, current status, and creation timestamp.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/NamespaceQuery'
- $ref: '#/components/parameters/KindQuery'
- $ref: '#/components/parameters/NameQuery'
- $ref: '#/components/parameters/StatusQuery'
responses:
'200':
description: List of experiments
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ExperimentSummary'
'400':
$ref: '#/components/responses/BadRequest_2'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
post:
operationId: createExperiment
summary: Chaos Mesh Create an experiment
description: Creates a new chaos experiment by submitting a Chaos Mesh custom resource to Kubernetes. The request body must include the kind field specifying the chaos type (e.g., PodChaos, NetworkChaos) and a spec field with the chaos-type-specific configuration. The experiment begins immediately upon creation unless a duration or schedule is specified.
tags:
- Experiments
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExperimentCreateRequest'
responses:
'200':
description: Experiment created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ExperimentDetail_2'
'400':
$ref: '#/components/responses/BadRequest_2'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
/api/experiments/{uid}:
get:
operationId: getExperiment
summary: Chaos Mesh Get an experiment
description: Returns detailed information about a specific chaos experiment identified by its UID. The response includes the full experiment specification, current status, affected pods, and event history.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/ExperimentUID'
responses:
'200':
description: Experiment details
content:
application/json:
schema:
$ref: '#/components/schemas/ExperimentDetail_2'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound_2'
'500':
$ref: '#/components/responses/InternalError'
delete:
operationId: deleteExperiment
summary: Chaos Mesh Delete an experiment
description: Deletes a chaos experiment and stops the ongoing fault injection. When force is true, the experiment is deleted immediately without waiting for graceful cleanup. The deleted experiment is moved to the archives.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/ExperimentUID'
- name: force
in: query
required: false
description: When true, force-deletes the experiment without waiting for cleanup.
schema:
type: boolean
default: false
responses:
'200':
description: Experiment deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound_2'
'500':
$ref: '#/components/responses/InternalError'
/api/experiments/{uid}/pause:
put:
operationId: pauseExperiment
summary: Chaos Mesh Pause an experiment
description: Pauses a running chaos experiment, stopping fault injection without deleting the experiment resource. The experiment can be resumed by calling the start endpoint. Useful for temporarily halting chaos during incident response.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/ExperimentUID'
responses:
'200':
description: Experiment paused successfully
'400':
$ref: '#/components/responses/BadRequest_2'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound_2'
/api/experiments/{uid}/start:
put:
operationId: startExperiment
summary: Chaos Mesh Start (resume) an experiment
description: Resumes a paused chaos experiment, reinstating fault injection. Can also be used to start an experiment that was created in a paused state.
tags:
- Experiments
parameters:
- $ref: '#/components/parameters/ExperimentUID'
responses:
'200':
description: Experiment started successfully
'400':
$ref: '#/components/responses/BadRequest_2'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound_2'
components:
schemas:
ExperimentState:
type: object
description: Summary count of experiments grouped by status.
properties:
running:
type: integer
description: Number of currently running experiments.
paused:
type: integer
description: Number of paused experiments.
stopped:
type: integer
description: Number of stopped experiments.
finished:
type: integer
description: Number of finished experiments.
total:
type: integer
description: Total number of experiments.
ExperimentSummary:
type: object
description: Summary of a chaos experiment as returned in list operations.
properties:
uid:
type: string
format: uuid
description: Unique identifier for the experiment.
kind:
type: string
description: Chaos type kind, e.g., PodChaos or NetworkChaos.
example: PodChaos
namespace:
type: string
description: Kubernetes namespace containing the experiment.
example: default
name:
type: string
description: Name of the experiment resource.
example: pod-failure-test
created_at:
type: string
format: date-time
description: Timestamp when the experiment was created.
status:
type: string
description: Current status of the experiment.
enum:
- injecting
- running
- finished
- paused
- stopped
StatusResponse:
type: object
description: Generic status response for operations that do not return a resource.
properties:
status:
type: string
description: Status of the operation (e.g., success).
Experiment:
type: object
description: Summary of a Chaos Mesh experiment stored in the Chaos Mesh database.
properties:
uid:
type: string
format: uuid
description: Unique identifier of the experiment.
name:
type: string
description: Name of the experiment Kubernetes resource.
namespace:
type: string
description: Kubernetes namespace containing the experiment.
kind:
type: string
description: Chaos kind of the experiment (e.g., PodChaos, NetworkChaos, IOChaos, StressChaos, TimeChaos, HTTPChaos).
created_at:
type: string
format: date-time
description: Timestamp when the experiment was created.
status:
type: string
description: Current status of the experiment (e.g., running, paused, finished).
APIError:
type: object
description: Error response returned when an API request fails.
required:
- code
- message
properties:
code:
type: integer
description: HTTP status code of the error.
message:
type: string
description: Human-readable description of the error.
full_text:
type: string
description: Full error text including stack trace or detailed cause.
ExperimentCreateRequest:
type: object
description: Request body for creating a chaos experiment. The apiVersion, kind, metadata, and spec fields map directly to a Kubernetes custom resource manifest.
required:
- apiVersion
- kind
- metadata
- spec
properties:
apiVersion:
type: string
description: Chaos Mesh API version.
const: chaos-mesh.org/v1alpha1
kind:
type: string
description: Chaos type kind.
enum:
- PodChaos
- NetworkChaos
- IOChaos
- StressChaos
- HTTPChaos
- TimeChaos
- DNSChaos
- KernelChaos
- AWSChaos
- GCPChaos
- JVMChaos
- PhysicalMachineChaos
example: PodChaos
metadata:
type: object
description: Kubernetes object metadata.
required:
- name
- namespace
properties:
name:
type: string
description: Name for the experiment resource.
example: pod-failure-test
namespace:
type: string
description: Kubernetes namespace to create the experiment in.
example: default
labels:
type: object
description: Labels to attach to the experiment resource.
additionalProperties:
type: string
annotations:
type: object
description: Annotations to attach to the experiment resource.
additionalProperties:
type: string
spec:
type: object
description: Chaos experiment specification. The structure varies by kind. Refer to the Chaos Mesh CRD reference for field details per type.
additionalProperties: true
ErrorResponse:
type: object
description: Error response returned when an API operation fails.
properties:
code:
type: integer
description: HTTP status code.
example: 404
message:
type: string
description: Human-readable error message.
example: experiment not found
ExperimentDetail:
type: object
description: Detailed information about a chaos experiment including its Kubernetes resource.
properties:
uid:
type: string
format: uuid
description: Unique identifier of the experiment.
name:
type: string
description: Name of the experiment.
namespace:
type: string
description: Kubernetes namespace of the experiment.
kind:
type: string
description: Chaos kind of the experiment.
created_at:
type: string
format: date-time
description: Timestamp when the experiment was created.
status:
type: string
description: Current status of the experiment.
kube_object:
$ref: '#/components/schemas/KubeObjectDesc'
KubeObjectDesc:
type: object
description: A Kubernetes object description used to represent chaos custom resources. Contains the full spec of a Kubernetes resource including apiVersion, kind, metadata, and spec.
properties:
apiVersion:
type: string
description: Kubernetes API version (e.g., chaos-mesh.org/v1alpha1).
kind:
type: string
description: Kubernetes resource kind (e.g., PodChaos, NetworkChaos).
metadata:
$ref: '#/components/schemas/KubeObjectMeta'
spec:
type: object
description: Resource-specific spec object containing the chaos configuration.
additionalProperties: true
ExperimentDetail_2:
type: object
description: Full details of a chaos experiment including spec, status, and affected resources.
properties:
uid:
type: string
format: uuid
description: Unique identifier for the experiment.
kind:
type: string
description: Chaos type kind.
example: NetworkChaos
namespace:
type: string
description: Kubernetes namespace of the experiment.
name:
type: string
description: Name of the experiment resource.
spec:
type: object
description: Full chaos experiment specification as a Kubernetes custom resource spec. Structure varies by kind.
additionalProperties: true
status:
type: string
description: Current execution status.
created_at:
type: string
format: date-time
description: Timestamp when the experiment was created.
experiment_info:
type: object
description: Derived experiment information including the list of affected pods.
additionalProperties: true
KubeObjectMeta:
type: object
description: Kubernetes object metadata fields.
properties:
name:
type: string
description: Name of the Kubernetes resource.
namespace:
type: string
description: Kubernetes namespace of the resource.
labels:
type: object
description: Labels applied to the resource.
additionalProperties:
type: string
annotations:
type: object
description: Annotations applied to the resource.
additionalProperties:
type: string
responses:
BadRequest:
description: Bad request — invalid parameters or request body.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
NotFound:
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
NotFound_2:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest_2:
description: Bad request — invalid parameters or malformed body
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalError:
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Unauthorized — authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalServerError:
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
parameters:
NameQuery:
name: name
in: query
required: false
description: Name substring to filter results by.
schema:
type: string
StatusQuery:
name: status
in: query
required: false
description: Status to filter experiments or schedules by.
schema:
type: string
enum:
- injecting
- running
- finished
- paused
- stopped
uidParam:
name: uid
in: path
description: UUID of the chaos resource.
required: true
schema:
type: string
format: uuid
namespaceParam:
name: namespace
in: query
description: Kubernetes namespace to scope the request to.
required: false
schema:
type: string
NamespaceQuery:
name: namespace
in: query
required: false
description: Kubernetes namespace to filter results by. If omitted, returns results from all namespaces.
schema:
type: string
example: default
KindQuery:
name: kind
in: query
required: false
description: Chaos type kind to filter by, such as PodChaos, NetworkChaos, IOChaos, StressChaos, HTTPChaos, TimeChaos, DNSChaos, or KernelChaos.
schema:
type: string
enum:
- PodChaos
- NetworkChaos
- IOChaos
- StressChaos
- HTTPChaos
- TimeChaos
- DNSChaos
- KernelChaos
- AWSChaos
- GCPChaos
- JVMChaos
- PhysicalMachineChaos
ExperimentUID:
name: uid
in: path
required: true
description: Unique identifier (UUID) of the chaos experiment.
schema:
type: string
format: uuid
externalDocs:
description: Chaos Mesh Documentation
url: https://chaos-mesh.org/docs/