Skip to main content
Publishing an article does three things: flips status to published, embeds the body into the vector index, and fires the article.published webhook. Unpublishing reverses the second and third.

The lifecycle

Four states, with predictable server-side effects on transition: The article row itself is never deleted by a status change. archived is a soft-deletion; use DELETE /articles/{id} for a hard delete.
published_at is auto-stamped by the server on the first transition into published and is sticky from then on — re-publishing after an unpublish does not move it, and it stays set even while the article is unpublished or archived. It’s null only before the article’s first publish.

Publishing on create

Set status: "published" on the initial POST. Indexing fires as soon as the row is written.
The response returns immediately with indexing_status: "pending". The pipeline runs out-of-band.

Publishing a draft

PATCH the article with status: "published". The same server-side effects fire as on a create-with-publish.

Unpublishing

PATCH with status: "unpublished" or status: "archived". Embeddings are removed asynchronously.
Embedding removal is enqueued, not synchronous. There is a short window after the response in which the article may still appear in search results.

Reading the index status

indexing_status is your signal that the article is retrievable. The five states: Poll the article detail endpoint after publishing if you need a hard signal:
For non-interactive flows, subscribe to the article.published webhook instead of polling. The webhook fires when indexing is kicked off, not when it completes — for a “ready to serve” signal, poll indexing_status after receiving the webhook.

Webhook signals

Four events frame the publish boundary and the indexing pipeline. Subscribe under Dashboard → Webhooks.
Use article.indexed as your “ready to serve” signal instead of polling indexing_status. The article.published webhook fires when indexing is kicked off, not when it completes.
Payload shape:
See Webhook events for delivery, signing, and retries.