Product Updates

DatoCMS changelog for new features and general improvements
Content Management API
Site search now supports fuzzy search
September 6th, 2022

We just introduced a new parameter that can be added to the filter parameter of site search to enable a fuzzy search. When the parameter fuzzy filter is present, our search engine will find strings that approximately match the query provided.

Here is an example of how to use the feature:

const searchResults = await client.searchResults.list({
page: {
offset: 200,
limit: 20
filter: {
fuzzy: 'true',
query: 'florance',
build_trigger_id: '44',
locale: 'en'
searchResults.forEach((searchResult) => {

In this example, strings like florence will be matched, even if the query is florance.

Please refer to the site search page in the Content Management API documentation for a complete example.

Content Delivery API
Slightly new behaviour for sortable and tree models
July 20th, 2022

We subtly changed the way of working for sortable and tree models. Your content may be affected only if the draft/published system is enabled for some of your models.

Up until now, when a model was using the draft/published system, the user was forced to republish the records after updating the record position or rearranging the tree.

As of today, the changes to records' position of a model sortable (i.e. its position in the list) or tree (i.e. its position in the tree) are immediately reflected on the GraphQL published endpoints: you don't need anymore to publish the record again.

This change only applies to models with draft/published system enabled.

Mux integration is getting cheaper!
July 18th, 2022

Our integration with Mux is getting used more and more, so we can finally offer a better price for the streaming and encoding addons.

Here's the changes that we have already applied:

  • extra video encoding now comes at €9/mo every 180 mins of extra uploaded footage, instead of €19 for 300 mins

  • all the plans get at least 30 minutes of included video encoding

  • extra video streaming now comes at €19/mo every 300 hrs of extra video streaming time, instead of €29 for 250hrs

All the new addon prices are automatically applied on the existing plans, no need to do anything. Also the new price is going to be applied to all the extras made in July.

The pricing changes apply only on the per-account pricing plans. If you are still on a legacy plan and if you want to get the new pricing get in touch over at so that we can help you migrating.

NewContent Management APIContent Delivery API
New validation on asset fields: image transformable by Imgix
June 16th, 2022

We just added a new type of validation you can enforce on your asset fields (both single/multiple).

It's called "Image transformable by Imgix", and you can use it every time you want to make sure that the asset uploaded is in a format that Imgix can properly understand and apply transformation parameters to — ie. resize/crop/etc.

As of today, the main difference with the regular "Image" validation is that SVG files are not allowed as a format, as Imgix does not apply transformations parameters on them, but the general idea is that as Imgix supports new input formats, the validator will be updated to be always kept in sync.

UI Improvement
Ability to filter valid/invalid records
June 16th, 2022

A small addition in the records collection index: you can now filter records by their valid/invalid state!

Content Delivery API
Automatic use of base64 variant of Imgix params
June 16th, 2022

To ensure that complex composition of Imgix params resolve correctly even when nested several levels deep, the Content Delivery API now automatically generates Imgix URLs using the base64 variant when needed.

As an example, the following query:

author {
avatar {
url(imgixParams: {txt: "Hello world"})

Now returns an URL using the txt64 variant of the same transformation, as suggested by Imgix:
Content Delivery API
New headers to specify environment and preview mode
June 10th, 2022

To make some room for future improvements to the GraphQL CDA, we're changing the way you can request content coming from sandbox environments and access records in draft.

The following GraphQL endpoints are now deprecated:

In favor of these new headers:

  • X-Environment: to explicitly read data from a specific environment;

  • X-Include-Drafts: to access records at their latest version available, instead of the currently published one.

Please note that these deprecated GraphQL endpoints will continue to work indefinitely, but we strongly suggest to only use as the GraphQL endpoint from now on. The documentation has been updated accordingly to reflect this change.

Content Management API
X-Api-Version header is required on new DatoCMS projects
May 31st, 2022

Up until now, if you did not provide an X-Api-Version header in your request towards the Content Management API, legacy API version 1 was used.

To avoid ambiguity and possible unexpected problems, we have decided to change this behavior on projects created from this point on:

  • if your project was created before 31 May 2022, 13:00:00: not explicitly passing the X-Api-Version header will default to CMA API version 1 — nothing changes;

  • if your project is created after 31 May 2022, 13:00:00: not explicitly passing the X-Api-Version header will result in an error and a 422 Unprocessable Entity status code.

Content Management API
Minor changes to CMA site endpoint response
May 24th, 2022

Starting from May 30th, 2022 10:00 CEST:

The site resource object returned by the CMA will no longer expose the following properties:

  • attributes.frontend_url: this was deprecated years ago in favor of multiple build triggers per project;

  • relationships.menu_items: use the dedicated endpoint to retrieve the list of menu items;

  • relationships.users: use the dedicated endpoint to retrieve the list of collaborators;

  • relationships.sso_users: use the dedicated endpoint to retrieve the list of SSO users;

  • relationships.roles: use the dedicated endpoint to retrieve the list of roles;

  • relationships.build_triggers: use the dedicated endpoint to retrieve the list of build triggers.

Content Management APIContent Delivery API
Improved timezone management
May 17th, 2022

Today we're switching to a better management of timezones in datetime values stored in your projects!

Current behaviour

DateTime fields in your records do not carry timezone information.

If you use the Content Management API to create/update a record, and you provide an ISO8601 datetime complete with timezone to a DateTime field, the timezone part is completely ignored by the system. Just the date + time information will be stored in the field value, and the project timezone will be automatically applied to it when the API outputs the value.

const record = await client.items.update('324342', {
dateTimeField: '2000-01-01T09:30+10:00',

In this example, if the timezone setting in your project is Europe/Rome, the returned datetime won't be 2000-01-01T09:30+10:00, but 2000-01-01T09:30+01:00 .

Also, if you change the timezone setting in the future to be ie. Pacific Time, the same date will immediately become 2000-01-01T09:30-08:00, and every other date stored in your records' fields will change similarly. This basically has the effect of moving dates in time.

Improved behavior

DateTime fields in your records DO carry timezone information with them.

The only effect of the global timezone setting is to return via API every datetime value coherently converted in the same timezone.

Following the same example used above, if the timezone setting in your project is Europe/Rome, and you update a datetime field value passing 2000-01-01T09:30+11:00, the datetime returned by the API will be 1999-12-31T23:30+01:00 — that is, same point-in-time, but expressed in the project timezone.

If you change the timezone setting in the future to be ie. Pacific Time, the same date will immediately be presented via API in the new timezone (1999-12-31T14:30-08:00), but the point-in-time will be kept intact.

Who is affected by this change?

Every brand new DatoCMS project created starting from today will be under the improved behavior. If you want to switch your existing project to the new behavior, you can manually do so in the Environment Settings:

PS: Be aware that the change cannot be undone, so be sure to test the effects in a sandbox environment before applying the change to your primary environment!