Quickstart

Schedule your first job in a minute — two paths: the hosted API, or the self-hosted CLI below.

Hosted: claim your key, create a job

Pre-launch: the hosted API opens at launch; this page activates with it. After checkout, open the claim page — it exchanges your Stripe session for your tenant API key (shown once). Then:

curl -X POST https://tickbase-api.onrender.com/v1/jobs \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"id":"nightly-report","url":"https://example.com/api/reports/nightly","method":"POST","schedule":{"type":"cron","expr":"0 2 * * *"},"retries":3}'

# inspect your run history (scoped to your tenant):
curl "https://tickbase-api.onrender.com/v1/runs?n=20" -H "X-API-Key: YOUR_KEY"

Plan limits from the pricing page are enforced by the API: jobs beyond your tier, intervals below your tier floor, and retry counts above your tier cap are refused with an honest error — never silently billed.

The examples below are the self-hosted path: they assume the CLI and read API on http://127.0.0.1:8080.

1. Add a job

python -m tickbase.cli add --id nightly-report \
  --url https://example.com/api/reports/nightly \
  --method POST --cron "0 2 * * *" \
  --retries 5 --timeout-s 30
# or interval-based: --interval 300  (every 5 minutes)

2. Start the scheduler

python -m tickbase.cli run
# jobs fire on schedule; failures retry with backoff;
# alerts fire after consecutive failures

3. Inspect run history

curl "http://127.0.0.1:8080/runs?n=20&job_id=nightly-report"
# {"runs": [{"job_id": "nightly-report", "status": "success",
#   "status_code": 200, "latency_ms": 342, ...}]}
Full reference: every endpoint — method, path, auth, request and response shapes — is documented in OPENAPI.md in the product repo.

Pick a plan