Quickstart
From zero to your first API test in under 2 minutes โ no account, no config, no cloud.
1. Install bolla
One command. Detects your OS and chip, downloads the right binary, places it in /usr/local/bin.
curl -fsSL https://bolla.cikubo.it/install.sh | sh
Works on macOS (Apple Silicon & Intel) and Linux (x86_64 & ARM64). Verify:
bolla --version
No runtime needed. bolla is a single binary with zero dependencies โ no Node.js, no Python, no Docker. Install once, run anywhere.
2. Open your project
Go to any folder you're working in โ your API repo, a new empty folder, anything โ and run:
bolla --server --collection .
Your browser opens automatically at http://localhost:3077 with the full bolla app. No extra steps.
Keep bolla running in the background while you work. Press Ctrl+C to stop it. All your requests are saved as plain .bolla.yaml files in your project โ you can commit them to git like any other file.
3. Create your first request
Click ๏ผ New request in the sidebar (or the button on the welcome screen). A modal appears โ fill in a name, pick a method, and paste your URL. That's all.
Click Create. The request is saved as a .bolla.yaml file in your project and appears in the sidebar immediately.
4. Send the request
Click the request in the sidebar to open it. Add assertions if you want, then press Send (or Cmd/Ctrl + Enter).
The response appears at the bottom. Green ticks mean all assertions passed. If something fails you'll see exactly which check failed and what value it got.
5. Use environments to switch between staging and prod
Create an environment file next to your requests. You can have as many as you want โ local, staging, production, etc.
# staging.env.yaml
id: staging
name: Staging
vars:
base_url: https://api-staging.example.com
TOKEN: "" # set via env var BOLLA_VAR_TOKEN in CI
Update your request URL to use the variable:
url: "{{base_url}}/users"
Now select the environment from the dropdown in the top bar โ bolla substitutes all {"{{vars}}"} automatically.
6. Run a load test
Create a scenario file describing how to ramp up load and what performance gates to enforce:
# smoke.scenario.yaml
id: smoke
name: Smoke โ basic latency check
load:
type: ramp
start_concurrency: 1
end_concurrency: 20
duration_s: 30
steps:
- request_id: get-users # references your .bolla.yaml by id
gates:
p95_ms: { max: 500 } # fail if p95 latency exceeds 500ms
error_pct: { max: 1.0 } # fail if more than 1% of requests error
Run it from the terminal:
bolla --load --scenario smoke.scenario.yaml --env staging
Or click Run load test in the UI and pick the scenario from the dropdown. Watch the chart update live:
7. Add bolla to your CI pipeline
Use --ci mode for pipelines. It runs headless and exits 0 (pass) or 1 (fail) โ exactly what CI expects.
GitHub Actions example:
- name: Install bolla
run: curl -fsSL https://bolla.cikubo.it/install.sh | sh
- name: API smoke test
run: bolla --ci --scenario smoke --env staging
env:
BOLLA_VAR_TOKEN: ${{ secrets.API_TOKEN }}
Publish JUnit results as inline PR annotations: add EnricoMi/publish-unit-test-result-action@v2 pointing at .bolla/runs/**/junit.xml. Gate failures will show up as failed checks on your PR.
8. Spin up a mock server for local dev
Add named examples to any request file:
examples:
- name: success
status: 200
body: '[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]'
- name: empty
status: 200
body: '[]'
Start the mock server:
bolla --mock --collection . --mock-port 3078
Now http://localhost:3078/users returns your example response. Select a different example with a header: X-Bolla-Example: empty. Your frontend team can develop against it without touching a real backend.
You're done. You now know everything you need to use bolla day-to-day. Explore the full reference for OAuth2, OpenAPI import, the AI assist module, and more.