Onboarding Studio
API

Two on-ramps. One credit wallet.

Ounie accounts hit the REST endpoints with a bearer token. AI assistants — including the Ounie AI Team — connect over MCP and get a native tool surface. Both run the same generation and tracking pipeline, and every call draws your shared Ounie credits (1 credit = 1¢), never overdrawing. There is no keyless x402 rail: a plan is composed from your private Ounie brain, so generating one always requires your own Ounie key.

Authentication · two keys, two reach
Send Authorization: Bearer <key> on any REST or MCP call (or append ?api_key=if your client can't set headers). Cookie sessions work on the same routes.
Per-app key · obp_live_…

Minted on Dashboard → API keys (shown once, up to 5 active). Lists, reads, tracks, and exports your plans and hires. It has no ounie.com credential, so it cannot generate — those calls return a 403 master_key_required.

Fleet master key · ounie_live_…

Your ounie.com developer key (enable app access on ounie.com). It forwards upstream to reach your private brains, so it can do everything — including brain-grounded generation — and works across every Ounie app. Draws the same wallet.

MCP · for AI assistants and the Ounie AI Team
Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Auth with an obp_live_… key, or the Ounie fleet master key ounie_live_… to generate.
Endpoint  https://onboard.ounie.com/api/mcp
Header    Authorization: Bearer ounie_live_…

# If your MCP client can't set headers (e.g. the Ounie AI Team's
# manual MCP entry), append the key as a query param:
https://onboard.ounie.com/api/mcp?api_key=ounie_live_…
ToolWhat it doesCost
list_plansList your generated 30/60/90 onboarding plans.free
get_planRead one plan: phases, cited items, hires + progress.free
generate_planCompose one grounded, cited plan for a role. Master key only.5 credits
create_hireAdd a hire; snapshots the plan's checklist for tracking.free
list_hiresA plan's hires with live progress + overdue flags.free
check_itemTick a checklist item on/off for one hire.free
export_planExport a plan as portable, cited Markdown.free
get_credit_balanceSpendable Ounie credits + monthly included.free
get_pricingPer-action pricing. No auth required.public
whoamiThe authenticated key's owner + whether it can generate.free
REST · the same endpoints the dashboard uses
JSON over HTTPS. Reads and tracking accept any key; generation needs a cookie session or the master key.
GET/api/plansList your plans

Free. Any key or cookie.

POST/api/plansGenerate a plan
{ "role_title": "Customer Success Manager",
  "seniority": "mid-level",
  "brain_ids": ["…"] }

Bills 5 credits, grounded + cited from your brains. Master key (ounie_live_) or cookie only — a per-app key gets 403 master_key_required. Thin material refunds fully.

GET/api/plans/{id}Plan detail

Phases, cited items, hires + progress. Free.

POST/api/plans/{id}/regenerateRecompose from the same brains

Re-bills 5. Master key / cookie only. Hire checklists are snapshots — in-flight ramps survive.

GET/api/plans/{id}/exportExport to Markdown

A cited 30/60/90 checklist. Add ?format=json for structured data. Free.

POST/api/plans/{id}/hiresAdd a hire
{ "name": "Jordan Rivera",
  "start_date": "2026-07-14" }

Free. Snapshots the plan's checklist for tracking.

GET/api/plans/{id}/hiresList hires with progress

Free. Checked counts, phase completion, overdue flags.

PATCH/api/plans/{id}/hires/{hireId}/items/{hireItemId}Check an item on/off
{ "checked": true }

Free. Returns the item + updated progress.

GET/api/brainsList your brains (for brain_ids)

Master key / cookie only (reaches your private brains).

Why there's no x402 (keyless) rail
Every plan is generated from your own private Ounie brain — there is nothing to sell to an anonymous, keyless caller. So agent access is API keys / MCP drawing your credits, and generation always uses your own Ounie master key. (Some Ounie apps whose actions need no brain do expose a pay-per-call x402 endpoint; this one deliberately does not.)
Shape of a generated plan
{
  "plan_id": "…",
  "item_count": 24,
  "grounded": true,       // at least one item kept a brain citation
  "credits_spent": 5
}

// GET /api/plans/{id} then returns phases → items, each item:
{ "text": "…", "detail": "…",
  "citations": [ { "brainId": "…", "slug": "…", "title": "…" } ] }