Skip to main content
Pylva is SDK-first. Most teams should use the TypeScript or Python SDK instead of calling the API directly. For first-run SDK issues such as invalid keys, missing dashboard events, pricing warnings, and budget hard stops, see Troubleshooting.

Base URL

Self-hosted deployments can use a different endpoint. See Open Source And Hosted when choosing between Pylva Cloud and self-hosting. 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 reference builder_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 as PYLVA_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:
New keys use the 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: The custom-pricing and data-import surfaces are documented manually in Mintlify: