Skip to main content
The REST API lets your own code read a project’s articles, mark them published, and track external URLs for AI citation attribution. Webhooks tell your code when an article is ready for review or has been published. Set it up in Integrations → REST API. Each API key belongs to one project. To work across all your projects, or from an AI assistant, use the MCP server. The two kinds of key aren’t interchangeable.

Create an API key

  1. Go to Integrations → REST API.
  2. Click Create API Key.
  3. Copy the key shown under Your API Key. It won’t be shown again.
Keys start with cf_. A project has one key at a time. Regenerate (the refresh icon) replaces it and the old key stops working immediately. Remove (the trash icon) revokes it. Viewers can’t manage keys or webhooks. Keep the key in a secret store, out of version control and client-side code.

Authentication

Send the key in either header:
An ?api_key=YOUR_API_KEY query parameter also works, but prefer a header.

Base URL

Rate limit

Each API key allows 100 requests per minute. Over the limit, requests fail with 429 Too Many Requests and {"error": "Rate limit exceeded."}. Wait a minute before retrying.

Endpoints

List articles

Lists the project’s articles in one status, newest first.
Response:
content is HTML. metadata is free-form, so don’t rely on its shape.

Get one article

Fetches one article by ID or slug, in any status.
The response is a data object with the same fields as the list. It returns 404 if no article in the project matches.

Mark an article published

This marks the article published in ChatFeatured (and on a live Blog CMS). It doesn’t send it to a connected CMS such as WordPress or Webflow. Put the article live on your site first, then call this with the live URL.
Only articles in review or approved can be published. Any other status returns 400, including one that’s already published. Optional JSON body:
Response:
Publishing also sends the article.published webhook if you’ve turned it on.

Track external content

Tracks a URL you published somewhere else, a LinkedIn post for example, so AI citations of it count toward your project. Tracked URLs appear in the Content impact widget on the dashboard.
Response (201):
Returns 409 if the URL is already tracked or linked to an article.

List tracked content

Lists the project’s tracked URLs, most recently added first. Takes limit (default 20, maximum 100) and offset.
The response is a data array with the same fields as above, plus the pagination object.

Webhooks

ChatFeatured sends a POST to your URL when an article is ready for review or has been published.

Set up a webhook

Create an API key first; the Webhooks card appears after.
  1. Go to Integrations → REST API.
  2. In Webhooks, enter your Webhook URL.
  3. Optionally enter a Signing Secret (optional). ChatFeatured uses it to sign each request.
  4. Under Events, turn on Article ready for review, Article published, or both.
  5. Click Save Webhook Settings.
Once a URL is saved, Send Test sends a sample article.published payload with placeholder content.

When each event fires

article.review fires when ChatFeatured finishes writing an article and it moves to review. article.published fires every time an article moves to published, however it got there: a CMS or Blog CMS publish from the dashboard or MCP, marking it published by hand, the REST API’s publish endpoint, or a scheduled publish reaching its time.

Payload

Both events send the same shape, with the full article. content is HTML.

Delivery

Each event is sent once. Your endpoint has 10 seconds to answer with a 2xx; otherwise the event is dropped, not retried. Answer quickly and do the work in the background.

Verify the signature

With a signing secret, each request carries an X-Webhook-Signature header: the hex-encoded HMAC-SHA256 of the raw request body, keyed with your secret. Compute it over the raw bytes, before JSON parsing.

Errors

Errors return JSON with an error field:

Example: publish on your own site

Publish approved articles to your own site, then record each one in ChatFeatured so the live URL is tracked for citations.

Troubleshooting

Check the event is on and you clicked Save Webhook Settings, and that the URL is public and answers with a 2xx within 10 seconds. Send Test shows the status code your endpoint returned.