Q
Interview Prep
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 pipeline: retrieve context from your own Ounie brains, generate a cited question pack, and draw your shared Ounie credits (1 credit = 1¢), never overdrawing.

Every pack is grounded in your private Ounie brain, so there is no keyless x402 / pay-per-call rail — agent access is your Ounie API key or MCP, in credits. Generation needs your fleet master key (the only key that can reach your brains).

Authentication · two keys, two capabilities
Send a bearer token on any REST or MCP call, or append ?api_key=when your client can't set headers. A dashboard cookie session works too — it's the same route.
ounie_live_…
master key

Your ounie.com developer key. Enable apps access on ounie.com → settings, then use it here. It reaches your brains, so it can generate grounded, cited packs — and it works across every Ounie app.

ivp_live_…
per-app key

Minted on Dashboard → API keys (shown once; up to 5 active). It reads and exports your packs, but has no ounie.com credential — generation returns a clear 403 telling you to switch to your master key.

MCP · for AI assistants and the Ounie AI Team
Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Auth with your master key ounie_live_… to generate, or a per-app ivp_live_… key for reads.
Endpoint  https://interview.ounie.com/api/mcp
Header    Authorization: Bearer ounie_live_…

# If your MCP client can't set headers, append the key as a query param:
https://interview.ounie.com/api/mcp?api_key=ounie_live_…
ToolWhat it doesCost
generate_packBuild a tailored pack from your brains (master key only).1 credit / question produced
list_brainsList the Ounie brains you can build from (master key).free
list_packsList your packs (role, company, counts, weak spots).free
get_packOne pack + all its questions, answers, and citations.free
export_packExport a pack as Markdown or JSON.free
list_weak_spotsYour all-pack 'weak' drill queue.free
grade_questionSelf-grade one question (nailed / okay / weak).free
get_credit_balanceSpendable Ounie credits + questions affordable.free
get_pricingPer-action pricing + focus options. No auth required.public
whoamiThe authenticated key's owner + key id + rail.free

Ounie AI Team recipe: add an MCP server with URL https://interview.ounie.com/api/mcp?api_key=ounie_live_… (its HTTP MCP entries can't set headers, so the key rides the URL). Tools are discovered automatically.

REST · the same endpoints the dashboard uses
Send Authorization: Bearer <key> (or ?api_key=) on any of these. Cookie sessions work too — it's the same route.
POST/api/packsBuild a question pack
{ "brain_ids": ["…"], "role_title": "Founding Engineer",
  "company": "Ounie", "focus": "mixed", "question_count": 8 }

Bills 1 credit per question actually produced. Needs a master key or cookie session (reaches your brains); a per-app ivp_live_ key returns 403 → use your master key. focus = mixed | behavioral | technical | company_specific.

GET/api/packsList your packs

Free. Works with either key.

GET/api/packs/{id}Pack + its questions

Free. Questions carry answers, difficulty, focus, citations, and your latest grade.

GET/api/packs/{id}/export?format=markdownExport a study sheet

Free. format = markdown | json. Works with either key (pure read of your own rows).

POST/api/questions/{id}/gradeSelf-grade a question
{ "grade": "weak" }

Free. grade = nailed | okay | weak. A 'weak' grade lands it in your drill queue.

GET/api/brainsList your brains

Free. Needs a master key or cookie session (brains live on ounie.com). Returns { brains }.

DELETE/api/packs/{id}Delete a pack

Free. Questions and practice history cascade.

Shape of a generated question
{
  "question": "Walk me through a system you designed end to end.",
  "why_they_ask": "They're probing ownership and technical depth.",
  "model_answer": "A first-person answer built ONLY from your brain…",
  "difficulty": "medium",
  "focus": "technical",
  "grade": null,                 // your latest self-grade
  "citations": [                 // only pages actually retrieved from your brain
    { "title": "…", "slug": "…", "url": "https://ounie.com/dashboard/brains/…" }
  ]
}

Model answers come only from retrieved brain context; a citation to a page that wasn't retrieved is dropped, never repaired — nothing fabricated ever renders as a source.