Venelx Docs

API Overview

Base URL: https://api.venelx.com (or your self-hosted API). The API is an Express app; this page maps its top-level router mounts, grouped by domain, as defined in venelx-backend/server.ts.

Authentication

Two credential types, both sent as Authorization: Bearer <token>:

  • Session JWT — issued at login; what the dashboard uses.
  • Personal API token (vx_...) — for scripts and the MCP server; scoped read or write (API tokens). Write endpoints enforce the write scope, and project routes additionally enforce project roles (build triggers require at least the developer role).

Health & system

MountDescription
GET /api/health (alias /health)Liveness/readiness probe — reports version, deploy role, queueConsumerOnApi, B2/Redis status, queue mode
/api/systemSystem configuration and feature flags

A healthy production API reports "queueConsumerOnApi": false — builds are consumed by workers, never by the API.

Auth & tokens

MountDescription
/api/auth (alias /api/v2/auth)Signup, login, session refresh, password flows
/api/tokens (alias /api/v2/tokens)Personal API tokens — create/list/revoke vx_ tokens

Projects & builds

MountDescription
/api/projects (alias /api/v2/projects)Project CRUD and project listing
/api/:projectId/settingsProject settings and env vars
/api/:projectId/platform-flowsPer-platform flow configuration
/api/:projectId/build-stackBuild stack selection per project
/api/build-catalogAvailable build definitions/platforms
POST /api/:projectId/build/:platformQueue a build for one platform (write scope + developer role)
POST /api/:projectId/build-matrixQueue builds for multiple platforms at once (write scope + developer role)
/api/:projectId/artifacts (alias /api/v2/artifacts)Build artifacts — list, download tokens
GET /api/storage/download-tokenPresigned download token for an artifact
/api/internal/build-jobsInternal — worker→API log ingest and job updates (agent token only)

Build triggers surface a skipReason (e.g. signing_not_ready, github_token_invalid) when a build can't start — the same values the MCP trigger_build tool reports.

Signing

MountDescription
/api/signingAccount-level signing credentials
/api/:projectId/signingPer-project iOS/Android signing — upload, status, provisioning

Git providers

MountDescription
/api/githubGitHub App OAuth flow, repo listing, connection status, token refresh
GET /api/auth/github-statusShorthand alias for the GitHub connection status
/api/gitlabGitLab integration (optional)

Teams, billing & enterprise

MountDescription
/api/teams (alias /api/v2/teams)Teams, membership, roles, team secrets
/api/billingPlans, subscriptions, customer portal
/api/webhooksInbound webhooks (raw body, HMAC-verified)
/api/webhooks/billingLemon Squeezy billing webhooks
/api/enterpriseEnterprise features and licensing

Workers

MountDescription
/api/workers (alias /api/v2/workers)Worker fleet — register, heartbeat, drain/stop, assign
/api/me/workers (alias /api/customer-workers)Customer self-hosted workers — create, pairing tokens, status
/api/backendSelf-host backend installer downloads

Workers primarily talk over WebSocket (/ws/worker); the HTTP heartbeat/claim endpoints are the fallback.

OTA, store & notifications

MountDescription
/api/otaPublic OTA update endpoints
/api/:projectId/otaProject OTA bundle management
/ota-staticStatic serving of OTA bundles
/api/storeApp-store submit (App Store / Google Play)
/api/push (alias /api/v2/push)Push notification registration and send
/api/recoveryAccount/project recovery flows

Admin & analytics

MountDescription
/api/admin (alias /api/v2/admin)Admin — users, workers, system config, entitlements
GET /api/:projectId/healthPer-project health (routed via admin)
GET /api/storageStorage overview (routed via admin)
/api/v2/admin/artifactsAdmin artifact management
/api/analyticsUsage and build analytics

Versioning

/api/v2/* mounts alias the current routers for compatibility — /api/v2/auth, /api/v2/projects, /api/v2/teams, /api/v2/workers, /api/v2/admin, and friends behave identically to their unversioned counterparts. New integrations should use the unversioned paths above.