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.
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 setup15 outbound events covering content lifecycle, ideas, campaigns, reviews, AI visibility alerts, and competitor intel. HMAC-signed, retried with exponential backoff, 10s delivery timeout.
Webhook docsAll 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.
Authorization: Bearer vyr_your_api_key_here
content:readList + read content rows and variantscontent:writeTrigger generation + create ideaspersonas:readList + read personaspersonas:writeCreate + update personascampaigns:readRead campaign rowscampaigns:writeCreate + update campaignsanalytics:readRead engagement analyticsEach 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 for TypeScript and Python. No npm install, no pip install (Python wants requests) — drop into your project. Typed responses, structured errors, sensible defaults.
# bash / zsh curl https://vyrable.ai/sdk/vyrable.ts -o vyrable.ts # pwsh iwr https://vyrable.ai/sdk/vyrable.ts -OutFile vyrable.ts
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.
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.
/api/v1/contentcontent:readList content for the authenticated org. Filters by status, paginates.
curl https://vyrable.ai/api/v1/content?limit=20 \ -H "Authorization: Bearer vyr_your_key"
/api/v1/content/:idcontent:readFetch 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"
/api/v1/content/generatecontent:writeTrigger 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"
}'/api/v1/personaspersonas:readList 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"
/api/v1/content/:id/publishcontent:writePublish 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"
/api/v1/content/:id/schedulecontent:writeSet 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" }'/api/v1/content/searchcontent:readSubstring 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"
/api/v1/ideascontent:readList Mission Control ideas with optional status / priority / persona filters.
curl 'https://vyrable.ai/api/v1/ideas?status=ready' \ -H "Authorization: Bearer vyr_your_key"
/api/v1/ideascontent:writeCapture 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"]
}'/api/v1/campaignscampaigns:readList 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"
/api/v1/visibility/scorecontent:readAI 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"
/api/v1/visibility/leaderboardcontent:readCompetitor 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"
/api/v1/visibility/moverscontent:readPer-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"
{
"data": [ ... ],
"pagination": { "total": 42, "limit": 20, "offset": 0 }
}Errors return { "error": "...", "message": "..." } with the matching HTTP status code (400, 401, 403, 404, 429, 500).
openapi-generator, or import into Bruno / Postman / Stoplight.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.
{
"mcpServers": {
"vyrable": {
"url": "https://vyrable.ai/api/mcp",
"headers": {
"Authorization": "Bearer vyr_your_api_key_here"
}
}
}
}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.
REST + MCP requests per API key.
Active keys per org, revoke any time.
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.
Free accounts include API access from day one. Keys live in Settings → API once you sign in.