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" | "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 — 3 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>"
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>"
Was this page helpful?
Thanks for your feedback!