• Cheat sheets
  • Documentation
  • API reference
  • Product updates
  • Sign in
Kontent.ai Learn
  • Try Kontent.ai
  • Plan
  • Set up
  • Model
  • Develop
  • Create
Management API v2
API Reference
    • About Management API
    • Postman collection
    • SDKs
    • Authentication
    • API keys
    • API limitations
    • Guidelines on handling changes
      • Introduction
      • Schedule publishing and unpublishing of a language variant
        PUT
      • Publish or schedule a language variant
        PUT
      • Cancel scheduled publishing of a language variant
        PUT
      • Unpublish or schedule unpublishing of a language variant
        PUT
      • Cancel scheduled unpublishing of a language variant
        PUT
      • D
        Unpublish a language variant
        PUT

Publishing

The API follows the workflow transition limitations present in the UI. You can publish or schedule a variant only if you have the permission to move it to the workflow step.

Schedule publishing and unpublishing of a language variant

Schedule and reschedule the publish and unpublish dates of a language variant. If the language variant has already been scheduled for publishing or unpublishing, it will be rescheduled to the specified dates.
  • The API follows the workflow transition restrictions based on the variant's workflow. This means you can schedule the variant (that is, move the variant to the Scheduled step) only if the workflow allows you to.
  • Scheduling a published language variant has no effect.
  • Scheduling an unpublish date works only when the variant is published or scheduled for publishing.
If you need to directly publish or unpublish the variant, you need to use a different endpoint to publish a variant or unpublish a variant. Similarly, if you need to cancel the existing (un)publishing schedules, use other endpoints to cancel scheduled publishing or cancel scheduled unpublishing.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/schedule-publish-and-unpublish

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Body schema

Application/json

Specify the publish, unpublish, or both.

publish_scheduled_to
string · date-time
ISO-8601 formatted date-time for scheduled publishing.If omitted, the specified variant's workflow step is kept as-is.
publish_display_timezone
string
IANA time zone name that is used to display the time offset of the scheduled publish date in the UI. If omitted, the scheduled publish date is displayed in a local time zone.The time zone doesn't modify the scheduled publish date specified in the publish_scheduled_to property. Obsolete values: "America/Ojinaga", "America/Scoresbysund", "Antarctica/Vostok", "Asia/Aqtobe", "Asia/Qyzylorda", "Europe/Kiev".
unpublish_scheduled_to
string · date-time
ISO-8601 formatted date-time for the scheduled unpublishing.If omitted, the specified variant isn't scheduled for unpublishing.
unpublish_display_timezone
string
IANA time zone name that is used to display the time offset of the scheduled unpublish date in the UI. If omitted, the scheduled unpublish date is displayed in a local time zone.The time zone doesn't modify the scheduled unpublish date specified in the unpublish_scheduled_to property. Obsolete values: "America/Ojinaga", "America/Scoresbysund", "Antarctica/Vostok", "Asia/Aqtobe", "Asia/Qyzylorda", "Europe/Kiev".

Request samples

cURL
curl --request PUT \
  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/f4b3fc05-e988-4dae-9ac1-a94aba566474/variants/d1f95fde-af02-b3b5-bd9e-f232311ccab8/schedule-publish-and-unpublish \
# --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/f4b3fc05-e988-4dae-9ac1-a94aba566474/variants/codename/es-mx/schedule-publish-and-unpublish \
# --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/codename/my_article/variants/d1f95fde-af02-b3b5-bd9e-f232311ccab8/schedule-publish-and-unpublish \
# --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/codename/my_article/variants/codename/es-mx/schedule-publish-and-unpublish \
# --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/59713/variants/d1f95fde-af02-b3b5-bd9e-f232311ccab8/schedule-publish-and-unpublish \
# --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/59713/variants/codename/es-mx/schedule-publish-and-unpublish \
  --header 'Authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \
  --header 'Content-type: application/json' \
  --data '
{
  "publish_scheduled_to": "2038-01-19T04:14:08",
  "publish_display_timezone": "Australia/Sydney",
  "unpublish_scheduled_to": "2039-01-19T00:00:00",
  "unpublish_display_timezone": "Australia/Sydney",
}'

Response

Status (204)
The variant's publishing and unpublishing schedule has been updated.
Empty response

Publish or schedule a language variant

Change the workflow step of the specified language variant to "Published" or schedule the variant to be published at a specific date and time.
  • Equivalent to publishing and scheduling content in the UI.
  • The API follows the workflow transition restrictions based on the variant's workflow. This means you can publish or schedule the variant (that is, move the variant to the Publish or Scheduled steps) only if the workflow allows you to.
  • Scheduling a published language variant has no effect.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/publish

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Body schema

Application/json


scheduled_to
string · date-time
ISO-8601 formatted date-time for scheduled publishing.If omitted, the specified variant is published immediately.
display_timezone
string
IANA time zone name used to display the time offset of the scheduled publish date in the UI.The time zone doesn't modify the scheduled publish date specified in the scheduled_to property. If omitted, the scheduled publish date is displayed in a local time zone. Obsolete values: "America/Ojinaga", "America/Scoresbysund", "Antarctica/Vostok", "Asia/Aqtobe", "Asia/Qyzylorda", "Europe/Kiev".

Request samples

TypeScript
C#
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascript
import { ManagementClient } from '@kontent-ai/management-sdk';

const client = new ManagementClient({
  environmentId: 'KONTENT_AI_ENVIRONMENT_ID',
  apiKey: 'KONTENT_AI_MANAGEMENT_API_KEY',
});

const response = await client
  .publishLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-mx')
  // To schedule publish date, use .withData({scheduled_to: 'datetime-to-publish-at'})
  .withData({
    scheduled_to: '2038-01-19T04:14:08',
    display_timezone: 'Australia/Sydney',
  })
  // To publish now, use .withoutData()
  .toPromise();

Response

Status (204)
The specified language variant was published or scheduled.
Empty response

Example responses

400
404
Example 1
Example 2
Example 3
{
  "request_id": "2f68a52f-dfa1-4eb6-8e53-c712d0cc044c",
  "error_code": 5,
  "message": "The provided request body is invalid. See the 'validation_errors' attribute for more information and specify a valid JSON object.",
  "validation_errors": [
    {
      "message": "The provided value '2019-07-:00:00+01:00' is not a valid datetime string.",
      "path": "scheduled_to"
    }
  ]
}

Cancel scheduled publishing of a language variant

Cancel scheduling of a language variant.Equivalent to canceling scheduled content in the UI. If the specified language variant is not scheduled, its workflow step is not changed.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/cancel-scheduled-publish

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Request samples

TypeScript
C#
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascript
import { ManagementClient } from '@kontent-ai/management-sdk';

const client = new ManagementClient({
  environmentId: 'KONTENT_AI_ENVIRONMENT_ID',
  apiKey: 'KONTENT_AI_MANAGEMENT_API_KEY',
});

const response = await client
  .cancelSheduledPublishingOfLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .toPromise();

Response

Status (204)
Scheduled publishing was canceled and the variant moved to the first workflow step.
Empty response

Example responses

400
404
{
  "request_id": "|f027690dca4a294a954f54378e68fa12.d197c75_",
  "error_code": 218,
  "message": "Cannot cancel scheduling of a language variant that is not scheduled to publish."
}

Unpublish or schedule unpublishing of a language variant

Unpublish the specified language variant and change its workflow step to "Archived" or schedule these operations.
  • Equivalent to the UI operations of unpublishing and adding an unpublish date.
  • You can unpublish only a published language variant.
  • You can schedule for unpublishing only variants that are published or scheduled for publishing.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/unpublish-and-archive

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Body schema

Application/json


scheduled_to
string · date-time
ISO-8601 formatted date-time for scheduled unpublishing.If omitted, the specified variant is unpublished immediately.
display_timezone
string
IANA time zone name used to display the time offset of the scheduled unpublish date in the UI.The time zone doesn't modify the schedule unpublish date specified in the scheduled_to property. If omitted, the scheduled unpublish date will be displayed in a local time zone. Obsolete values: "America/Ojinaga", "America/Scoresbysund", "Antarctica/Vostok", "Asia/Aqtobe", "Asia/Qyzylorda", "Europe/Kiev".

Request samples

TypeScript
C#
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascript
import { ManagementClient } from '@kontent-ai/management-sdk';

const client = new ManagementClient({
  environmentId: 'KONTENT_AI_ENVIRONMENT_ID',
  apiKey: 'KONTENT_AI_MANAGEMENT_API_KEY',
});

const response = await client
  .unpublishLanguageVariant()
  // .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  .byItemCodename('my_article')
  // .byItemExternalId('59713')
  // .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  .byLanguageCodename('es-mx')
  // To schedule unpublish date, use .withData({scheduled_to: 'datetime-to-unpublish-at'})
  .withData({
    scheduled_to: '2038-01-19T04:14:08',
    display_timezone: 'Australia/Sydney',
  })
  // To unpublish now, use .withoutData()
  .toPromise();

Response

Status (204)
The specified language variant was unpublished or scheduled for unpublishing.
Empty response

Example responses

400
404
Example 1
Example 2
{
  "request_id": "2f68a52f-dfa1-4eb6-8e53-c712d0cc044c",
  "error_code": 5,
  "message": "The provided request body is invalid. See the 'validation_errors' attribute for more information and specify a valid JSON object.",
  "validation_errors": [
    {
      "message": "The provided value is not a valid date. Specify a value in the ISO-8601 formatted date-time format.",
      "path": "scheduled_to"
    }
  ]
}

Cancel scheduled unpublishing of a language variant

Cancel scheduled unpublishing of the specified language variant.
  • The scheduled unpublishing date will be removed and the variant will no longer get unpublished automatically.
  • If the specified language variant isn't scheduled for unpublishing, it doesn't get changed.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/cancel-scheduled-unpublish

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Request samples

TypeScript
C#
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascript
import { ManagementClient } from '@kontent-ai/management-sdk';

const client = new ManagementClient({
  environmentId: 'KONTENT_AI_ENVIRONMENT_ID',
  apiKey: 'KONTENT_AI_MANAGEMENT_API_KEY',
});

const response = await client
  .cancelSheduledUnpublishingOfLanguageVariant()
  // .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  .byItemCodename('my_article')
  // .byItemExternalId('59713')
  // .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  .byLanguageCodename('es-mx')
  .toPromise();

Response

Status (204)
Scheduled unpublishing was canceled.
Empty response

Example responses

400
404
{
  "request_id": "|f027690dca4a294a954f54378e68fa12.d197c75_",
  "error_code": 218,
  "message": "Nothing to cancel. The specified language variant is not scheduled for unpublishing."
}

Unpublish a language variant

Deprecated
Use a new endpointThis endpoint has been deprecated in favor of a new endpoint.
Unpublish a language variant to make it no longer accessible through the Delivery API.
  • The variant is moved to the Draft workflow step or to the first workflow step you have permissions for.
  • To also archive the language variant, use the Unpublish and archive a language variant endpoint.
  • You can unpublish only a published language variant.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/unpublish

Request

Path parameters

environment_id
required · string
Identifies your environment.
item_identifier
required · string
Identifies a content item by its internal ID (e.g., 335d17ac-b6ba-4c6a-ae31-23c1193215cb), external ID (e.g., external-id/custom-identifier-for-my-article), or codename (e.g., codename/my_article).
language_identifier
required · string
Identifies the language by its internal ID (e.g., d1f95fde-af02-b3b5-bd9e-f232311ccab8) or codename (e.g., codename/es-ES).

Request samples

TypeScript
cURL
// Tip: Find more about JS/TS SDKs at https://kontent.ai/learn/javascript
import { ManagementClient } from '@kontent-ai/management-sdk';

const client = new ManagementClient({
  environmentId: 'KONTENT_AI_ENVIRONMENT_ID',
  apiKey: 'KONTENT_AI_MANAGEMENT_API_KEY',
});

const response = await client
  .unpublishLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .toPromise();

Response

Status (204)
The specified language variant was unpublished and moved to the first workflow step.
Empty response

Example responses

400
404
{
  "request_id": "5872650e-32bb-4e23-9d73-ba5139b93898",
  "error_code": 213,
  "message": "Cannot unpublish a language variant that is not published."
}
Copyright © 2025 Kontent.ai. All rights reserved.
  • Web
  • Privacy policy
  • Cookies policy
  • Consent settings
  • Security
  • GDPR