Essel API

The Essel consumer API lets your application read released blog content from one of your workspaces. It is intentionally narrow — your API consumers never see drafts, in-flight workflow state, or workspace internals — so you can embed the same payloads on a marketing site, a mobile app, or a partner integration without leaking editorial-only data.

Base URL

https://api.essel.ai

For local development the same routes are mounted on http://localhost:4000.

What you can do

  • List released blogs for a workspace, with search and slug lookup.
  • Fetch a single released blog, including the full markdown payload, frontmatter, structured outline, and uploaded media assets.

Internal workflow state — drafts, queued jobs, review activity, retries — is never exposed through this API. Released content is the only surface consumers see.

At a glance

EndpointPurpose
GET /api/consumer/blogsList released blogs in your workspace.
GET /api/consumer/blogs/{blogId}Fetch one released blog with full content.

Quick start

  1. Mint a workspace API key from Workspace settings → API keys. The raw key is shown once — copy it immediately and store it in your secret manager.
  2. Send it on every request via x-api-key or Authorization: Bearer.
  3. Hit /api/consumer/blogs to verify connectivity.
curl -sS https://api.essel.ai/api/consumer/blogs 
  -H "x-api-key: $CONTENT_PILOT_API_KEY"
{
  "items": [
    {
      "id": "ck1234567890",
      "releasedAt": "2026-05-08T09:14:00.000Z",
      "version": {
        "id": "cv0987654321",
        "versionNumber": 1,
        "renderedTitle": "How ATS optimisation actually works in 2026",
        "renderedSlug": "ats-optimisation-2026",
        "metaTitle": "ATS optimisation in 2026",
        "metaDescription": "What today's ATS systems really score, and the practical levers that move the needle.",
        "reviewSummary": "Quality recommendation: ship.",
        "updatedAt": "2026-05-08T09:13:42.000Z",
        "assets": []
      }
    }
  ]
}

Conventions

  • All endpoints return JSON with UTF-8 encoding.
  • Timestamps are ISO 8601 strings in UTC.
  • IDs are opaque strings — do not parse them.
  • The API is idempotent: identical reads return identical payloads as long as no new release has happened in between.

Continue with Authentication to get set up, or jump straight to List released blogs and Get a released blog.