Get started

Authentication

The machine API is authenticated with a workspace-scoped API key. Create one from Settings → API Keys — keys are shown once at creation time and only a masked prefix is stored after that, so save it somewhere safe.

Send it as a bearer token or a dedicated header — either works:

Authorization header
Authorization: Bearer fl_live_YOUR_API_KEY
# or
X-Api-Key: fl_live_YOUR_API_KEY

A key is bound to exactly one workspace and has full access to that workspace's /v1 API — there are no per-key scopes to choose. See API keys.

A key only ever acts on the workspace it was created in. There is no way to pass a different workspace ID and have the key act on it — that request is rejected with 403 WORKSPACE_MISMATCH rather than silently redirected.

No credential at all fails with 401 NO_SESSION. A key that isn't fl_live_… or fl_test_…-prefixed is treated as absent rather than rejected outright. Only a recognized-prefix key that's unknown or revoked fails with 403 INVALID_API_KEY — a deliberate choice so scanning for valid key prefixes can't be distinguished from any other rejection. A key on a suspended subscription fails with 403 SUBSCRIPTION_SUSPENDED.

A key can also be created with an fl_test_… prefix. The env is an organizational label only — a test key behaves identically to a live one, with the same access and the same auth rules above.

Embed sessions

Routes under /v1/embed/* use a different credential: a short-lived embed session bearer token, minted by POST /v1/embed/:embedId/session — not an fl_live_… key. See Embed.

Was this page helpful?