When you synchronize changes, you get a list of delta updates for each content item that has been changed or deleted since the last synchronization. A delta update is similar to a webhook notification, it provides metadata about the changed content item.When you receive updates from the Sync API, the items contain only system and elements properties, not the modular content.Synchronize recent changes in your content items by following these steps:
Initialize a content synchronization. When initializing, you can specify the content types, collections, and the language of the content items you want to sync.
Store the X-Continuation token from the initialization response. This token identifies your content synchronization and its parameters.
Store the X-Continuation token from the sync response.
Repeat step 3 until you get an empty sync response.
When there aren't any more changes to synchronize, you should wait a while before synchronizing again (step 3). The wait time depends on your use case. It can be five minutes, an hour, or a day.
Metadata specifying a content item in a specific language and the time of the item's last change.
Initializes synchronization of changes in content items based on the specified parameters. After the initialization, you'll get the X-Continuation token found in the HTTP headers. Use the token to synchronize changes in the content items matching the initialization criteria.If you don't specify any initialization parameters, content synchronization will be initialized for all content items in all languages in the specified environment.You can follow the rest of the steps on how to sync changes.
Content synchronization was initialized.
Retrieve a list of delta updates to recently changed content items. The types of items you get is determined by the X-Continuation token you use.You can follow the rest of the steps on how to sync changes.
Delta updates of content items that changed since the previous sync
Specifies the content types of the content items you want to sync. The content types are specified using their codenames. Check the available filtering operators you can use.If the content type codename is changed after the initialization, you need to initialize a new sync. For example, if you sync changes for items based on the type article and the type codename is later renamed to news_article, there won't be any content items based on the type article anymore. In such case, the API returns an empty response.
Specifies the collections of the content items you want to sync. The collections are specified using their codenames. Check the available filtering operators you can use.If you filter your sync to a specific collection, content items moved outside that collection won't appear in API response. For example, if you sync changes for items in the Default collection and a content item moves to an other collection, the content item is no longer in the Default collection and doesn't match the initial sync criteria.
Determines the language of content items you want to sync. Language is specified using its codename. If you omit language, the synchronization is initialized for content items in all languages.Sync API follows language fallbacks as configured in the Localization settings. This means the API might return changes in content items outside the specified language. For example, when you sync content items in Spanish and the Spanish language falls back to English, you can get changes for English content items if some of the content items aren't translated to Spanish yet.
Determines the language of the content items you want to sync. Language is specified using its codename. The API returns changes only for content items in the specified language. Language fallbacks are ignored.If you omit system.language, the synchronization is initialized for content items in all languages.
List of delta updates for content items that changed since the last content synchronization.When you initialize content synchronization, the items array is always empty.
Determines whether the content item was modified or deleted since the last synchronization.
ISO-8601 formatted date and time in UTC of the last change to the content item. The timestamp identifies when the change occurred in Delivery API.
List of delta updates for content items that changed since the last content synchronization.If there haven't been any changes, the items array is empty.
Determines whether the content item was modified or deleted since the last synchronization.
ISO-8601 formatted date and time in UTC of the last change to the content item. The timestamp identifies when the change occurred in Delivery API.
Synchronization | Kontent.ai Learn
The content item with metadata and individual elements.
The content item's system properties.
The content item's internal ID.
The content item's collection codename. For projects without collections enabled, the value is default.
The content item with metadata and individual elements.
The content item's system properties.
The content item's internal ID.
The content item's collection codename. For projects without collections enabled, the value is default.
The content item's display name.
The content item's codename. By default, generated from the item's display name.
The codename of the language that the content is in.For details on retrieving content in different languages, see Getting localized content.
The codename of the item's type.
A list of sitemap locations that the content item is in.
ISO-8601 formatted date and time of the last change to user-content of the content item.
The codename of the content item's current workflow. By default, generated from the workflow's display name.This property is not present for components.
The codename of the content item's current workflow step. By default, generated from the workflow step's display name.This property is not present for components.
The item's elements with values for the specific language. The order of the element objects might not match the content element order in the UI.
Request samples
Example responses
Request samples
Example responses
The content item's display name.
The content item's codename. By default, generated from the item's display name.
The codename of the language that the content is in.For details on retrieving content in different languages, see Getting localized content.
The codename of the item's type.
A list of sitemap locations that the content item is in.
ISO-8601 formatted date and time of the last change to user-content of the content item.
The codename of the content item's current workflow. By default, generated from the workflow's display name.This property is not present for components.
The codename of the content item's current workflow step. By default, generated from the workflow step's display name.This property is not present for components.
The item's elements with values for the specific language. The order of the element objects might not match the content element order in the UI.
Sync API sends only the last change typeFor example, when a content item has been changed and then deleted, you only get change_type: "deleted" in the Sync API response, not the previous changes.
change_type
string
timestamp
string · date-time
data
object
Show child attributes
The element's type.
The element's display name.
The assets inserted into the element. The asset objects are returned in the same order as shown in the UI.Some of the properties are specific to images only: width and height represent the image’s width and height dimensions, and the renditions object contains details about customized images.To display customized images on the website or an app, you first need to apply custom query parameters to the asset’s original URL.
The element's type.
The element's display name.
The assets inserted into the element. The asset objects are returned in the same order as shown in the UI.Some of the properties are specific to images only: width and height represent the image’s width and height dimensions, and the renditions object contains details about customized images.To display customized images on the website or an app, you first need to apply custom query parameters to the asset’s original URL.
Determines whether the content item was modified or deleted since the last synchronization.
ISO-8601 formatted date and time in UTC of the last change to the content item. The timestamp identifies when the change occurred in Delivery API.
The content item with metadata and individual elements.
Deprecation notice: Migrate to Sync API v2 before December 31, 2025Sync API v1 has been deprecated and will be shut down on December 31, 2025. After this date, all v1 endpoints will stop functioning.Migrate to Sync API v2 to avoid service disruptions. It offers improved reliability and expanded synchronization for languages, taxonomies, and content types.
Deprecation notice: Migrate to Sync API v2 before December 31, 2025Sync API v1 has been deprecated and will be shut down on December 31, 2025. After this date, all v1 endpoints will stop functioning.Migrate to Sync API v2 to avoid service disruptions. It offers improved reliability and expanded synchronization for languages, taxonomies, and content types.
Moving content items through workflow doesn't affect the last_modified value.
Moving content items through workflow doesn't affect the last_modified value.
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascriptimport { createDeliveryClient } from '@kontent-ai/delivery-sdk';const deliveryClient = createDeliveryClient({ environmentId: 'KONTENT_AI_ENVIRONMENT_ID',});const response = await deliveryClient.initializeSync().toPromise();// Store the X-Continuation token in a persistent storage for later useconst continuationToken = response.xContinuationToken;
TypeScript
C#
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascriptimport { createDeliveryClient } from '@kontent-ai/delivery-sdk';const deliveryClient = createDeliveryClient({ environmentId: 'KONTENT_AI_ENVIRONMENT_ID',});const response = await deliveryClient.syncChanges().toPromise();// Store the X-Continuation token in a persistent storage for later useconst continuationToken = response.xContinuationToken;for (const item of response.data.items) { if (item.changeType === 'changed') { // Process a changed item } else if (item.changeType === 'deleted') { // Process a deleted item }}// Synchronize the next batch of changesconst nextResponse = await deliveryClient .syncChanges() .withContinuationToken(continuationToken) .toPromise();