Base URL
GET /api/v1/health is public and reports service health; GET /api/v1/livez is a bare liveness probe.
Accounts, workspaces, and keys
An account (GitHub, Google, or magic-link identity) belongs to a workspace - called a “builder” in API responses, which referencebuilder_id. The workspace is created automatically at first sign-in, and all API keys are scoped to it.
Authentication
Pylva has one API key. Create it from Settings -> API keys and store it asPYLVA_API_KEY — it authenticates every machine endpoint: SDK telemetry, rules, pricing, budget sync, custom pricing, and data import. See API keys.
Send it in either header — both are accepted on every endpoint:
pv_live_* prefix; legacy pv_cli_* keys remain valid everywhere. Prefixes carry no permission meaning.
Errors
Every non-2xx response uses one envelope shape:
Older deployments may still return
403 WRONG_SCOPE for a valid key used with a mismatched legacy endpoint family. Current Pylva releases accept any valid API key on every machine endpoint.
Rate limits
API surfaces
The SDK-facing API is machine-readable at api.pylva.com/openapi.json and includes:- Who am I - verify a key and read workspace, plan, access state, and usage.
- Submit telemetry events.
- Sync rules.
- Fetch pricing.
- Sync budget accumulators.