PromptFloe Developer Docs
First steps

Authentication

PromptFloe authenticates every API request via a workspace-scoped API key passed as a Bearer token. Keys inherit the workspace's tier, quotas, and member permissions.

#Auth scheme

All requests use HTTP Bearer auth. Pass your API key in the Authorization header on every request. The SDK does this for you when you initialize a client.

Header
Authorization: Bearer pf_live_********************************

#Key formats

FieldTypeDescription
pf_live_…productionLive keys. Counted against your real quotas. Use these in production.
pf_test_…sandboxTest keys. Calls hit a simulator; no real builds run, no quotas consumed.
pf_dev_…localDev keys. Same powers as live but rate-limited harder. For local development.

#Generating a key

  1. Open /settings/api.
  2. Click + New API key.
  3. Name it (e.g. "production-server", "ci-runner").
  4. Pick scopes (see below).
  5. Copy the key — we show it once and never again.

#Scopes

Each key has scopes that limit what it can do. Default new keys get read + build; admin actions require an explicit opt-in.

FieldTypeDescription
readscopeGET endpoints — list apps, read chats, fetch deployment status.
buildscopeGenerate apps, run skills, run augmenters, edit files.
deployscopeTrigger Netlify deploys, manage GitHub sync.
adminscopeManage workspace context, custom skills, members, billing.
webhook:writescopeCreate / update webhook subscriptions.

#Using the key

const client = new PromptFloe({
  apiKey: process.env.PROMPTFLOE_API_KEY,
});

#Rotation

Best practice: rotate keys every 90 days, or whenever a contributor leaves the workspace. The dashboard supports graceful rotation:

  1. Create a new key.
  2. Roll out the new key to all consumers.
  3. Click Mark as superseded on the old key — it stays valid for 24 hours but appears as deprecated in logs.
  4. After 24 hours, click Revoke.

#Auth errors

FieldTypeDescription
401 invalid_keyauthKey is malformed, revoked, or doesn't exist.
401 expired_keyauthKey was rotated and the grace period ended.
403 missing_scopeauthKey is valid but lacks a scope required for this endpoint.
403 quota_exceededtierWorkspace hit a daily limit. Upgrade tier or wait for reset.

Every error response includes the request id (X-Request-Id header) — quote it when contacting support.

#Security best practices

  • Never embed live keys in client-side code. Use a thin server proxy or short-lived session tokens (see Sessions docs).
  • Restrict scopes per environment — the CI key shouldn't need admin; the prod app server probably doesn't need webhook:write.
  • Set up an alert on 401 invalid_key spikes — those usually mean leaked-key probes.
  • Use pf_test_ keys in CI to avoid burning quota on tests.

#Where to go next

PromptFloe developer docs