prapi.dev
§ 00 · API

Every module. Over REST, MCP, and the CLI.

PRAPI is API-first by design. The dashboard is one client of the backend; the REST API, the MCP server, and the CLI are equal citizens — same scoring engine, same brief.md merge, same voice validator. Build a pipeline, wire your editor, or hand the whole thing to an AI agent.

200+ REST endpoints220+ MCP tools29 CLI command groupspublic Directory MCP
§ 01 · FOUR SURFACES

One backend. Four ways in.

Pick the surface that fits the job. They share the same data, the same auth, and the same engine — a draft you make over the API shows up in the dashboard, and vice versa.

REST API

Bearer-authed endpoints at app.prapi.dev/api/v1. 200+ routes across every module. JSON in, JSON out — build whatever pipeline fits.

MCP server

220+ tools over JSON-RPC. Entra session or bearer key. Drop PRAPI into Claude Code, Cursor, or ChatGPT as first-class tools.

CLI

A single binary across 29 command groups, a thin client over /api/v1. Pipes to jq and your scripts.

Install the CLI
Agent

The PRAPI Agent drives the engine for you — prepare-and-surface, never send. Reachable on all of the above.

Meet the agent
§ 02 · REST

200+ endpoints, every resource group.

Base URL https://app.prapi.dev/api/v1. Bearer auth on every route, scoped to your own workspace.

Browse them in the interactive API reference, or pull the OpenAPI 3.1 spec. Both are generated from the route schemas, so they never drift from what the API actually does.

PR-Pitch

pitches, drafts, briefs, logged-pitches — list the queue, score, draft, polish, send, record outcomes.

Editorial Calendar

calendar, content — strategy, slots, cadence, generate drafts, publish, engagement.

Outbound

outbound, outlets, backlinks — prospects, sequences, touches, the reply inbox, outlet diligence.

Assets

assets — versioned brand assets, visibility, restore, public press-kit.

Directory

directory — the public, consent-based brand-source directory (also a no-auth MCP + OpenAPI).

Research

research, submissions, source-research — briefs, contributors, reports, citations, cycles.

Agent

agent — the PRAPI Agent: a prepare-and-surface chat turn + the orchestration queue.

AEO / AIO

aeo-experiments, aio — citation snapshots and AI-Overview content briefs.

Portfolio

portfolio — cross-module compounding signals and the unified activity stream.

Account

api-keys, whoami, account, notifications, onboarding — keys, identity, sender setup.

§ 03 · AUTH & KEYS

One bearer key, every surface.

The same prapi_<key> authenticates the REST API, the MCP server, and the CLI. Keys are self-serve: create from the dashboard or the API, and revoke any time. The web app uses your Entra session; the public Directory MCP needs no auth.

# Create a key (or use the dashboard: Settings → API keys)
curl -X POST https://app.prapi.dev/api/v1/api-keys \
  -H "Authorization: Bearer $EXISTING_KEY" -d '{"label":"ci"}'
  → { "id": "...", "key": "prapi_...", "shownOnce": true }

# Confirm who the key is
curl https://app.prapi.dev/api/v1/whoami -H "Authorization: Bearer $PRAPI_KEY"

# Revoke it
curl -X DELETE https://app.prapi.dev/api/v1/api-keys/$KEY_ID \
  -H "Authorization: Bearer $PRAPI_KEY"
§ 04 · MCP

Hand PRAPI to your AI assistant.

Two MCP servers. The PR-Pitch server exposes 220+ tools over JSON-RPC for everything the API does. The Directory server is public and unauthenticated, for AI agents looking up brand sources.

PR-Pitch MCP

220+ tools at /api/pr-pitch/mcp. Accepts your Entra session or a bearer key. Same coverage as the REST API — pitches, calendar, content, outbound, assets, research, the agent.

Directory MCP

Four public tools — search_sources, verify_source, get_brand_profile, get_brand_coverage — at /api/directory/mcp. No auth, rate-limited, with a schema-derived OpenAPI document at /api/v1/directory/openapi.json.

Browse the directory API
§ 05 · QUICKSTART

Queue to sent, no dashboard.

The core PR-Pitch loop over REST. Every step has an MCP-tool and CLI equivalent.

# 1. List today's scored pitch queue
curl "https://app.prapi.dev/api/v1/pitches?sinceHours=72&minScore=40" \
  -H "Authorization: Bearer $PRAPI_KEY" | jq '.items[].queryId'

# 2. Draft one in a brand's voice (docks for review)
curl -X POST https://app.prapi.dev/api/v1/pitches/$QUERY_ID/drafts \
  -H "Authorization: Bearer $PRAPI_KEY" \
  -H "Content-Type: application/json" -d '{"brandId":"'$BRAND_ID'"}'

# 3. Send it — from your own sender, replies attributed back
curl -X POST https://app.prapi.dev/api/v1/drafts/$DRAFT_ID/send \
  -H "Authorization: Bearer $PRAPI_KEY" -d '{}'
  → { "ok": true, "messageId": "...", "sentAt": "..." }

# Same loop, two other ways:
prapi pitches list --since-hours 72 --min-score 40
mcp call list_pitches { "since_hours": 72, "min_score": 40 }

The send endpoint refuses an already-sent draft, requires the per-draft attribution URL in the body, and respects the 14-day trial gate — the same rules the dashboard enforces.

§ 06 · FAQ

Is PRAPI’s API a bolt-on, or first-class?

First-class. The web app is just one client of the same backend. Every module ships a REST API, an MCP server, and a CLI alongside the dashboard — same scoring engine, same brief.md merge, same voice validator. If a capability is hard to expose over the API, we treat that as a design smell.

How do I authenticate?

A bearer API key: Authorization: Bearer prapi_<key>. The same key works across the REST API, the PR-Pitch MCP server, and the CLI. The web app uses your Entra session instead; the public Directory MCP needs no auth at all.

How do I get and manage API keys?

Self-serve. Create one from the dashboard (Settings → API keys) or POST /api/v1/api-keys; list them with GET, and revoke with DELETE /api/v1/api-keys/{id}. The plaintext key is shown once on creation — save it then.

What can I do over the API?

Essentially everything the dashboard does: 200+ REST endpoints across 25+ resource groups — pitches, drafts, briefs, calendar, content, outbound, assets, directory, research, portfolio, the agent, and account/keys.

Can my AI assistant drive PRAPI?

Yes. The PR-Pitch MCP server exposes 220+ tools over JSON-RPC and accepts your Entra session or a bearer key — drop it into Claude Code, Cursor, or ChatGPT. The public Directory MCP exposes four read tools (search_sources, verify_source, get_brand_profile, get_brand_coverage) with no auth, plus an OpenAPI document.

Is there a CLI?

Yes — a single binary (no Node install) across 29 command groups, a thin client over the same /api/v1 endpoints. See prapi.dev/cli.

§ 99 · NEXT

Get a key, hit an endpoint.

Sign in once via Entra to bootstrap your workspace, mint an API key from settings, and you never need the dashboard again. The CLI and MCP server use the same key.