Skip to main content

run_suite

Dispatch runs for several features in one call — one run per feature, on the same spine as run_feature. Omit features to run every feature with status generated (the whole runnable suite). Returns the dispatched runIds immediately.

info

A feature whose dispatch fails (e.g. no generated tests) is reported per-item with an error instead of aborting the rest.

Request​

POST /api/v1/ops/projects/{project}/runs
ParameterInTypeRequiredDescription
projectpathstringyesThe project's public id.
featuresbodystring[]noFeature ids or names. Omit to run all generated features.
configbodystringnoPlaywright configuration name (default Default — see list_configs).
siteUrlbodystringnoTest site URL override.
curl -X POST -H "Authorization: Bearer $TESTVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' \
"$TESTVIBE_SERVER/api/v1/ops/projects/$PROJECT/runs"

Response​

202 Accepted

{
"runs": [
{ "featureId": 12, "featureName": "Login Functionality", "runId": 215 },
{ "featureId": 15, "featureName": "Checkout", "runId": 216 },
{ "featureId": 18, "featureName": "Search", "error": "conflict", "message": "This feature has no generated tests yet — generate them first." }
]
}

Poll each runId with wait_for_run / get_run.

info

testvibe run --all --wait does that polling for you under one --timeout budget for the whole suite (not one per feature) and prints a summary. A run it stopped watching is reported as no verdict, never as a failure: the command exits 1 only if something actually failed, and 3 if nothing failed but a run was still unfinished. See the CLI wait contract.

Errors​

HTTPWhen
404 not_foundNo such project, or a named feature doesn't exist.
409 conflictfeatures was omitted and the project has no generated features.

Pass notify: true (MCP/REST) or --notify (CLI) to opt into completion notifications; API-originated dispatches are silent by default. Storage admission can return 507 storage_quota_exceeded; other dispatch refusals follow the shared error contract.

Select, preview, or combine runs​

REST select: {group?, versionTag?, search?, includeSuggestions?} chooses features server-side instead of features. Add preview: true to return 200 with matched, runnable, included, excluded (with reasons), and complete without dispatch. Preview requires select; check complete and narrow a selection that exceeds the 2,000-item page ceiling before dispatching. A selection matching no runnable tests returns 409 on dispatch.

MCP uses flat selectGroup, selectVersionTag, and selectSearch with preview. It does not expose every REST selector.

Pass single: true or multiple configs to dispatch one combined run for the selected features × configurations. The 202 response is {runId, runs:[{runId}]}. Without this option, the ordinary runs array contains one per-feature result. configs takes precedence over scalar config.

An explicit non-empty select replaces the features selection. Avoid mixing them. Keep checking each returned result for dispatch errors before waiting for run ids.