# Semji ## Docs - [Semji API & MCP Documentation](https://developers.semji.com/index.md): Integrate Semji's AI-powered content marketing platform via the REST API or the MCP server — connect your tools, workflows, and AI assistants like Claude or ChatGPT. - [Quickstart](https://developers.semji.com/quickstart.md): Create your API key, retrieve your workspace, import a page, and optimize it with Atomic Content — all from the command line. - [Semji API guides overview](https://developers.semji.com/guides/overview.md): End-to-end recipes that chain multiple Semji API endpoints to solve concrete business use cases — sync drafts to your CMS, generate SEO and GEO recommendations, and more. - [Sync drafts to your CMS](https://developers.semji.com/guides/sync-drafts-to-cms.md): Poll Semji for drafts that are ready to be published, push them to your CMS, then mark them as published in Semji once they go live. Includes a push-based webhook alternative. - [Get SEO & GEO recommendations from a keyword](https://developers.semji.com/guides/seo-geo-recommendations.md): Create a draft from a focus keyword, run a keyword analysis, and pull back the typed SEO (Google Search) and GEO (Google AI Overview) recommendations. - [Connect your CMS to Semji](https://developers.semji.com/integrations/overview.md): Overview of Semji's CMS integrations — WordPress, Drupal, Magento, Contentful, Strapi, custom MCP servers, and the Send to CMS webhook — with step-by-step connection guides. - [Connect WordPress to Semji](https://developers.semji.com/integrations/wordpress.md): Step-by-step guide to connect your WordPress site to Semji with an application password, so AI agents can list, read, create, and update your content — posts, pages, and custom post types, with taxonomies, ACF fields, and SEO titles and meta descriptions via Yoast SEO, Rank Math, or SEOPress. - [Connect Drupal to Semji](https://developers.semji.com/integrations/drupal.md): Step-by-step guide to connect your Drupal site to Semji through JSON:API and Basic Auth, so AI agents can read, create, and update content. - [Connect Magento to Semji](https://developers.semji.com/integrations/magento.md): Step-by-step guide to connect your Magento 2 store to Semji through the REST Admin API and an Integration access token, so AI agents can read and update CMS pages, blocks, product and category content. - [Connect Contentful to Semji](https://developers.semji.com/integrations/contentful.md): Connect Contentful to Semji in one click through Contentful's hosted MCP server — sign in, approve access, done. - [Connect Strapi to Semji](https://developers.semji.com/integrations/strapi.md): Connect your Strapi instance to Semji via its MCP endpoint and an admin token, so AI agents can read and update your content. - [Connect a custom MCP server to Semji](https://developers.semji.com/integrations/custom-mcp.md): Bring your own MCP server — a custom CMS bridge or any internal tool — and let Semji's AI agents use its tools via OAuth or an API key. - [Send to CMS webhook](https://developers.semji.com/integrations/send-to-cms-webhook.md): The content_staged webhook contract: how Semji pushes a draft to your CMS endpoint before publication, and how your endpoint responds — synchronously or later through the tokenised callback. - [Content published webhook](https://developers.semji.com/integrations/content-published-webhook.md): The content_published webhook: Semji notifies your endpoint when an editor marks a content as published, so you can distribute it to your CMS or automation tools — with ready-made Make and N8n templates. - [Semji API overview](https://developers.semji.com/api-reference/overview.md): Introduction to the Semji REST API v1 — base URL, authentication, response format, rate limits, and the full list of available resources. - [Authentication](https://developers.semji.com/api-reference/authentication.md): Generate a Semji API key from Settings, send it as a Bearer token on every request, and handle 401 Unauthorized and 403 Forbidden errors in your integration. - [Rate Limits](https://developers.semji.com/api-reference/rate-limits.md): Understand Semji API rate limits, how to read rate limit response headers, handle 429 errors, and implement exponential backoff in your integration. - [Errors](https://developers.semji.com/api-reference/errors.md): Full reference for Semji API error codes, HTTP status codes, error response format, and handling strategies including retries and validation errors. - [Get authenticated user](https://developers.semji.com/api-reference/me/get-authenticated-user.md): Returns the user authenticated by the API key, with the linked organization embedded. - [List organization members](https://developers.semji.com/api-reference/users/list-organization-members.md): Returns all members of the organization linked to the API key, with their role. - [List workspaces](https://developers.semji.com/api-reference/workspaces/list-workspaces.md): Returns all workspaces in the organization accessible to the authenticated user. - [Get workspace details](https://developers.semji.com/api-reference/workspaces/get-workspace-details.md): Returns details of a specific workspace. - [List workspace members](https://developers.semji.com/api-reference/workspaces/list-workspace-members.md): Returns all members of a workspace with their role. - [List content statuses](https://developers.semji.com/api-reference/workspaces/list-content-statuses.md): Returns all content statuses for a workspace, ordered by position. Includes system statuses ("to do", "published") which are read-only. - [List folders](https://developers.semji.com/api-reference/folders/list-folders.md): Returns all folders in a workspace as a flat list. Use parentFolderId to reconstruct the tree. - [Create a folder](https://developers.semji.com/api-reference/folders/create-a-folder.md): Creates a new folder in the workspace. - [Update a folder](https://developers.semji.com/api-reference/folders/update-a-folder.md): Updates a folder name or parent. Returns the updated folder. - [Delete a folder](https://developers.semji.com/api-reference/folders/delete-a-folder.md): Deletes a folder. Contents inside the folder are not deleted — they become unorganized. - [List pages in a workspace](https://developers.semji.com/api-reference/pages/list-pages-in-a-workspace.md): Returns a paginated list of tracked pages in the workspace. Supports text search, category filtering, and sorting. - [Import a page](https://developers.semji.com/api-reference/pages/import-a-page.md): Imports an existing URL into the workspace (crawls it to extract title, meta description, etc.). Use this for pages you already have online and want to track. Optionally sets a URL category and focus keyword. To create a new editorial draft that does not yet have a URL, use POST /v1/workspaces/{work… - [Get page details](https://developers.semji.com/api-reference/pages/get-page-details.md): Returns full details of a page, including its focus keyword. - [Update a page](https://developers.semji.com/api-reference/pages/update-a-page.md): Updates a page focus keyword and/or URL category. The URL category cannot currently be unset once assigned. - [Delete a page](https://developers.semji.com/api-reference/pages/delete-a-page.md): Deletes a page and its associated contents. - [Crawl a page](https://developers.semji.com/api-reference/pages/crawl-a-page.md): Triggers an asynchronous crawl to refresh the page metadata (title, meta description, etc.). Poll GET /v1/pages/:id to see updated data. - [List contents in a workspace](https://developers.semji.com/api-reference/contents/list-contents-in-a-workspace.md): Returns a paginated list of contents. Supports filtering by status, assignee, folder, due date, and text search. - [Create a content](https://developers.semji.com/api-reference/contents/create-a-content.md): Creates a new content draft in the workspace. Pass pageId to attach the draft to an existing imported page, or omit it to create a blank draft (editorial brief with no URL) — in that case an empty page is auto-created and returned in the response. - [List contents for a page](https://developers.semji.com/api-reference/contents/list-contents-for-a-page.md): Returns all content versions associated with a specific page. - [Get content details](https://developers.semji.com/api-reference/contents/get-content-details.md): Returns full details of a content, including HTML body, version, and embedded relations. - [Update a content](https://developers.semji.com/api-reference/contents/update-a-content.md): Updates a content. The version field is required for optimistic locking. - [Delete a content](https://developers.semji.com/api-reference/contents/delete-a-content.md): Permanently deletes a content. This action cannot be undone. - [Mark a content as published](https://developers.semji.com/api-reference/contents/mark-a-content-as-published.md): Marks the content as published in Semji. Call this endpoint after the content has been published on your CMS. If no URL is provided, the associated page URL is used. If no publication date is provided, the current server time is used. - [Generate Atomic Content](https://developers.semji.com/api-reference/contents/generate-atomic-content.md): Launches an AI content generation on the draft. The keyword must have a completed SEO analysis. Poll GET /v1/contents/:id/generation to track progress. - [Get generation status](https://developers.semji.com/api-reference/content-generations/get-generation-status.md): Returns the current status of the Atomic Content generation attached to a content. Poll this endpoint to track progress. - [Confirm a generation](https://developers.semji.com/api-reference/content-generations/confirm-a-generation.md): Confirms and accepts the generated content. The draft is updated with the generation result. Requires status = "review". - [Cancel a generation](https://developers.semji.com/api-reference/content-generations/cancel-a-generation.md): Cancels a generation that is queued, pending, or awaiting review. - [List credit usages](https://developers.semji.com/api-reference/credit-usages/list-credit-usages.md): Returns the credit consumption history for the organization, paginated. Each entry details a credit consumed with its context. - [List keywords for a page](https://developers.semji.com/api-reference/keywords/list-keywords-for-a-page.md): Returns all keywords associated with a page. Not paginated (pages rarely have more than 50 keywords). - [Add a keyword to a page](https://developers.semji.com/api-reference/keywords/add-a-keyword-to-a-page.md): Associates a keyword with a page. Creates the keyword if it does not exist. - [Get keyword details](https://developers.semji.com/api-reference/keywords/get-keyword-details.md): Returns full details of a keyword, including analysis status and focus prompt. - [Update a keyword](https://developers.semji.com/api-reference/keywords/update-a-keyword.md): Updates a keyword (e.g. set or remove the focus GEO prompt). - [Launch keyword analysis](https://developers.semji.com/api-reference/keywords/launch-keyword-analysis.md): Triggers an asynchronous analysis on a keyword (Google Search organic SERP scrape, recommendations computation). Poll GET /v1/keywords/:id to track progress via analysisStatus. - [Generate keyword analysis report](https://developers.semji.com/api-reference/keywords/generate-keyword-analysis-report.md): Returns an analysis report for the keyword, scoring the provided content against each surface. The report contains the data computed by the keyword analysis — an overall score, typed recommendations (each with its own sub-score and supporting data), and surface-specific context: SERP competitors for… - [List prompts for a keyword](https://developers.semji.com/api-reference/prompts/list-prompts-for-a-keyword.md): Returns GEO prompts associated with a keyword. - [Create a prompt](https://developers.semji.com/api-reference/prompts/create-a-prompt.md): Creates a GEO prompt for a keyword. - [Get prompt details](https://developers.semji.com/api-reference/prompts/get-prompt-details.md): Returns details of a prompt. Useful for polling analysisStatus after launching a GEO analysis. - [Launch prompt analysis](https://developers.semji.com/api-reference/prompts/launch-prompt-analysis.md): Triggers an asynchronous analysis on a prompt (ChatGPT). The parent keyword must have a completed keyword analysis. Poll GET /v1/prompts/:id to track progress. - [Generate prompt analysis report](https://developers.semji.com/api-reference/prompts/generate-prompt-analysis-report.md): Returns an analysis report for the prompt, scoring the provided content against ChatGPT. The report contains the data computed by the prompt analysis — an overall score, typed recommendations (each with its own sub-score and supporting data), the cited sources, the mentioned brands, and the markdown… - [List brand voices](https://developers.semji.com/api-reference/brand-voices/list-brand-voices.md): Returns all brand voices configured for a workspace. Use the brand voice ID in POST /v1/contents/:id/atomic settings. - [Get brand voice details](https://developers.semji.com/api-reference/brand-voices/get-brand-voice-details.md): Returns details of a brand voice. - [List knowledge documents](https://developers.semji.com/api-reference/knowledge-documents/list-knowledge-documents.md): Returns all knowledge documents in a workspace. Enable knowledge sources in POST /v1/contents/:id/atomic settings. - [Get knowledge document details](https://developers.semji.com/api-reference/knowledge-documents/get-knowledge-document-details.md): Returns details of a knowledge document. - [Semji MCP server](https://developers.semji.com/mcp/overview.md): Connect your AI assistant to Semji and drive your SEO and GEO content workflow in plain language. - [Connect to Semji](https://developers.semji.com/mcp/connecting.md): Add the Semji MCP server to Claude and any other MCP-compatible assistant. ## OpenAPI Specs - [openapi](https://developers.semji.com/api-reference/openapi.json)