For the complete documentation index, see llms.txt. This page is also available as Markdown.

Actions

Manage test actions (rules) that automatically modify test behavior.

Actions allow you to:

  • Skip tests that match certain conditions

  • Quarantine flaky tests so their failures don't fail the run

  • Tag tests with custom labels for organization

Each action has a matcher that defines which tests it applies to, based on conditions like test title, file path, tags, git branch, etc.

List actions

get
/actions

Get all actions for a project with optional filtering

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
searchstring · max: 100Optional

Search actions by name

Example: flaky test
Responses
200

Successful response

application/json
statusstring · enumRequiredPossible values:
get/actions
GET /v1/actions?projectId=text HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": [
    {
      "actionId": "text",
      "name": "text",
      "description": "text",
      "action": [
        {
          "op": "skip"
        }
      ],
      "matcher": {
        "op": "AND",
        "cond": [
          {
            "type": "title",
            "op": "in",
            "value": [
              "flaky"
            ]
          },
          {
            "type": "project",
            "op": "eq",
            "value": "chromium"
          }
        ]
      },
      "status": "active",
      "createdAt": "2026-01-01T00:00:00.000Z",
      "createdBy": "text",
      "updatedAt": "2026-01-01T00:00:00.000Z",
      "updatedBy": "text",
      "disabledAt": "2026-01-01T00:00:00.000Z",
      "disabledBy": "text",
      "archivedAt": "2026-01-01T00:00:00.000Z",
      "archivedBy": "text",
      "expiresAfter": "2026-01-01T00:00:00.000Z"
    }
  ]
}

Create action

post
/actions

Create a new action for a project

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
Body
namestring · min: 1 · max: 255Required
descriptionstring · max: 1000 · nullableOptional
expiresAfterstring · date-time · nullableOptional
Responses
201

Action created successfully

application/json
statusstring · enumRequiredPossible values:
post/actions
POST /v1/actions?projectId=text HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 228

{
  "name": "text",
  "description": "text",
  "action": [
    {
      "op": "skip"
    }
  ],
  "matcher": {
    "op": "AND",
    "cond": [
      {
        "type": "title",
        "op": "in",
        "value": [
          "flaky"
        ]
      },
      {
        "type": "project",
        "op": "eq",
        "value": "chromium"
      }
    ]
  },
  "expiresAfter": "2026-01-01T00:00:00.000Z"
}
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "name": "text",
    "description": "text",
    "action": [
      {
        "op": "skip"
      }
    ],
    "matcher": {
      "op": "AND",
      "cond": [
        {
          "type": "title",
          "op": "in",
          "value": [
            "flaky"
          ]
        },
        {
          "type": "project",
          "op": "eq",
          "value": "chromium"
        }
      ]
    },
    "status": "active",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "createdBy": "text",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "updatedBy": "text",
    "disabledAt": "2026-01-01T00:00:00.000Z",
    "disabledBy": "text",
    "archivedAt": "2026-01-01T00:00:00.000Z",
    "archivedBy": "text",
    "expiresAfter": "2026-01-01T00:00:00.000Z"
  }
}

Get action

get
/actions/{actionId}

Get a single action by ID. The actionId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Responses
200

Successful response

application/json
statusstring · enumRequiredPossible values:
get/actions/{actionId}
GET /v1/actions/{actionId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "name": "text",
    "description": "text",
    "action": [
      {
        "op": "skip"
      }
    ],
    "matcher": {
      "op": "AND",
      "cond": [
        {
          "type": "title",
          "op": "in",
          "value": [
            "flaky"
          ]
        },
        {
          "type": "project",
          "op": "eq",
          "value": "chromium"
        }
      ]
    },
    "status": "active",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "createdBy": "text",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "updatedBy": "text",
    "disabledAt": "2026-01-01T00:00:00.000Z",
    "disabledBy": "text",
    "archivedAt": "2026-01-01T00:00:00.000Z",
    "archivedBy": "text",
    "expiresAfter": "2026-01-01T00:00:00.000Z"
  }
}

Update action

put
/actions/{actionId}

Update an existing action. The actionId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Body
namestring · min: 1 · max: 255Optional
descriptionstring · max: 1000 · nullableOptional
expiresAfterstring · date-time · nullableOptional
Responses
200

Action updated successfully

application/json
statusstring · enumRequiredPossible values:
put/actions/{actionId}
PUT /v1/actions/{actionId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 228

{
  "name": "text",
  "description": "text",
  "action": [
    {
      "op": "skip"
    }
  ],
  "matcher": {
    "op": "AND",
    "cond": [
      {
        "type": "title",
        "op": "in",
        "value": [
          "flaky"
        ]
      },
      {
        "type": "project",
        "op": "eq",
        "value": "chromium"
      }
    ]
  },
  "expiresAfter": "2026-01-01T00:00:00.000Z"
}
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "name": "text",
    "description": "text",
    "action": [
      {
        "op": "skip"
      }
    ],
    "matcher": {
      "op": "AND",
      "cond": [
        {
          "type": "title",
          "op": "in",
          "value": [
            "flaky"
          ]
        },
        {
          "type": "project",
          "op": "eq",
          "value": "chromium"
        }
      ]
    },
    "status": "active",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "createdBy": "text",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "updatedBy": "text",
    "disabledAt": "2026-01-01T00:00:00.000Z",
    "disabledBy": "text",
    "archivedAt": "2026-01-01T00:00:00.000Z",
    "archivedBy": "text",
    "expiresAfter": "2026-01-01T00:00:00.000Z"
  }
}

Delete action

delete
/actions/{actionId}

Archive an action (soft delete). The actionId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Responses
200

Action archived successfully

application/json
statusstring · enumRequiredPossible values:
delete/actions/{actionId}
DELETE /v1/actions/{actionId} HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "archived": true
  }
}

Enable action

put
/actions/{actionId}/enable

Enable a disabled action. The actionId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Responses
200

Action enabled successfully

application/json
statusstring · enumRequiredPossible values:
put/actions/{actionId}/enable
PUT /v1/actions/{actionId}/enable HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "name": "text",
    "description": "text",
    "action": [
      {
        "op": "skip"
      }
    ],
    "matcher": {
      "op": "AND",
      "cond": [
        {
          "type": "title",
          "op": "in",
          "value": [
            "flaky"
          ]
        },
        {
          "type": "project",
          "op": "eq",
          "value": "chromium"
        }
      ]
    },
    "status": "active",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "createdBy": "text",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "updatedBy": "text",
    "disabledAt": "2026-01-01T00:00:00.000Z",
    "disabledBy": "text",
    "archivedAt": "2026-01-01T00:00:00.000Z",
    "archivedBy": "text",
    "expiresAfter": "2026-01-01T00:00:00.000Z"
  }
}

Disable action

put
/actions/{actionId}/disable

Disable an active action. The actionId is globally unique, so projectId is not required.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Responses
200

Action disabled successfully

application/json
statusstring · enumRequiredPossible values:
put/actions/{actionId}/disable
PUT /v1/actions/{actionId}/disable HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "actionId": "text",
    "name": "text",
    "description": "text",
    "action": [
      {
        "op": "skip"
      }
    ],
    "matcher": {
      "op": "AND",
      "cond": [
        {
          "type": "title",
          "op": "in",
          "value": [
            "flaky"
          ]
        },
        {
          "type": "project",
          "op": "eq",
          "value": "chromium"
        }
      ]
    },
    "status": "active",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "createdBy": "text",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "updatedBy": "text",
    "disabledAt": "2026-01-01T00:00:00.000Z",
    "disabledBy": "text",
    "archivedAt": "2026-01-01T00:00:00.000Z",
    "archivedBy": "text",
    "expiresAfter": "2026-01-01T00:00:00.000Z"
  }
}

List affected tests

get
/actions/tests

Get tests affected by actions (quarantine, skip, tag) for a project within a date range. Returns aggregated data grouped by test signature.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
date_startstring · date-timeRequired

Start date in ISO 8601 format

Example: 2024-01-01T00:00:00.000Z
date_endstring · date-timeRequired

End date in ISO 8601 format

Example: 2024-01-31T23:59:59.999Z
pageintegerOptional

Page number (0-indexed)

Default: 0
limitinteger · min: 1 · max: 100Optional

Maximum number of results (1-100)

Default: 25
searchstring · max: 100Optional

Search by spec file path, test title, or action name (case-insensitive)

action_idstringOptional

Filter by specific action ID (action_id)

dirstring · enumOptional

Sort direction: desc (default) or asc.

Default: descPossible values:
Responses
200

Successful response

application/json
statusstring · enumRequiredPossible values:
get/actions/tests
GET /v1/actions/tests?projectId=text&date_start=2026-01-01T00%3A00%3A00.000Z&date_end=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "list": [
      {
        "signature": "text",
        "title": "text",
        "specFile": "text",
        "actions": [
          {
            "types": [
              "quarantine"
            ],
            "name": "text",
            "id": "text",
            "status": "active",
            "expiresAt": "2026-01-01T00:00:00.000Z",
            "tags": [
              "text"
            ],
            "lastSeen": "2026-01-01T00:00:00.000Z",
            "recordingCount": 1
          }
        ],
        "lastSeen": "2026-01-01T00:00:00.000Z",
        "recordingCount": 1
      }
    ],
    "count": 1,
    "total": 1,
    "nextPage": 1
  }
}

Get affected test executions

get
/actions/tests/{signature}

Get execution details for a specific affected test (by signature) within a date range. Returns individual test execution records with action info. Results are paginated with cursor-based pagination using the starting_after and ending_before query parameters. To list executions for a single rule across all tests, use GET /actions/{actionId}/tests instead of the removed action_id query parameter.

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
signaturestringRequired

Test signature hash

Query parameters
projectIdstringRequired

The project ID

Example: proj_abc123
date_startstring · date-timeRequired

Start date in ISO 8601 format

Example: 2024-01-01T00:00:00.000Z
date_endstring · date-timeRequired

End date in ISO 8601 format

Example: 2024-01-31T23:59:59.999Z
limitinteger · min: 1 · max: 50Optional

Maximum number of executions (1-50)

Default: 25
starting_afterstringOptional

Cursor for pagination. Returns items after this cursor value.

ending_beforestringOptional

Cursor for pagination. Returns items before this cursor value.

searchstring · max: 100Optional

Search by action name (case-insensitive)

Responses
200

Successful response

application/json
statusstring · enumRequiredPossible values:
get/actions/tests/{signature}
GET /v1/actions/tests/{signature}?projectId=text&date_start=2026-01-01T00%3A00%3A00.000Z&date_end=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "executions": [
      {
        "cursor": "text",
        "runId": "text",
        "instanceId": "text",
        "testId": "text",
        "specFile": "text",
        "title": "text",
        "signature": "text",
        "branch": "text",
        "commitSha": "text",
        "prTitle": "text",
        "prId": "text",
        "commitMessage": "text",
        "groupId": "text",
        "state": "passed",
        "isFlaky": true,
        "executedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "has_more": true
  }
}

Get affected test executions for an action

get
/actions/{actionId}/tests

List test executions where this rule/action was applied, within a date range. Same cursor pagination and filters as GET /actions/tests/{signature} except projectId is taken from the rule (after org ownership checks).

Authorizations
AuthorizationstringRequired

An organization API key, sent as Authorization: Bearer <key>. A key carries one scope for the whole API: a read key reaches the GET endpoints, a write key reaches all of them. A crnts_pat_ personal access token is accepted as a Bearer while its owner remains an eligible administrator in its active organization. Each operation requires the corresponding scope stored on that token.

Path parameters
actionIdstringRequired

The action ID

Example: 507f1f77bcf86cd799439011
Query parameters
date_startstring · date-timeRequired

Start date in ISO 8601 format

Example: 2024-01-01T00:00:00.000Z
date_endstring · date-timeRequired

End date in ISO 8601 format

Example: 2024-01-31T23:59:59.999Z
limitinteger · min: 1 · max: 50Optional

Maximum number of executions (1-50)

Default: 25
starting_afterstringOptional

Cursor for pagination. Returns items after this cursor value.

ending_beforestringOptional

Cursor for pagination. Returns items before this cursor value.

searchstring · max: 100Optional

Search by action name (case-insensitive)

Responses
200

Successful response

application/json
statusstring · enumRequiredPossible values:
get/actions/{actionId}/tests
GET /v1/actions/{actionId}/tests?date_start=2026-01-01T00%3A00%3A00.000Z&date_end=2026-01-01T00%3A00%3A00.000Z HTTP/1.1
Host: api.currents.dev
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "status": "OK",
  "data": {
    "executions": [
      {
        "cursor": "text",
        "runId": "text",
        "instanceId": "text",
        "testId": "text",
        "specFile": "text",
        "title": "text",
        "signature": "text",
        "branch": "text",
        "commitSha": "text",
        "prTitle": "text",
        "prId": "text",
        "commitMessage": "text",
        "groupId": "text",
        "state": "passed",
        "isFlaky": true,
        "executedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "has_more": true
  }
}

Last updated

Was this helpful?