> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://api.docs.modulards.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api.docs.modulards.com/_mcp/server.

# Introduction

The Modular DS Public API gives your code the same reach you have in the dashboard: websites, teams and tags, their connection to WordPress, the Updater, backups, uptime, malware scans, broken links, vulnerabilities, tasks, clients, contacts and notification configurations.

It is a [JSON:API 1.1](https://jsonapi.org/format/1.1/) API: predictable resource URLs, standard HTTP methods and status codes, and one document format for every response, errors included.

> **See it working first**
>
> The [example kit](/example-kit) is an open-source app built on this API. Try it live with your own token, or read how each of its screens calls the API.

## Base URL

```text
https://api.modulards.com/api/public/v1
```

Every request needs a personal access token: see [Authentication](/authentication).

```bash
curl https://api.modulards.com/api/public/v1/sites \
  -H "Authorization: Bearer $MODULAR_DS_TOKEN"
```

## Conventions

* Every response is a JSON:API document with `Content-Type: application/vnd.api+json`. The server sets the `Accept` header of every request to `application/vnd.api+json` itself, so you can send it or leave it out.
* Resource `id`s are strings, and resource `type`s are kebab-case plurals such as `sites`, `site-backups` or `site-actions`.
* Timestamps are ISO 8601 in UTC, for example `2026-01-14T09:30:00.000000Z`.
* Your token acts in one organization, with your role in it: see [Organizations](/organizations).

## Before you build

| Topic                                                                     | What it covers                                                                              |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| [Authentication](/authentication)                                         | Personal access tokens, read-only and read and write tokens, how credentials are handed out |
| [Organizations](/organizations)                                           | The organization a token acts in, and the Public API switch and request quota               |
| [Errors](/errors)                                                         | The error document and every status code the API answers                                    |
| [Pagination](/pagination)                                                 | `page[number]`, `page[size]` and walking a whole listing                                    |
| [Filtering and sorting](/filtering-and-sorting)                           | `filter[...]` and `sort`, and which mistakes answer 400 or 422                              |
| [Includes and sparse fieldsets](/includes-and-sparse-fieldsets)           | Related resources with `include`, chosen attributes with `fields`                           |
| [Writes and asynchronous operations](/writes-and-asynchronous-operations) | Create, update and delete, and the operations that finish later                             |
| [Rate limits](/rate-limits)                                               | Requests per minute and what a `429` means                                                  |
| [Versioning](/versioning)                                                 | What `v1` promises                                                                          |

The API reference follows, one section per product area. [OAuth for MCP clients](/modular-ds-public-api/oauth) closes it: it documents how MCP clients such as Claude discover and register with Modular DS, and is not needed to call this API with a token.