Developer Documentation

Build with Ekamoira

Publish blog posts programmatically using our REST API or let AI assistants manage your content with MCP (Model Context Protocol) integration.

Overview

Ekamoira provides two ways to programmatically manage your blog content:

Agentic Publishing

With MCP, you can tell ChatGPT "Publish a blog post about our new product launch" and it will create, format, and publish the content automatically.

API Keys

API keys authenticate your requests and scope them to your company account. Each key has specific permissions (scopes) that control what it can access.

Creating an API Key

  1. 1

    Go to AccountAPI Keys in your dashboard

  2. 2

    Click Create API Key

  3. 3

    Give it a name (e.g., "ChatGPT Integration") and select scopes

  4. 4

    Copy the key immediately - it won't be shown again!

Available Scopes

ScopeDescription
blog:readRead blog posts and list content
blog:writeCreate, update, and delete blog posts

Security Note

API keys are hashed and stored securely. We can't retrieve your key after creation. If lost, revoke the old key and create a new one.

REST API

The REST API uses standard HTTP methods with JSON payloads. Authenticate by including your API key in the request headers.

Base URL

https://app.ekamoira.com/api/v1

Authentication

Include your API key in one of these headers:

# Option 1: Authorization header
Authorization: Bearer ek_live_abc123...

# Option 2: X-API-Key header
X-API-Key: ek_live_abc123...

Endpoints

GET/blog/posts

List all blog posts with optional filters.

Query Parameters:

  • status - Filter by status: draft, published, archived
  • limit - Max results (default: 20, max: 100)
POST/blog/posts

Create a new blog post. Requires blog:write scope.

{
  "title": "Getting Started with AI SEO",
  "content": "# Introduction\n\nMarkdown content here...",
  "slug": "getting-started-ai-seo",
  "excerpt": "A comprehensive guide to AI-powered SEO",
  "meta_title": "AI SEO Guide 2025 | Ekamoira",
  "meta_description": "Learn how to optimize for AI Overviews...",
  "status": "published"
}
GET/blog/posts/[slug]

Get a single blog post by its URL slug.

PATCH/blog/posts/[slug]

Update an existing blog post. Only include fields you want to change.

DELETE/blog/posts/[slug]

Permanently delete a blog post.

MCP Server

The Model Context Protocol (MCP) allows AI assistants to interact with external tools. Our MCP server exposes blog management capabilities that ChatGPT, Claude, and other MCP-compatible assistants can use.

MCP Endpoint

https://app.ekamoira.com/api/mcp

Available Tools

publish_blog_post

Create and publish a new blog post with title, content, and metadata

list_blog_posts

List all posts with optional status filter and pagination

get_blog_post

Retrieve a single post by its URL slug

update_blog_post

Modify an existing post (title, content, status, etc.)

delete_blog_post

Permanently remove a blog post

Stateless Design

Our MCP server is stateless - perfect for serverless environments. Each request is authenticated independently via your API key.

ChatGPT Integration

Connect Ekamoira to ChatGPT using the Developer Mode MCP connector.

Connect ChatGPT
0:00 / 0:00

Connect ChatGPT

Access your content via ChatGPT MCP

Setup Steps

  1. 1

    Enable Developer Mode

    Go to ChatGPT Settings → General → scroll to Developer mode section and enable it.

  2. 2

    Add MCP Server

    Click "Add MCP Server" and fill in the details:

    Labelekamoira-blog
    URLhttps://app.ekamoira.com/api/mcp
    HeadersAuthorization: Bearer ek_live_...
  3. 3

    Start Publishing

    Ask ChatGPT to "Publish a blog post about..." and it will use your connected Ekamoira account.

Example Prompts

"Publish a blog post titled "10 Ways to Improve Your AI Visibility""
"List all my published blog posts"
"Update my "getting-started" post to change the status to draft"
"What blog posts do I have about SEO?"

Claude Integration

Connect to Claude Desktop or Claude Code CLI using MCP with HTTP transport.

Connect Claude
0:00 / 0:00

Connect Claude

Use Ekamoira with Claude.ai or Cursor

Claude Desktop

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "ekamoira-blog": {
      "transport": "http",
      "url": "https://app.ekamoira.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ek_live_your_key_here"
      }
    }
  }
}

Claude Code CLI

Add the MCP server using the CLI:

claude mcp add \
  --transport http \
  --header "Authorization: Bearer ek_live_your_key_here" \
  ekamoira-blog \
  https://app.ekamoira.com/api/mcp

Examples

Next.js Integration
0:00 / 0:00

Next.js Integration

Fetch content with our REST API

cURL: Create a Blog Post

curl -X POST https://app.ekamoira.com/api/v1/blog/posts \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ek_live_abc123..." \
  -d '{
    "title": "My First API Post",
    "content": "# Hello World\n\nThis post was created via the API!",
    "status": "published"
  }'

JavaScript/TypeScript

const response = await fetch('https://app.ekamoira.com/api/v1/blog/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ek_live_abc123...',
  },
  body: JSON.stringify({
    title: 'My API Post',
    content: '# Hello World\n\nCreated via API!',
    status: 'published',
  }),
});

const post = await response.json();
console.log('Created post:', post.slug);

Python

import requests

response = requests.post(
    'https://app.ekamoira.com/api/v1/blog/posts',
    headers={
        'Authorization': 'Bearer ek_live_abc123...',
    },
    json={
        'title': 'My Python Post',
        'content': '# Hello from Python\n\nCreated via API!',
        'status': 'published',
    }
)

post = response.json()
print(f"Created post: {post['slug']}")

Ready to Get Started?

Create your API key and start publishing programmatically in minutes.