Test Insights
Access data from Test Insights.
Search tests by name
/ci/{owner}/repositories/{repository_name}/search/tests
Resolve test identities by name in a repository. Returns one entry per (test_name, pipeline_name, job_name) running on the default branch. Supports glob patterns in `test_name` (e.g. `*test_login*`).
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
test_name
string[]
required
Test name to search for. Pass multiple times to combine matches. Supports glob patterns (`*`, `?`).
sort
"executions_count" | "test_name" | "pipeline_name" | "job_name"
Sort field
direction
"asc" | "desc"
Sort direction
pipeline_name
string[]
The pipeline name to filter on
pipeline_name_exclude
string[]
The pipeline name to exclude
job_name
string[]
The job name to filter on
job_name_exclude
string[]
The job name to exclude
cursor
string
The opaque cursor of the current page. Must be extracted from RFC 5988 pagination links to get first/previous/next/last pages
per_page
integer
The number of items per page
min: 1 · max: 100
200 Successful Response
The number of items in this page
The number of items per page
Example Response
{
"size": 0,
"per_page": 0,
"tests": [
{
"test_id": "string",
"test_name": "string",
"pipeline_name": "string",
"job_name": "string"
}
]
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/search/tests" \
-H "Authorization: Bearer <token>"
Get detailed information about a test
/ci/{owner}/repositories/{repository_name}/tests/{test_id}
Get detailed information about a test.
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
test_id
string <uuid5>
required
ID of the test
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
200 Successful Response
Example Response
{
"repository": "string",
"test_name": "string",
"test_id": "string",
"health_status": "string",
"last_conclusion": "string",
"failure_ratio": 0,
"flakiness_ratio": 0,
"success_ratio": 0,
"flaky_detection_enabled": true,
"first_failure_at": "2024-01-15T09:00:00Z",
"first_failure_commit": "string",
"first_failure_pull": {
"id": 0,
"number": 0,
"title": "string",
"user": {
"id": 0,
"login": "string"
}
},
"last_failure_at": "2024-01-15T09:00:00Z",
"last_success_at": "2024-01-15T09:00:00Z",
"test_framework": "string",
"test_framework_version": "string",
"test_programming_language": "string",
"test_filepath": "string",
"test_function_name": "string"
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/tests/:test_id" \
-H "Authorization: Bearer <token>"
Get a single test stat as a time series
/ci/{owner}/repositories/{repository_name}/tests/{test_id}/stats/{stat}
Return one of the test stats bucketed over the requested time range, with a summary value over the full window. Binning adapts to the requested window (1h, 4h, 1d, 2d).
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
test_id
string <uuid5>
required
ID of the test
stat
"success_count" | "failure_count" | "flaky_count" | "mean_duration"
required
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
start
string <date-time>
Start of the time range. Defaults to `end - 1 day` when omitted.
end
string <date-time>
End of the time range. Defaults to `start + 1 day` when only start is provided, or `now` otherwise.
200 Successful Response
stat — 4 typesExample Response
{
"value": 0,
"value_over_time": [
{
"start": "2024-01-15T09:00:00Z",
"end": "2024-01-15T09:00:00Z",
"value": 0
}
],
"stat": "success_count"
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/tests/:test_id/stats/:stat" \
-H "Authorization: Bearer <token>"
Get test failures
/ci/{owner}/repositories/{repository_name}/tests/{test_id}/failures
Get test failures.
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
test_id
string <uuid5>
required
ID of the test
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
200 Successful Response
Example Response
{
"failures": [
{
"id": "string",
"exception_type": "string",
"exception_message": "string",
"failure_count": 0,
"first_failure_at": "2024-01-15T09:00:00Z",
"last_failure_at": "2024-01-15T09:00:00Z"
}
]
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/tests/:test_id/failures" \
-H "Authorization: Bearer <token>"
Get test failure
/ci/{owner}/repositories/{repository_name}/tests/{test_id}/failures/{failure_id}
Get test failure.
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
test_id
string <uuid5>
required
ID of the test
failure_id
string <uuid5>
required
ID of the failure
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
200 Successful Response
Example Response
{
"id": "string",
"exception_type": "string",
"exception_message": "string",
"failure_count": 0,
"first_failure_at": "2024-01-15T09:00:00Z",
"last_failure_at": "2024-01-15T09:00:00Z",
"latest_events": [
{
"id": "string",
"failed_at": "2024-01-15T09:00:00Z",
"exception_stacktrace": "string",
"test_filepath": "string",
"test_programming_language": "string",
"job_url": "string"
}
]
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/tests/:test_id/failures/:failure_id" \
-H "Authorization: Bearer <token>"
List a test's executions
/ci/{owner}/repositories/{repository_name}/tests/{test_id}/executions
List the identities under which this test ran on the default branch over the requested time window, ordered by total executions.
repository_name
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
test_id
string <uuid5>
required
ID of the test
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
sort
"executions_count" | "pipeline_name" | "job_name"
Sort field
direction
"asc" | "desc"
Sort direction
cursor
string
The opaque cursor of the current page. Must be extracted from RFC 5988 pagination links to get first/previous/next/last pages
per_page
integer
The number of items per page
min: 1 · max: 100
start
string <date-time>
Start of the time range. Defaults to `end - 1 day` when omitted.
end
string <date-time>
End of the time range. Defaults to `start + 1 day` when only start is provided, or `now` otherwise.
200 Successful Response
The number of items in this page
The number of items per page
Example Response
{
"size": 0,
"per_page": 0,
"executions": [
{
"test_id": "string",
"test_name": "string",
"pipeline_name": "string",
"job_name": "string",
"executions_count": 0
}
]
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository_name/tests/:test_id/executions" \
-H "Authorization: Bearer <token>"
List quarantined tests
/ci/{owner}/repositories/{repository}/quarantines
List the tests currently quarantined in the repository, ordered by quarantine creation time ascending. A quarantine applies to a specific branch or to all branches when `branch` is `null`. Pagination is opt-in: pass `per_page` (and optionally `cursor`) to receive a bounded page with RFC 5988 navigation links. Omitting `per_page` returns the full list in a single response — this shortcut exists for backward compatibility and is expected to go away once all callers paginate.
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
repository
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
branch
string
min length: 1 · max length: 255
test_id
string <uuid>
source
"manual" | "auto"
cursor
string
The opaque cursor of the current page. Must be extracted from RFC 5988 pagination links to get first/previous/next/last pages.
per_page
integer
The number of items per page. Omit to receive the full list in a single response; pass a value to opt into RFC 5988 cursor pagination.
min: 1 · max: 100
200 Successful Response
The number of items in this page
The number of items per page, or `null` when the endpoint was called without `per_page` and returned the full list in a single response.
Example Response
{
"size": 0,
"per_page": 0,
"quarantined_tests": [
{
"id": "string",
"test_name": "string",
"reason": "string",
"branch": "string",
"created_at": "2024-01-15T09:00:00Z",
"source": "manual",
"is_recovered": true
}
]
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository/quarantines" \
-H "Authorization: Bearer <token>"
Mark a test as quarantined
/ci/{owner}/repositories/{repository}/quarantines
Add a test to the CI Quarantine for a repository
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
repository
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
The fully qualified name of the test that needs to be quarantined
Reason for the test being added to the quarantine
Branch name or pattern on which the test should be quarantined. If not specified, it will be quarantined on all branches.
201 Successful Response
The ID of the created quarantine
Example Response
{
"id": "string"
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X POST "https://api.mergify.com/v1/ci/:owner/repositories/:repository/quarantines" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"test_name": "string",
"reason": "string",
"branch": "string"
}'
Get a quarantined test
/ci/{owner}/repositories/{repository}/quarantines/{quarantine_id}
Retrieve a single quarantined test by its quarantine ID.
quarantine_id
string <uuid>
required
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
repository
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
200 Successful Response
Unique identifier of the quarantine record.
Fully qualified name of the quarantined test.
Free-form reason recorded when the test was quarantined.
Branch name or pattern this quarantine applies to. `null` means the test is quarantined on every branch.
UTC timestamp when the test was added to quarantine.
How the test got quarantined: `manual` (user action) or `auto` (auto-quarantined).
manual autoTrue when recent runs of this test are healthy, suggesting the quarantine could be removed.
Example Response
{
"id": "string",
"test_name": "string",
"reason": "string",
"branch": "string",
"created_at": "2024-01-15T09:00:00Z",
"source": "manual",
"is_recovered": true
}
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X GET "https://api.mergify.com/v1/ci/:owner/repositories/:repository/quarantines/:quarantine_id" \
-H "Authorization: Bearer <token>"
Remove a quarantine
/ci/{owner}/repositories/{repository}/quarantines/{quarantine_id}
Remove a quarantine with its id
quarantine_id
string <uuid>
required
owner
string
required
The owner of the repository
min length: 1 · max length: 40 · pattern: ^[a-zA-Z0-9\-]+$
repository
string
required
The name of the repository
min length: 1 · pattern: ^[\w\-\.]+$
200 Successful Response
204 No content
403 Forbidden
404 Not found
409 Conflict
422 Unprocessable entity
Example Request
curl -X DELETE "https://api.mergify.com/v1/ci/:owner/repositories/:repository/quarantines/:quarantine_id" \
-H "Authorization: Bearer <token>"
Was this page helpful?
Thanks for your feedback!