Pitch Deck 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 pipeline and draw your shared Ounie credits (1 credit = 1¢), never overdrawing. Decks are grounded in your private Ounie brains, so there is no x402 rail — generation is authenticated with your Ounie master key, not keyless.

Authentication
Two rails, one header. Send Authorization: Bearer <key> — or append ?api_key=<key>to the URL when your client can't set headers.
pdk_live_… — this app's key

Mint on Dashboard → API keys (shown once, up to 5 active). Lists, reads, and exports decks. It has no ounie.com credential, so it can't reach your private brains— generation returns a clear "use your master key" message.

ounie_live_… — the fleet master key

Your ounie.com developer key. Enable fleet access on ounie.com and it works across every Ounie app. It's forwarded upstream, so it unlocks brain-grounded generation and draws the same wallet.

# generate a deck grounded in your brains
curl -X POST https://slides.ounie.com/api/decks \
  -H "Authorization: Bearer ounie_live_…" \
  -H "Content-Type: application/json" \
  -d '{ "brain_ids": ["…"], "audience": "investor", "slide_count": 12 }'
MCP · for AI assistants and the Ounie AI Team
Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Auth with a pdk_live_… key or the master key ounie_live_….
Endpoint  https://slides.ounie.com/api/mcp
Header    Authorization: Bearer ounie_live_…   (grounds in your brains)

# The Ounie AI Team can't set headers — ride the key on the URL:
https://slides.ounie.com/api/mcp?api_key=ounie_live_…

# Add as an MCP server:
{ "mcpServers": { "pitch-deck-studio": {
    "url": "https://slides.ounie.com/api/mcp",
    "headers": { "Authorization": "Bearer ounie_live_…" } } } }
ToolWhat it doesCost
list_decksList your pitch decks (title, audience, slide count, theme).free
get_deckRead one deck: metadata + every slide with its cited source page.free
generate_deckBuild a full cited deck from your brains (needs the master key).15 credits
regenerate_slideRewrite ONE slide from the same grounded material (needs the master key).1 credit
export_deckGet the PDF export URL (fetch with your key).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 ground.free
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.
GET/api/brainsYour brains

The brain picker. Free. Needs the master key (or a cookie session).

GET/api/decksList decks

Free. Returns { decks: [ … ] }.

POST/api/decksGenerate a deck
{ "brain_ids": ["…"], "audience": "investor",
  "topic": "", "slide_count": 12, "theme": "boardroom",
  "company_url": "" }

Bills 15 credits when a deck is produced; refunds fully on thin material. Grounded + cited from your brains — needs a cookie session OR the master key (ounie_live_). audience = investor | sales | partner | internal.

GET/api/decks/{id}Deck + slides

Free. Returns { deck, slides }.

PATCH/api/decks/{id}Restyle / rename
{ "theme": "boardroom", "title": "…" }

Free — no LLM.

PATCH/api/decks/{id}/copyEdit the words
{ "title": "…", "slides": [ { "id": "…", "headline": "…", … } ] }

Free — your own edits; citations preserved.

POST/api/decks/{id}/slides/{position}/regenerateRegenerate one slide
{ "instruction": "make it punchier" }

Bills 1 credit when a new slide is produced; refunds on thin. Needs the master key.

GET/api/decks/{id}/pdfExport PDF

Free. One 16:9 slide per page. ?notes=1 appends a speaker-notes page after each slide.

GET/api/decks/{id}/slides/{position}/imageSlide PNG

Free. Renders one 1280×720 slide on demand.

DELETE/api/decks/{id}Delete a deck

Free. Cascades its slides.

Shape of a generated deck
{
  "deck_id": "…",
  "slides_generated": 12,
  "crawled": false,             // whether a company URL was folded in
  "thin_context": false,
  "credits_spent": 15
}

// GET /api/decks/{id} → each slide carries its citation:
{ "position": 3, "section": "Market", "headline": "…",
  "body": "…", "bullets": [ … ], "speaker_notes": "…",
  "citation": { "brainId": "…", "slug": "…",
                "url": "https://ounie.com/…" } }
No x402 — and why
Pitch Deck Studio has no keyless pay-per-call (x402) endpoint: every deck is grounded in the caller's own private Ounie brain, so a run has to be authenticated as that owner (a master key), not paid for anonymously. Agent access is API keys / MCP, drawing your Ounie credits.