# API reference

Every operation in the Writavo Content API, generated from the published OpenAPI 3.1
specification at https://writavo.com/openapi.json.

- **Base URL**: `https://api.writavo.com/v1`
- **Version**: 1.0.0
- **Operations**: 50

## Resources

| Resource | Operations | What it covers |
|---|---|---|
| [Meta](/docs/api/meta) | 4 | Connectivity, Site information, content types, limits and usage. |
| [Articles](/docs/api/articles) | 9 | The content spine. Create, edit, organise, publish and schedule. |
| [Categories](/docs/api/categories) | 5 | The closed taxonomy. Exactly one category per article. |
| [Tags](/docs/api/tags) | 5 | The cross cutting taxonomy. Many tags per article. |
| [Authors](/docs/api/authors) | 5 | The byline roster for a Site. |
| [Media](/docs/api/media) | 6 | The media library. Two step upload, then registration. |
| [Pipeline](/docs/api/pipeline) | 4 | The AI generation engine. The only billable surface in this API. |
| [API keys](/docs/api/api-keys) | 4 | Key management. Specified here, implemented in API-2. |
| [Webhooks](/docs/api/webhooks) | 8 | Outbound event delivery. Register an HTTPS endpoint, subscribe it to events, and receive a signed POST whenever your content changes, from this API or from the dashboard. |

## Every operation

| Method | Path | Operation id | Summary |
|---|---|---|---|
| GET | `/ping` | `ping` | Verify a key |
| GET | `/site` | `getSite` | Read Site information |
| GET | `/content-types` | `listContentTypes` | List content types |
| GET | `/usage` | `getUsage` | Read plan limits, usage and balances |
| GET | `/articles` | `listArticles` | List articles |
| POST | `/articles` | `createArticle` | Create an article |
| GET | `/articles/{id}` | `getArticle` | Read one article |
| PATCH | `/articles/{id}` | `updateArticle` | Update an article |
| DELETE | `/articles/{id}` | `deleteArticle` | Delete an article |
| POST | `/articles/{id}/publish` | `publishArticle` | Publish an article |
| POST | `/articles/{id}/unpublish` | `unpublishArticle` | Unpublish an article |
| POST | `/articles/{id}/schedule` | `scheduleArticle` | Schedule an article |
| POST | `/articles/{id}/cancel-schedule` | `cancelArticleSchedule` | Cancel a scheduled publish |
| GET | `/categories` | `listCategories` | List categories |
| POST | `/categories` | `createCategory` | Create a category |
| GET | `/categories/{id}` | `getCategory` | Read one category |
| PATCH | `/categories/{id}` | `updateCategory` | Update a category |
| DELETE | `/categories/{id}` | `deleteCategory` | Delete a category |
| GET | `/tags` | `listTags` | List tags |
| POST | `/tags` | `createTag` | Create a tag |
| GET | `/tags/{id}` | `getTag` | Read one tag |
| PATCH | `/tags/{id}` | `updateTag` | Update a tag |
| DELETE | `/tags/{id}` | `deleteTag` | Delete a tag |
| GET | `/authors` | `listAuthors` | List authors |
| POST | `/authors` | `createAuthor` | Create an author |
| GET | `/authors/{id}` | `getAuthor` | Read one author |
| PATCH | `/authors/{id}` | `updateAuthor` | Update an author |
| DELETE | `/authors/{id}` | `deleteAuthor` | Delete an author |
| GET | `/media` | `listMedia` | List media assets |
| POST | `/media` | `registerMedia` | Register an uploaded file |
| POST | `/media/upload-url` | `createMediaUploadUrl` | Request an upload URL |
| GET | `/media/{id}` | `getMediaAsset` | Read one media asset |
| PATCH | `/media/{id}` | `updateMediaAsset` | Update a media asset |
| DELETE | `/media/{id}` | `deleteMediaAsset` | Delete a media asset |
| GET | `/pipeline/runs` | `listPipelineRuns` | List pipeline runs |
| POST | `/pipeline/runs` | `createPipelineRun` | Request a pipeline run |
| GET | `/pipeline/runs/{id}` | `getPipelineRun` | Read one pipeline run |
| GET | `/pipeline/queue` | `listPipelineQueue` | Read the content queue |
| GET | `/keys` | `listApiKeys` | List API keys |
| POST | `/keys` | `createApiKey` | Create an API key |
| POST | `/keys/{id}/rotate` | `rotateApiKey` | Rotate an API key |
| DELETE | `/keys/{id}` | `revokeApiKey` | Revoke an API key |
| GET | `/webhooks` | `listWebhooks` | List webhook endpoints |
| POST | `/webhooks` | `createWebhook` | Create a webhook endpoint |
| GET | `/webhooks/{id}` | `getWebhook` | Read one webhook endpoint |
| PATCH | `/webhooks/{id}` | `updateWebhook` | Update a webhook endpoint |
| DELETE | `/webhooks/{id}` | `deleteWebhook` | Delete a webhook endpoint |
| POST | `/webhooks/{id}/rotate-secret` | `rotateWebhookSecret` | Rotate the signing secret |
| GET | `/webhooks/{id}/deliveries` | `listWebhookDeliveries` | List deliveries for an endpoint |
| POST | `/webhooks/{id}/deliveries/{delivery_id}/redeliver` | `redeliverWebhookDelivery` | Send one delivery again |
