Start free. Scale as your blog grows.Get started

Developer documentation

Authentication

Every request to the ContioReach Content API requires an API key.

ContioReach supports two authentication methods.

X API Key header

Recommended for new integrations:

Header
X-API-Key: YOUR_API_KEY

JavaScript

fetch
const response = await fetch(
  process.env.CMS_API_URL + "/v1/blogs",
  {
    headers: {
      "X-API-Key": process.env.CMS_API_KEY
    }
  }
);

cURL

curl
curl -X GET "https://cms-api.contioreach.com/v1/blogs" \
  -H "X-API-Key: your_api_key_here"

Authorization header

You can also pass your API key as a Bearer token:

Header
Authorization: Bearer YOUR_API_KEY

Example:

fetch
const response = await fetch(
  process.env.CMS_API_URL + "/v1/blogs",
  {
    headers: {
      Authorization:
        `Bearer ${process.env.CMS_API_KEY}`
    }
  }
);

For consistency, we recommend using X-API-Key for new integrations.

Authentication failure

Invalid or missing credentials return:

Status
401 Unauthorized

A key that is wrong or inactive:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid or inactive API key"
  }
}

No key at all:

JSON
{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "API key is required"
  }
}

If you receive a 401 response, check:

  • The API key is present
  • The API key is correct
  • The authentication header is correct
  • The application is using the expected workspace API key

Usage limit

Each plan includes a monthly number of API calls. Once they are used up, every request returns 429 until the allowance resets — at your billing date on paid plans, or on the 1st of the month on Free.

Status
429 Too Many Requests
JSON
{
  "success": false,
  "error": {
    "code": "USAGE_LIMIT_EXCEEDED",
    "message": "Monthly API call limit reached. Upgrade your plan or wait for the limit to reset.",
    "limit": 50000,
    "used": 50000,
    "resetsAt": "2026-10-01T00:00:00.000Z"
  }
}

The workspace owner is emailed at 70%, 80%, 90% and 100% of the allowance. Refused requests do not count against it.