> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://api.docs.modulards.com/introduction/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. > Manage the websites of your Modular DS organization from your own code