Proof runs declarative, multi-step HTTP scenarios against APIs on a schedule.
YAML in. HTTP checks out. No database, queue, or external service required.
pip install git+https://github.com/Kishan-Thanki/proof.gitCreate scenarios/health.yaml:
version: "1.0"
global:
base_url: "https://api.example.com"
scenarios:
- name: "Health Check"
interval_seconds: 30
steps:
- name: "GET /health"
request:
method: "GET"
path: "/health"
expect:
status: 200Run once:
proof run scenarios/health.yamlRun continuously:
proof run scenarios/health.yaml --daemonProof reports each step with its status, HTTP code, latency, and errors.
Steps can extract values from responses and reuse them later:
steps:
- name: "Create User"
request:
method: "POST"
path: "/users"
json:
name: "Proof"
expect:
status: 201
extract:
user_id: "$.id"
- name: "Fetch User"
request:
method: "GET"
path: "/users/${user_id}"
expect:
status: 200Dynamic built-ins such as ${$uuid} and ${$timestamp} are also supported.
proof run <config.yaml>
proof run <config.yaml> --daemon
proof run <config.yaml> --interval 30
proof --versionUse --webhook-url to receive notifications when a scenario changes between healthy and failing states.
- Monitoring as code — scenarios live in Git.
- Multi-step workflows — test real API journeys, not just endpoints.
- CI-friendly — exit code
0for success,1for failure. - Daemon mode — continuously monitor APIs from a small server.
- Transition alerts — notifications only when health changes.
- Async execution — built for concurrent scenario checks.