VVerbatim

Developers & agents

Verbatim API and MCP server

Verbatim has a public REST API and an MCP server so scripts, automations and AI agents can turn a URL, YouTube video or text into an X thread, LinkedIn carousel, newsletter draft and short-video hooks on a user's behalf. Machine-readable spec: /openapi.json (OpenAPI 3.1).

How do I authenticate?

Create a personal API key in Settings → API keys (https://verbatimcoach.com/dashboard/settings#api-keys). Send it as `Authorization: Bearer vb_...`. Keys are shown once, stored only as a SHA-256 hash, and can be revoked at any time. Create a free account to get started.

Does the API cost extra?

No. Each successful generate call uses one draft from the same monthly allowance as the web app: Free 3 drafts per calendar month (UTC), Pro $29/mo unlimited. Failed calls are not counted.

What are the rate limits?

12 generate calls per 10 minutes per account (shared with the web app); 120 read calls per minute. Over the limit: HTTP 429 with Retry-After.

How long does a generate call take?

POST /api/v1/generate is synchronous and returns the finished draft, usually in 20 to 90 seconds. Use a client timeout of at least 120 seconds.

Endpoints

  • POST /api/v1/generate: Create a draft. Body: {"input": url-or-text, "sourceType"?: "article"|"youtube"|"text", "formats"?: ["thread","carousel","newsletter","hooks"]}. Returns 201 with the result and updated usage.
  • GET /api/v1/generations/{id}: Fetch a draft with all outputs.
  • GET /api/v1/generations?limit=20: List recent drafts (1 to 50).
  • GET /api/v1/generations/{id}/pdf: Download the LinkedIn carousel PDF.
  • GET /api/v1/me: Plan, drafts used and remaining this month.
  • POST /api/mcp: MCP server (Streamable HTTP, JSON-RPC). Tools: generate_content, get_generation, get_usage.

Example request

curl -X POST https://verbatimcoach.com/api/v1/generate \
  -H "Authorization: Bearer $VERBATIM_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 180 \
  -d '{"input": "https://www.youtube.com/watch?v=VIDEO_ID", "formats": ["thread", "carousel"]}'

Response (abridged; formats you did not request are null):

{
  "id": "cm...",
  "object": "generation",
  "status": "completed",
  "source": { "type": "youtube", "url": "https://www.youtube.com/watch?v=VIDEO_ID", "title": "..." },
  "formats": ["thread", "carousel"],
  "outputs": {
    "xThread": ["Post 1", "Post 2", "..."],
    "carousel": { "title": "...", "slides": [{ "kicker": "...", "headline": "...", "body": "..." }], "template": "editorial", "brandColor": "#1F4D3A" },
    "newsletter": null,
    "videoHooks": null
  },
  "links": { "self": ".../api/v1/generations/cm...", "edit": ".../dashboard/generations/cm...", "carouselPdf": ".../api/v1/generations/cm.../pdf" },
  "usage": { "plan": "free", "limit": 3, "used": 1, "remaining": 2, "periodResetsAt": "..." }
}

How do I connect an MCP client?

Point any MCP client that supports Streamable HTTP and custom headers at the endpoint below. Listing tools works without a key; calling them needs one.

{
  "mcpServers": {
    "verbatim": {
      "type": "http",
      "url": "https://verbatimcoach.com/api/mcp",
      "headers": { "Authorization": "Bearer vb_YOUR_KEY" }
    }
  }
}

Errors

Every error is JSON: {"error": {"code": "...", "message": "..."}}

  • 400 invalid_request: Body is not valid JSON or a field is wrong.
  • 401 unauthorized: Missing, invalid or revoked key.
  • 402 quota_exceeded: Free monthly drafts used up; upgrade to Pro or wait for the next month.
  • 404 not_found: No such draft on this account, or no carousel in it.
  • 422 unprocessable_source: The page, video captions or text could not be read or had too little substance.
  • 429 rate_limited: Too many requests; retry after the Retry-After seconds.
  • 502 upstream_error: The AI writing service failed; try again (not counted).
  • 500 internal_error: Unexpected error on our side.

Does Verbatim post for me?

No. The API returns drafts. You or your agent decide what to publish and where.

Try it on something you already made

3 free drafts a month, no card. Or see a full sample first.