---
title: "The programmable half of the CMS"
description: "What the API is, what it is for, and where the base URL points."
canonical: "https://writavo.com/docs"
last-updated: "2026-08-07"
---

# The programmable half of the CMS

The CMS control plane for a Writavo Site.

## What this API is for

Create and edit articles, organise them with categories, tags and authors, upload media, publish and schedule, and ask the AI engine to do work. It is the same surface the dashboard is built on, so a change made here and the same change made in the dashboard look identical afterwards, including to your webhooks.

> Creating API keys, setting up webhooks, entering a card and the AI agent switches stay with people in the dashboard.

## Base URL

base url:

```
https://api.writavo.com/v1
```

One hostname for every customer. The Site is resolved from your key, so there is no Site parameter.

## How it works

- **Your key decides the Site.** An object from another Site returns 404, never 403. See [Authentication](/docs/authentication).
- **Draft by default.** `POST /articles` always creates a private draft; publishing is a separate request, so nothing goes public by accident. See [Content lifecycle](/docs/content-lifecycle).
- **Most of the API is free.** Only AI work and paid SEO scans spend credits (`x-spends-credits`), and a few operations spend money (`x-spends-money`). Each failure has its own code. See [Errors](/docs/errors).
- **Additive versioning.** `/v1` only gains things; a breaking change would ship as `/v2`. See [Versioning](/docs/versioning).
- **AI agents get extra controls:** an off switch, approvals for sensitive actions, and a call log. See [AI agents](/docs/agents).

## Where to start

## The specification

The whole reference is generated from one file at a stable URL, so you can generate your own client.

- OpenAPI 3.1, so most generators consume it directly.
- Every operation states its scope, plan feature, rate limit class and whether a publishable key may reach it.
- These docs are built from it; if a page and the spec disagreed, the build would fail.
