Test APIs from
your terminal.
Kest is a CLI tool that turns Markdown into executable API tests. Variable chaining, assertions, session logs — all in one command.
curl -fsSL https://kest.dev/install.sh | shUse it right now.
No config files. No setup wizard. Just commands.
kest get /api/userskest post /api/login -d '{"user":"admin","pass":"123"}'kest post /api/login -c "token=data.token" -a "status=200"kest get /api/me -H "Authorization: Bearer {{token}}"Write Markdown. Run Tests.
Define API flows in .flow.md files. Kest executes them with assertions and variable chaining.
# Auth & Profile Flow
## 1. Login
```kest
POST /api/v1/login
{
"username": "admin",
"password": "secret"
}
[Captures]
token: data.access_token
user_id: data.user.id
[Asserts]
status == 200
body.data.access_token exists
body.data.password !exists
duration < 500ms
```
## 2. Get Profile
```kest
GET /api/v1/users/{{user_id}}
Authorization: Bearer {{token}}
[Asserts]
status == 200
body.data.username != ""
```Every request logged.
AI-ready.
Kest automatically generates structured session logs for every command. Feed the log path to Cursor or Windsurf — your AI agent gets full request/response context for instant debugging.
[2025-02-08 11:02:34] Flow: auth.flow.md
[2025-02-08 11:02:34] Step 1: POST /api/v1/login
→ Request:
POST http://localhost:8080/api/v1/login
Content-Type: application/json
{"username":"admin","password":"secret"}
← Response: 200 OK (127ms)
{"code":0,"data":{"access_token":"eyJhbG...","user":{"id":42,"username":"admin"}}}
✅ status == 200
✅ body.data.access_token exists
✅ body.data.password !exists
✅ duration < 500ms (actual: 127ms)
📌 Captured: token = eyJhbGciOi...
📌 Captured: user_id = 42
[2025-02-08 11:02:34] Step 2: GET /api/v1/users/42
→ Request:
GET http://localhost:8080/api/v1/users/42
Authorization: Bearer eyJhbGciOi...
← Response: 200 OK (43ms)
{"code":0,"data":{"id":42,"username":"admin","email":"admin@kest.dev"}}
✅ status == 200
✅ body.data.username != ""
[2025-02-08 11:02:34] Summary: 6/6 passed, 0 failedMore than just requests.
Debug, replay, diff, and manage environments — all from the CLI.
kest run auth.flow.mdExecute multi-step flow files with assertions and variable chaining
kest show last -vInspect the last request/response with full headers and body
kest replay last --diffRe-run the last request and diff the response to detect regressions
kest historyBrowse all previous requests stored in local SQLite database
kest env use stagingSwitch API base URL between local, staging, and production
kest doc ./api -o docs --aiGenerate API documentation from Go/FastAPI source code
Why Kest?
Built for engineers who ship fast and test harder.
Zero Config
Install and run. No YAML, no project files required for quick tests.
Flow Files
Chain multi-step API tests in Markdown. Variables propagate automatically.
AI-Ready Logs
Structured session logs that AI editors can consume for context-aware debugging.
Hard Assertions
Status codes, field existence, duration thresholds — enforced on every request.
Variable Chaining
Capture response data with -c and inject with {{var}} across requests.
Replay & Diff
Re-run any previous request and diff responses to catch regressions.
Multi-Environment
Switch between dev/staging/prod with kest env. Credentials stay safe.
Git-Native
Flow files live in your repo. Version tests alongside your code.