Connect your AI agent to Distribb. You write the content — we handle SEO optimization, backlinks, publishing, and analytics.
Fastest setup (Cursor, Claude Code, Codex, and 45+ agents)
npx skills add Bomx/distribb-skill
export DISTRIBB_API_KEY=your_keynpx skills add Bomx/distribb-skillcurl -s -H "Authorization: Bearer $DISTRIBB_API_KEY" https://distribb.io/api/v1/projects | jq .All API requests require a Bearer token in the Authorization header. Your API key is available in your account settings.
Authorization: Bearer your_api_key_here
Returns all active projects linked to your account. Use the project ID in subsequent API calls.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | No | Filter by project |
| status | string | No | Draft, Planned, Published, Generating |
| limit | int | No | Max results (default 50, max 200) |
| offset | int | No | Pagination offset |
Submit AI-generated content. Distribb handles backlink credit processing, stores the article, and prepares it for publishing.
| Field | Type | Required | Description |
|---|---|---|---|
| project_id | int | Yes | Target project ID |
| keyword | string | Yes | Main keyword / topic |
| title | string | No | Article title (defaults to keyword) |
| content | string | No | Full HTML content |
| meta_description | string | No | SEO meta description |
| scheduled_date | string | No | ISO 8601 date (e.g. 2026-03-25T09:00:00Z) |
| article_style | string | No | Informative, Listicle, How-To, etc. |
| status | string | No | Draft (default) or Planned |
Update an article's content, title, meta description, status, or scheduled date. Useful for revising articles to add backlink targets after receiving a backlinks_warning. Cannot update published articles.
content | string | Updated HTML content |
title | string | Updated title |
meta_description | string | Updated meta description |
status | string | "Draft" or "Planned" |
scheduled_date | string | ISO 8601 date (e.g. 2026-04-01T09:00:00Z) |
Send only the fields you want to update. If content is updated and the project participates in the backlink network, backlinks are re-scanned.
Retrieve full article details including content. The article must belong to your account.
Search for keyword ideas with search volume and difficulty data. Paid Agentic Mode uses Distribb's keyword data; the Free Agentic plan uses your own DataForSEO or Ahrefs keys (see BYO Keys below).
| Field | Type | Required | Description |
|---|---|---|---|
| keyword | string | Yes | Seed keyword to research |
| project_id | int | No | Project for context and ownership |
If the calling user is on the Free Agentic plan and has not yet saved a DataForSEO or Ahrefs API key, this endpoint returns HTTP 402 Payment Required with a machine-readable body so your agent knows what to do. Paid plans never see this response.
Agent contract: on receiving 402 with error = "byo_keys_required", halt the keyword-research step and surface instructions_for_agent verbatim to the human user. Do not retry until setup_url has been visited and credentials saved.
Provider precedence when both keys are saved: DataForSEO is used first (full keyword expansion); if only Ahrefs is saved, the response is sourced from Ahrefs Keywords Explorer ("source": "byo_ahrefs"). All other Distribb endpoints (articles, integrations, backlinks) work normally without BYO keys.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | No | Filter to a specific project |
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | No | Filter to a specific project |
Returns published articles from your site that are relevant to a keyword. Use these as internal links in your new article for better SEO.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | Yes | Your project ID |
| keyword | string | Yes | Target keyword for the article |
Returns URLs from other Distribb network members. Include 1-2 of these as natural references in your article to earn backlink credits. When you submit the article, Distribb detects these links and credits your project automatically.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | Yes | Your project ID |
| keyword | string | Yes | Target keyword for the article |
Submit your own content (notes, drafts, talking points) and Distribb's AI will expand it into a full SEO-optimized article with YouTube videos, images, quotes, backlinks, and internal links. Requires the Pro plan and costs 1 article credit. Not available on the Agentic plan (use POST /articles instead to submit your own AI-generated content).
| Field | Type | Required | Description |
|---|---|---|---|
| project_id | int | Yes | Target project ID |
| keyword | string | Yes | Target keyword / topic for SEO |
| source_content | string | Yes | Your content to expand (notes, draft, talking points, etc.) |
| instructions | string | No | Additional guidance (e.g. "add YouTube videos", "focus on beginners") |
| title | string | No | Article title (defaults to keyword) |
| article_style | string | No | Informative, Listicle, How-To, etc. (default: Informative) |
Triggers CMS publishing for an article. Distribb handles the integration (WordPress, Webflow, Shopify, Ghost, Wix, Notion, Framer, or Webhook) based on the project's connected platform.
Returns project-specific context needed for high-quality content: business name, description, competitors, custom AI instructions, and language. Use this to ground your AI writer in the user's brand voice.
| Name | Type | Required | Description |
|---|---|---|---|
| project_id | int | Yes | Your project ID |
If you connect a custom Webhook integration (instead of WordPress / Webflow / Shopify / Ghost / Wix / Notion / Framer), Distribb posts each finished article to your URL. The payload is wire-compatible with Outrank’s webhook spec, so any receiver written for Outrank works against Distribb with zero changes. Your endpoint must accept this JSON shape, validate the bearer token, and respond with 200 within 30 seconds.
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <your access token> — the token you set in Settings → Integrations → Webhook |
| X-API-Key | <your access token> — same value, sent for receivers that read this header (AWS API Gateway, generic SaaS) |
| x-make-apikey | <your access token> — same value, sent for Make.com Custom Webhook "API Key restriction" |
| User-Agent | Distribb-Publisher/1.0 |
Distribb sends your access token under three header names so the request authenticates against any common webhook receiver without extra configuration. Your endpoint only needs to validate one of them.
| Field | Type | Description |
|---|---|---|
| event_type | string | Always "publish_articles" |
| timestamp | string | When the webhook was sent (ISO 8601, UTC) |
| data.articles[].id | string | Distribb article ID |
| data.articles[].title | string | Article title |
| data.articles[].slug | string | URL slug, e.g. lawn-care-toronto |
| data.articles[].content_html | string | Full article body as HTML (with <h2>, <p>, <ul>, <figure>, etc.). Render this if your CMS displays HTML directly. |
| data.articles[].content_markdown | string | Same body converted to real Markdown. Render this if your CMS expects Markdown. Pick one of the two — never both. |
| data.articles[].meta_description | string | SEO meta description (~155 chars) |
| data.articles[].created_at | string | When the article was created (ISO 8601, UTC) |
| data.articles[].image_url | string | Public URL of the feature image (already hosted on our CDN). Use as-is or re-upload to your storage. |
| data.articles[].alt_text | string | Alt text for the feature image |
| data.articles[].tags | string[] | SEO tags / keywords |
| data.articles[].author | string | Author display name |
| data.articles[].status | string | "Published" or "Draft" — based on the publishing preference set on your project |
If you return a published_url in the response body, Distribb will store it and link to it from your dashboard. Any non-2xx response triggers up to 3 retries with exponential backoff.
content_html through a Markdown parser (or content_markdown through an HTML renderer). Pick the field that matches your renderer.<img> tags. Either allow our S3 domain or re-upload image_url to your own storage before saving.Instead of writing curl commands, connect the Distribb MCP server to Claude or Cursor and call every endpoint as a native tool — no CLI flags, no shell scripts. The agent calls list_projects, create_article, publish_article directly — same workflow, zero boilerplate.
Clone the distribb-skill repo or download distribb_mcp_server.py directly.
Cursor: ~/.cursor/mcp.json · Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
Claude or Cursor will launch the server automatically. The tools appear immediately in the agent's tool list.
Here is how an AI agent typically uses the API to create and publish an SEO article:
All error responses follow the same format:
| Status Code | Meaning |
|---|---|
| 400 | Bad request — missing or invalid parameters |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — resource does not belong to your account |
| 404 | Not found — resource does not exist |
| 429 | Rate limited — too many requests, wait and retry |
| 500 | Server error — something went wrong on our end |