# Introduction

The Didomi platform offers a standard [REST API](http://en.wikipedia.org/wiki/Representational_State_Transfer) that you can use to manage all aspects of the platform. Its base URL is: `https://api.didomi.io/v1/`.

Our API uses standard HTTP verbs (`GET`, `POST`, etc.) to retrieve or modify resources and standard HTTP error codes (`4xx` and `5xx`) to communicate errors when they happen with detailed error information in the body. All standard HTTP clients are able to talk to our API without modifications.\
The API always responds in JSON, including for errors. The only exception are routes that also support different formats like reports. In that case, JSON is the default format unless otherwise specified and additional response formats can be specified in the request.

This section will guide you through setting up an API client and using the main resources exposed by our API. You will also want to consult our [complete API specification](https://api.didomi.io/docs/) (<https://api.didomi.io/docs/>) as a reference when using our API.

{% hint style="warning" %}
We guarantee backwards compatibility with our APIs and other interfaces by not removing properties or otherwise altering existing functionality. We may add new properties over time. If you are validating our response against your own internal schemas, it is a recommended practice to ignore unknown fields or skip them from your deserialization logic to not throw errors. Breaking changes or future API versions will be communicated in advance.
{% endhint %}

You will need an API key and secret to call our API. You can create private API keys directly in the [Didomi Console](https://console.didomi.io/).

{% hint style="info" %}
You can use most of our API as part of our CMP or Preference Center products.\
The Consents API and the Integrations are priced separately and are not included in your CMP or Preference Center contracts.

Please reach out to our Support team (<support@didomi.io>) to get more information.
{% endhint %}

**Topics**

* [Introduction](https://developers.didomi.io/api-and-platform/introduction): Setup your environment for using the Didomi API and learn about standard topics like authentication, errors, pagination, filters, and quotas.
  * [Authentication](https://developers.didomi.io/api-and-platform/introduction/authentication)
  * [Errors](https://developers.didomi.io/api-and-platform/introduction/errors)
  * [Pagination](https://developers.didomi.io/api-and-platform/introduction/pagination)
  * [Filters](https://developers.didomi.io/api-and-platform/introduction/filters)
  * [Caching](https://developers.didomi.io/api-and-platform/introduction/caching)
  * [Rate limiting](https://developers.didomi.io/api-and-platform/introduction/rate-limiting)
  * [Quotas](https://developers.didomi.io/api-and-platform/introduction/quotas)
  * [Translations](https://developers.didomi.io/api-and-platform/introduction/translations)
* [Data Manager](https://developers.didomi.io/api-and-platform/data-manager): Manage regulations, purposes, preferences and Configuration Tree
* [Widgets](https://developers.didomi.io/api-and-platform/widgets): Create, configure and publish widgets to collect consent, preferences and privacy requests
  * [Consent notices](https://developers.didomi.io/api-and-platform/widgets/consent-notices): Create and publish consent notices
  * [Privacy widgets](https://developers.didomi.io/api-and-platform/widgets/privacy-widgets): Create and publish forms to collect preferences or privacy requests
* [Monitoring and reporting](https://developers.didomi.io/api-and-platform/monitoring-and-reporting): Schedule, execute and download compliance reports
* [Consents and Preferences](https://developers.didomi.io/api-and-platform/consents): Manage user consent information
* [Privacy Requests](https://developers.didomi.io/api-and-platform/privacy-requests): Manage user data requests
* [Domains](https://developers.didomi.io/api-and-platform/domains): Manage delegated domain
