# Motif — Full Product & API Reference > Turn one recording into a month of content. Programmatic access via REST API and MCP. ## Product Overview Motif is an AI content repurposing tool. Upload text, a URL, audio, or video. Motif extracts key ideas, matches them to platforms, and generates native posts in your trained voice. ## Supported Platforms - LinkedIn Post (ID: "linkedin", max 3,000 chars) - X (Twitter) (ID: "twitter", max 280 chars) - Instagram Caption (ID: "instagram", max 2,200 chars) - TikTok/Reels Script (ID: "tiktok_script", max 1,500 chars) - Email Newsletter (ID: "email", max 5,000 chars) - Blog Post (ID: "blog", max 10,000 chars) ## Voice System Voice profiles store: tone, sentence style, vocabulary level, signature phrases, emoji usage, formatting, avoids list, and per-platform adaptations. Training requires 3+ writing samples of 50+ characters each. Voice accuracy score (0-100) based on profile completeness, sample richness, and edit convergence. ## Pricing - Starter: $29/month (annual: $24/month) — 10 pipeline runs/month, 5 quick posts/day - Pro: $59/month (annual: $49/month) — 30 pipeline runs/month, unlimited quick posts, voice training API access requires an active subscription. No free tier. ## REST API Base URL: https://www.createmotif.com/api/v1 Authentication: Bearer token (API key created in dashboard) ### Endpoints POST /api/v1/repurpose Submit content for repurposing. Returns a job ID for async polling. Body: { "text": "string", "url": "string", "platforms": ["linkedin"], "voiceProfileId": "string" } Response: { "data": { "jobId": "string", "status": "processing" } } POST /api/v1/generate/{platform} Generate for a single platform only. Same body as /repurpose. POST /api/v1/extract-ideas Extract key ideas without generating posts. Body: { "text": "string" } or { "url": "string" } Response: { "data": { "ideas": [{ "insight": "string", "supportingQuote": "string", "whyShareable": "string" }] } } GET /api/v1/jobs/{id} Check pipeline status. Response: { "data": { "id": "string", "status": "processing|completed|failed", "createdAt": "number" } } GET /api/v1/outputs/{jobId} Retrieve generated posts for a completed job. Response: { "data": { "outputs": [{ "platform": "string", "text": "string", "faithfulnessFlag": "boolean", "voiceFidelity": { "combined": 0-100, "centroidSimilarity": 0-100, "nearestNeighborAvg": 0-100, "sampleCount": "number" } | null }] } } voiceFidelity is null until the user has ≥5 voice samples; combined ≥60 passes Motif's voice threshold. GET /api/v1/voices List voice profiles for the authenticated user. GET /api/v1/voices/{id} Get voice profile details including accuracy score. POST /api/v1/voices/train Train a voice profile from writing samples. Body: { "samples": ["string"], "urls": ["string"] } POST /api/v1/voices/score Score arbitrary text for voice fidelity against the user's corpus. Stateless — does not persist a scoring row. Use to verify "is this in my voice?" before publishing AI-generated content. Body: { "text": "string (max 10000 chars)", "platform": "linkedin|twitter|instagram|tiktok_script|email|blog" } Response: { "data": { "combined": 0-100, "centroidSimilarity": 0-100, "nearestNeighborAvg": 0-100, "sampleCount": "number", "scorerVersion": "string", "usedPlatformScope": "boolean" } } Bar to clear: combined >= 60 passes Motif's voice threshold; >= 80 is "undeniable" range. GET /api/v1/usage Get current billing period usage. Response: { "data": { "plan": "starter|pro", "inputsUsed": 5, "inputsRemaining": 5, "billingPeriodStart": "number" } } ### Authentication All requests require an Authorization header: Authorization: Bearer motif_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Create API keys at: https://www.createmotif.com/dashboard/settings/api-keys ### Rate Limits 60 requests per minute per user. Rate-limited responses return 429 with Retry-After header. ### Webhooks Register a webhook URL on your API key to receive POST callbacks when pipeline jobs complete. Payload: { "event": "pipeline.completed", "jobId": "string", "status": "completed|failed", "outputCount": 0 } Verification: X-Motif-Signature header with HMAC-SHA256 (t=timestamp,v1=hash) ### Error Format { "error": { "code": "string", "message": "string" }, "requestId": "string" } Error codes: invalid_api_key, rate_limit_exceeded, validation_error, plan_limit_reached, not_found, internal_error ## curl Examples # Repurpose content curl -X POST https://www.createmotif.com/api/v1/repurpose \ -H "Authorization: Bearer motif_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"text": "We shipped v2 and reduced latency by 60%.", "platforms": ["linkedin", "twitter"]}' # Check job status curl https://www.createmotif.com/api/v1/jobs/JOB_ID \ -H "Authorization: Bearer motif_YOUR_KEY" # Get generated outputs curl https://www.createmotif.com/api/v1/outputs/JOB_ID \ -H "Authorization: Bearer motif_YOUR_KEY" # List voice profiles curl https://www.createmotif.com/api/v1/voices \ -H "Authorization: Bearer motif_YOUR_KEY" # Check usage curl https://www.createmotif.com/api/v1/usage \ -H "Authorization: Bearer motif_YOUR_KEY" ## MCP Server Install for OpenClaw, Claude Code, Cursor, or Windsurf: { "mcpServers": { "motif": { "command": "npx", "args": ["@motif/mcp-server"], "env": { "MOTIF_API_KEY": "motif_YOUR_KEY" } } } } Tools: repurpose, check_job, get_outputs, list_voices, extract_ideas, usage ## Integrations ### OpenClaw OpenClaw is an open-source AI agent platform (360k+ GitHub stars — fastest-growing OSS project in GitHub history). Connect it to Motif's API to give your agent voice-aware content repurposing across 6 platforms. Create an OpenClaw skill that calls POST /api/v1/repurpose with your API key, and your agent gets platform-native posts in your trained voice. Setup guide: https://www.createmotif.com/integrations/openclaw ## Website https://www.createmotif.com https://www.createmotif.com/developers