| Shape | Surface | Issue at |
|---|---|---|
sf_live_<base64url> | Landing API + MCP at simplefunctions.dev | https://simplefunctions.dev/dashboard/keys |
sft_live_<...> | Real-time data API at data.simplefunctions.dev | https://app.simplefunctions.dev/dashboard/keys |
sf_live_ key does not authenticate against data.simplefunctions.dev/v1, and vice versa.
Create
Create a key from the dashboard athttps://simplefunctions.dev/dashboard/keys, or programmatically:
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | optional | Human label. Defaults to "Unnamed Key". Shown in GET /api/keys. |
key value is returned once. Store it now — there is no endpoint that returns it again.
See the full schema in API keys + auth API.
List
id, name, keyPrefix, lastUsedAt, revokedAt, createdAt). Raw secrets are never re-listed.
Rotate
Key rotation is “create + revoke”: issue a new key, switch your callers, then delete the old one.Revoke
What about scopes / per-tool restriction?
The current production API key model is single-tier per user — every active key has the same access as the issuing user. Need scope-limited keys, MCP-tool allow-lists, or service accounts with isolated scopes for a production integration? Emailpatrick@simplefunctions.dev with the use case. We will work out the right approach rather than ship a half-finished scope model.
See also
Authentication
Where API keys fit in the auth model.
API keys + auth API
Full HTTP surface and CLI handshake.
Rate limits
Per-route throttles.
Security
Storage and rotation guarantees.