Skip to content

Public API keys

Keys for reading published content and Embed. Prefix: luno_pub_…. They are not agent keys (sk-agent-…).

Done state

ItemState
KeyIssued luno_pub_… and stored safely (shown once)
CallCan call with header or Bearer
SeparationNot confusing Embed/Host keys with Agents sk-agent-…

vs agent keys

Public API keyAgent API key
Prefixluno_pub_…sk-agent-…
UsePublic read / Embed / Host tenant resolveAdmin API / MCP
Base/public/.../admin/v1
IssueSettings → Public API keysSettings → Agent API keys
PlanAll plansStandard+

When you need one

  • Embed / widgets — required in data-api-key
  • Host /public/v1 when resolving tenant by key
  • /public/p/{projectId}/v1 — usually no key for reads when projectId is in the path

Checklist

  • [ ] Issued under Console → Settings → Public API keys (tenant_admin)
  • [ ] Copied immediately (cannot re-display)
  • [ ] Embed uses data-api-key; server fetches use env + header
  • [ ] Not sending an agent key to Public API routes

Do this now

  1. Create a key under Settings → Public API keys and copy luno_pub_…
  2. Smoke-test a call
bash
curl -H "X-Luno-Public-Api-Key: luno_pub_…" \
  "https://api.luno.rest/public/v1/form-sets/blog/entries?limit=1"
# Or projectId path (usually no key)
curl "https://api.luno.rest/public/p/{projectId}/v1/form-sets/blog/entries?limit=1"
ts
await fetch('https://api.luno.rest/public/v1/form-sets/blog/entries?limit=1', {
  headers: { 'X-Luno-Public-Api-Key': process.env.LUNO_PUBLIC_API_KEY! },
})
// Authorization: Bearer luno_pub_… also works
bash
# Public keys are not used by MCP. Agent keys: Settings → Agent API Keys
  1. For Embed see Embed & Pub; for frameworks see recipes

Next

GoalPage
EndpointsPublic API
EmbedEmbed & Pub
Agents (different key)AI Agents
Pricing & plansluno.rest