Developers

Build on a
multi-agent content engine.

REST API and MCP server access to Vyrable's persona-aware content pipeline. Trigger the multi-agent generator, capture ideas, query content, manage personas — from your code, your CI, or your AI agent.

REST API

Bearer-token auth with scoped permissions. JSON in, JSON out. List content, kick off the generation pipeline, manage personas, push ideas straight into Mission Control.

New

MCP server

Plug Vyrable straight into Claude Desktop, Cursor, Continue, or Cline. Your AI agent reads personas, triggers content generation, and captures ideas without a custom integration.

MCP setup

Webhooks

15 outbound events covering content lifecycle, ideas, campaigns, reviews, AI visibility alerts, and competitor intel. HMAC-signed, retried with exponential backoff, 10s delivery timeout.

Webhook docs

Authentication

All API and MCP requests authenticate with a single bearer token. Keys are vyr_-prefixed, generated in the dashboard, hashed at rest, and revoked on demand.

HTTP headerrequired on every request
Authorization: Bearer vyr_your_api_key_here
content:readList + read content rows and variants
content:writeTrigger generation + create ideas
personas:readList + read personas
personas:writeCreate + update personas
campaigns:readRead campaign rows
campaigns:writeCreate + update campaigns
analytics:readRead engagement analytics

Each key carries a subset of permissions. A leaked read-only key can list content but can't trigger generation or move ideas.

Single-file SDKs

Single-file SDKs for TypeScript and Python. No npm install, no pip install (Python wants requests) — drop into your project. Typed responses, structured errors, sensible defaults.

Download

/sdk/vyrable.ts
# bash / zsh
curl https://vyrable.ai/sdk/vyrable.ts -o vyrable.ts

# pwsh
iwr https://vyrable.ai/sdk/vyrable.ts -OutFile vyrable.ts

Usage

import { VyrableClient } from "./vyrable";

const vy = new VyrableClient({ apiKey: process.env.VYRABLE_API_KEY! });

// Discover personas, then trigger generation.
const { data: personas } = await vy.listPersonas();
const { data: queued } = await vy.generateContent({
  personaId: personas[0].id,
  topic: "How AI search is reshaping content marketing",
  contentType: "POST",
});

// Poll for the result.
const { data: piece } = await vy.getContent(queued.id);
console.log(piece.headline, "—", piece.variants.length, "variants");

Errors throw VyrableApiError with status + code + message preserved from the response in both languages.

Cookbook: six end-to-end recipes — schedule a week of posts, bulk-import a CSV, score-and-rewrite, watch a competitor RSS, auto-publish, weekly newsletter.
Open

REST endpoints

Ten endpoints cover the full read/write loop — list, search, generate, publish, schedule, and manage ideas + campaigns. The same surface powers the MCP server below — every MCP tool is a thin wrapper over one of these.

GET/api/v1/contentcontent:read

List content for the authenticated org. Filters by status, paginates.

curl https://vyrable.ai/api/v1/content?limit=20 \
  -H "Authorization: Bearer vyr_your_key"
GET/api/v1/content/:idcontent:read

Fetch a single content item including all variant rows, scores, and the winner.

curl https://vyrable.ai/api/v1/content/CONTENT_ID \
  -H "Authorization: Bearer vyr_your_key"
POST/api/v1/content/generatecontent:write

Trigger the multi-agent generation pipeline (research → strategy → 3 writer variants → judge). Typically completes in 30–90s.

curl -X POST https://vyrable.ai/api/v1/content/generate \
  -H "Authorization: Bearer vyr_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "personaId": "your_persona_id",
    "topic": "AI trends in 2026",
    "contentType": "POST",
    "brief": "Focus on practical applications"
  }'
GET/api/v1/personaspersonas:read

List active personas in the org. Use this to discover personaIds for generation.

curl https://vyrable.ai/api/v1/personas \
  -H "Authorization: Bearer vyr_your_key"
POST/api/v1/content/:id/publishcontent:write

Publish an APPROVED content row to its target platforms now. Returns per-platform success/failure.

curl -X POST https://vyrable.ai/api/v1/content/CONTENT_ID/publish \
  -H "Authorization: Bearer vyr_your_key"
POST/api/v1/content/:id/schedulecontent:write

Set scheduledFor on an APPROVED or DRAFT content row. The publish workers pick it up automatically when the timestamp passes.

curl -X POST https://vyrable.ai/api/v1/content/CONTENT_ID/schedule \
  -H "Authorization: Bearer vyr_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "scheduledFor": "2026-05-08T09:00:00Z" }'
GET/api/v1/content/searchcontent:read

Substring search across topic + headline + body. Useful for de-dupe checks before triggering generation.

curl 'https://vyrable.ai/api/v1/content/search?q=ai+citability&limit=5' \
  -H "Authorization: Bearer vyr_your_key"
GET/api/v1/ideascontent:read

List Mission Control ideas with optional status / priority / persona filters.

curl 'https://vyrable.ai/api/v1/ideas?status=ready' \
  -H "Authorization: Bearer vyr_your_key"
POST/api/v1/ideascontent:write

Capture an idea straight to Mission Control with optional source URL, tags, and persona assignment. Used by the browser extension.

curl -X POST https://vyrable.ai/api/v1/ideas \
  -H "Authorization: Bearer vyr_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "AI search optimisation 2026",
    "sourceUrl": "https://example.com/article",
    "tags": ["geo", "research"]
  }'
GET/api/v1/campaignscampaigns:read

List campaigns — filter by status (DRAFT / ACTIVE / PAUSED / COMPLETED / ARCHIVED). Use to discover a campaignId for attributed generation.

curl 'https://vyrable.ai/api/v1/campaigns?status=ACTIVE' \
  -H "Authorization: Bearer vyr_your_key"
GET/api/v1/visibility/scorecontent:read

AI Knowledge Baseline — overall score + per-provider breakdown over the look-back window (1-180 days, default 30). The same data the in-app dashboard renders.

curl 'https://vyrable.ai/api/v1/visibility/score?windowDays=30' \
  -H "Authorization: Bearer vyr_your_key"
GET/api/v1/visibility/leaderboardcontent:read

Competitor leaderboard. Each row includes mentions, soloMentions (where the competitor was named and your brand wasn't — the prompts to attack first), mentionRate, and shareOfVoice (0-100, 50=parity).

curl 'https://vyrable.ai/api/v1/visibility/leaderboard?windowDays=30' \
  -H "Authorization: Bearer vyr_your_key"
GET/api/v1/visibility/moverscontent:read

Per-prompt mention-rate change across the look-back window (7-90 days, default 14). Sorted most-down-first so the prompts losing ground come first.

curl 'https://vyrable.ai/api/v1/visibility/movers?windowDays=14' \
  -H "Authorization: Bearer vyr_your_key"

Response envelope

{
  "data": [ ... ],
  "pagination": { "total": 42, "limit": 20, "offset": 0 }
}

Errors return { "error": "...", "message": "..." } with the matching HTTP status code (400, 401, 403, 404, 429, 500).

Full OpenAPI 3.1 spec at /api/v1/openapi.json. Generate SDKs in any language with openapi-generator, or import into Bruno / Postman / Stoplight.

MCP server

New

Vyrable speaks the Model Context Protocol so any MCP-compatible AI client can call the platform directly. Drop the snippet into your MCP client config and Claude Desktop, Cursor, Continue, or Cline can list your personas, trigger content generation, and capture ideas with no custom code.

Claude Desktop / Cursor / Continue / Cline

claude_desktop_config.json
{
  "mcpServers": {
    "vyrable": {
      "url": "https://vyrable.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer vyr_your_api_key_here"
      }
    }
  }
}

Tools exposed

  • vyrable_list_contentList recent content (status, persona, scores).
  • vyrable_get_contentRead one content row + variants by ID.
  • vyrable_search_contentFull-text search topic / headline / body — useful for de-dupe before generating.
  • vyrable_generate_contentKick off the multi-agent generation pipeline.
  • vyrable_publish_contentPublish an APPROVED row to its target platforms now.
  • vyrable_schedule_contentSet scheduledFor on an APPROVED row — publish workers pick it up automatically.
  • vyrable_list_personasDiscover personaIds for generation.
  • vyrable_list_ideasList Mission Control backlog (filterable by status / priority / persona).
  • vyrable_list_campaignsList campaigns to discover a campaignId for attributed generation.
  • vyrable_capture_ideaDrop an idea into Mission Control with source URL + tags.

The MCP server speaks JSON-RPC over HTTP and Server-Sent Events (MCP 2025-03-26 spec). Same auth as REST: any vyr_ key with the relevant scopes works for both.

Rate limits + budgets

100 / min

REST + MCP requests per API key.

10 keys

Active keys per org, revoke any time.

Org budget

Generation respects monthly LLM-spend cap; 403 with budget exceeded when over.

Hitting the rate limit returns 429 Too Many Requests. Higher per-key limits available on Enterprise.

Live system status: vyrable.ai/status.

Get a key. Build something.

Free accounts include API access from day one. Keys live in Settings → API once you sign in.