Overview
The API is resource-oriented JSON over HTTPS, mounted under:
https://testvibe.app/api/v1/ops
Each reference page documents one operation across its three surfaces: the REST route, the MCP tool (same name as the page), and the CLI command. The operations core enforces server-side rules. The CLI and MCP wrappers add their own argument handling and output, and not every REST option has a wrapper.
Operations at a glance
| MCP tool | REST | CLI |
|---|---|---|
list_projects | GET /projects | testvibe projects |
get_credits | GET /credits | testvibe credits |
list_billing_history | GET /credits/history | testvibe credits history |
list_credit_usage | GET /credits/usage | testvibe credits usage |
list_features | GET /projects/{project}/features | testvibe features list |
get_feature | GET /projects/{project}/features/{feature} | testvibe features show <feature> |
create_feature | POST /projects/{project}/features | testvibe features create <name> --file <path> |
update_feature | PATCH /projects/{project}/features/{feature} | testvibe features update <feature> … |
delete_feature | DELETE /projects/{project}/features/{feature} | testvibe features delete <feature> |
generate_feature | POST /projects/{project}/features/{feature}/generate | testvibe generate <feature> |
get_generation_status | GET /projects/{project}/features/{feature}/generation | REST/MCP status read (CLI dispatch uses --watch) |
wait_for_generation | (poll the status route) | --watch |
get_generation_log | GET /projects/{project}/features/{feature}/generation/log | — |
cancel_generation | POST /projects/{project}/features/{feature}/generation/cancel | — |
run_feature | POST /projects/{project}/features/{feature}/run | testvibe run <feature> |
wait_for_run | (poll the run route) | --wait |
get_run | GET /projects/{project}/runs/{runId} | testvibe runs show <runId> |
list_runs | GET /projects/{project}/runs | testvibe runs list |
get_run_artifacts | GET /projects/{project}/runs/{runId}/artifacts | testvibe runs artifacts <runId> |
list_files | GET /projects/{project}/files | testvibe files list |
read_file | GET /projects/{project}/files/content?path= | testvibe files get <path> |
write_file | PUT /projects/{project}/files/content | testvibe files put <path> --file <local> |
list_configs | GET /projects/{project}/configs | testvibe configs |
list_load_tests | GET /projects/{project}/load | testvibe load list |
run_load_test | POST /projects/{project}/load/{loadTest}/run | testvibe load run <loadTest> |
list_automations | GET /projects/{project}/automations | testvibe automations list |
get_automation | GET /projects/{project}/automations/{automationId} | testvibe automations show <automationId> |
create_automation | POST /projects/{project}/automations | testvibe automations create … |
update_automation | PATCH /projects/{project}/automations/{automationId} | testvibe automations update <automationId> … |
delete_automation | DELETE /projects/{project}/automations/{automationId} | testvibe automations delete <automationId> |
run_automation | POST /projects/{project}/automations/{automationId}/run | testvibe automations run <automationId> |
list_automation_runs | GET /projects/{project}/automations/{automationId}/runs | testvibe automations runs <automationId> |
get_coverage | GET /projects/{project}/coverage | testvibe coverage show |
scan_coverage | POST /projects/{project}/coverage/scan | testvibe coverage scan |
list_coverage_runs | GET /projects/{project}/coverage/runs | testvibe coverage runs |
run_coverage | POST /projects/{project}/coverage/run | testvibe coverage run |
list_plugins | GET /projects/{project}/plugins | testvibe plugins list |
install_plugin | POST /projects/{project}/plugins/{slug}/install | testvibe plugins install <slug> |
remove_plugin | POST /projects/{project}/plugins/{slug}/remove | testvibe plugins remove <slug> |
publish_plugin | POST /projects/{project}/plugins | testvibe plugins publish --name "…" |
unpublish_plugin | DELETE /projects/{project}/plugins/{slug} | testvibe plugins unpublish <slug> |
list_variables | GET /projects/{project}/variables | testvibe vars list |
set_variable | PUT /projects/{project}/variables/{name} | testvibe vars set <NAME> <value> |
delete_variable | DELETE /projects/{project}/variables/{name} | testvibe vars delete <NAME> |
list_secrets | GET /projects/{project}/secrets | testvibe secrets list |
set_secret | PUT /projects/{project}/secrets/{name} | testvibe secrets set <NAME> <value> |
delete_secret | DELETE /projects/{project}/secrets/{name} | testvibe secrets delete <NAME> |
wait_for_generation and wait_for_run are client-side conveniences (the MCP server and CLI poll for you). Over raw REST, poll the corresponding GET route — see Long-running operations.
Start with Conventions & errors for the request/response basics shared by every page.
The existing pages retain their URLs. The current API also exposes model discovery (GET /projects/{project}/models), groups/history, generation answers and guided sessions, verify-change, source repositories, assets, trace analysis, load-run measurements, and per-member credit usage. See the CLI command overview and MCP discovery. REST-only options are identified on the related pages rather than implied to exist in every wrapper.