Overview

    This document is a detailed reference to DatoCMS's Content Management API.

    The Content Management API (CMA) is used to manage the content of your DatoCMS projects. This includes creating, updating, deleting, and fetching content of your projects.

    Content Management vs Content Delivery API

    If you want to programmatically create or update your schema/content, this is the API to use, while if you need to deliver content to your public-facing web or mobile projects, it is highly recommended that you use the GraphQL Content Delivery API instead, as it is under CDN and heavily optimized for fast response times!

    Core resources

    The Content Management API features 40+ resources, for a total of 150+ endpoints. Check the following sections of this documentation for a complete reference. For each single resource you will find:

    • The resource object and its fields, attributes and relationships;

    • The allowed CRUD operations you can perform on the related endpoint with basic examples of the request/response format.

    Some names might be different from what you expect!

    Due to historical reasons and backward compatibility, the name of some specific resources in the Content Management API is different from what you'll find in the interface of the product.

    Specifically, Models are called Item Types, Records are called Items, and Assets are called Uploads.

    Base endpoint

    All API requests must be made over HTTPS to the following base endpoint:

    https://site-api.datocms.com

    Basic headers

    The API follows the JSON:API specification and provides an uniform and coherent way of working with every resource.

    To perform an HTTP request with a body, you need to pass an Accept: application/json header:

    curl \
    -H 'Accept: application/json' \
    -H 'X-Api-Version: 3' \
    https://site-api.datocms.com/site

    To perform an HTTP request with a body, you need to pass a Content-Type: application/vnd.api+json header:

    curl \
    -X PUT
    -H 'Accept: application/json' \
    -H 'X-Api-Version: 3' \
    -H 'Content-Type: application/vnd.api+json' \
    -d '{ ... }' \
    https://site-api.datocms.com/site

    The header Content-Type: application/json is also valid, but not suggested.

    Authentication

    To use the Content Management API, you will need to authenticate yourself with an API token. Read more about it in the Authentication section.

    Machine-readable API specification

    We expose a machine-readable JSON schema that describes what resources are available via the API, what their URLs are, how they are represented and what operations they support. This schema follows the JSON Schema format, combined with the draft Validation and Hypertext extensions.

    The latest version of the API schema will always be available at the following URL:

    https://site-api.datocms.com/docs/site-api-hyperschema.json