• 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
      • Language variant object
        Schema
      • Retrieve the latest language variant
        GET
      • Retrieve the published language variant
        GET
      • Retrieve language variants of an item
        GET
      • List language variants by type
        GET
      • List language variants containing components by type
        GET
      • List language variants by collection
        GET
      • List language variants by space
        GET
      • Filter language variants (early access)
        POST
      • Create a new version of a language variant
        PUT
      • Upsert a language variant
        PUT
      • Change the workflow of a language variant
        PUT
      • D
        Change the workflow step of a language variant
        PUT
      • Delete a language variant
        DELETE

Language variants

Language variants represent localized variants of content items. For example, when you have 2 active languages, each content item can have up to 2 variants.Every language variant is tied to a specific content item and language. This means you need to specify a language identifier when you request the variant, even if your environment contains only one language.
If a language is deactivated, the respective content item variants cannot be retrieved via Management API and the API returns a 404 not found error.
To manage language variants via Management API, send requests to URLs based on the following patterns:
  • Item ID + Language ID: <base_URL>/items/<content_item_id>/variants/<language_id>
  • Item ID + Language codename: <base_URL>/items/<content_item_id>/variants/codename/<language_codename>
  • Item codename + Language ID: <base_URL>/items/codename/<content_item_codename>/variants/<language_id>
  • Item codename + Language codename: <base_URL>/items/codename/<content_item_codename>/variants/codename/<language_codename>
  • Item external ID + Language ID: <base_URL>/items/external-id/<content_item_external_id>/variants/<language_id>
  • Item external ID + Language codename: <base_URL>/items/external-id/<content_item_external_id>/variants/codename/<language_codename>
These endpoints accept GET, PUT, and DELETE requests, allowing you to retrieve, upsert, and delete language variants. You can mix and match the identifiers of content items and languages when requesting language variants.

Language variant object

Localized variant of a content item.
When copying or migrating variants, you can take the variant object returned when retrieving a variant and use it as-is to upsert a variant.
elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename. The value of the codename property must meet the conditions defined in rules for codenames.
external_id
string · write-only
The referenced object’s external ID. The value of the external_id property must not contain the following characters: /, ., ;.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
workflow_step
nestedSchema · read-only
Deprecated
Reference to the variant's current workflow step.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
item
nestedSchema · read-only
Reference to the content item.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename. The value of the codename property must meet the conditions defined in rules for codenames.
external_id
string · write-only
The referenced object’s external ID. The value of the external_id property must not contain the following characters: /, ., ;.
language
nestedSchema · read-only
Reference to the language of the variant. 
The default language will always have the ID of 00000000-0000-0000-0000-000000000000.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename. The value of the codename property must meet the conditions defined in rules for codenames.
external_id
string · write-only
The referenced object’s external ID. The value of the external_id property must not contain the following characters: /, ., ;.
last_modified
string · read-only · date-time
ISO-8601 formatted date and time of the last change of content.
schedule
object · read-only
Specifies the variant's scheduled publishing and unpublishing dates.
Show child attributes
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Show child attributes
due_date
object
Specifies the variant's due date information.
Show child attributes
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.
JSON
{
  "elements": [
    {
      "element": {
        "id": "c7c3b834-2222-5677-89c4-b46f04489109"
      },
      "value": "Text element value"
    },
    {
      "mode": "custom",
      "element": {
        "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
      },
      "value": "custom-url-slug-value"
    }
  ],
  "workflow": {
    "workflow_identifier": {
      "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
    },
    "step_identifier": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    }
  },
  "workflow_step": {
    "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
  },
  "item": {
    "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
  },
  "language": {
    "id": "00000000-0000-0000-0000-000000000000"
  },
  "last_modified": "2020-02-27T19:08:25.404Z",
  "schedule": {
    "publish_time": "2024-03-31T08:00:00",
    "publish_display_timezone": "Europe/Prague",
    "unpublish_time": "2024-04-30T08:00:00",
    "unpublish_display_timezone": "Europe/Prague"
  },
  "contributors": [
    {
      "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
    }
  ],
  "due_date": {
    "value": "2024-02-26T06:04:00.7069564Z"
  },
  "note": "This content is waiting for a legal review."
}

Retrieve the latest language variant

Retrieve the latest available version of the specified language variant of a content item. You can also explicitly retrieve the latest published version of the variant.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}

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
  .viewLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .toPromise();

Response

Status (200)
Language variant for the specified language and content item.
elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
workflow_identifier
id
string · uuid
The referenced object's internal ID.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
step_identifier
id
string · uuid
The referenced object's internal ID.
workflow_step
nestedSchema · read-only
Deprecated
Reference to the variant's current workflow step.
workflow_step
id
string · uuid
The referenced object's internal ID.
item
nestedSchema · read-only
Reference to the content item.
item
id
string · uuid
The referenced object's internal ID.
language
nestedSchema · read-only
Reference to the language of the variant. 
The default language will always have the ID of 00000000-0000-0000-0000-000000000000.
language
id
string · uuid
The referenced object's internal ID.
last_modified
string · read-only · date-time
ISO-8601 formatted date and time of the last change of content.
schedule
object · read-only
Specifies the variant's scheduled publishing and unpublishing dates.
Show child attributes
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Show child attributes
due_date
object
Specifies the variant's due date information.
Show child attributes
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.

Example responses

200
404
{
  "elements": [
    {
      "element": {
        "id": "c7c3b834-2222-5677-89c4-b46f04489109"
      },
      "value": "Text element value"
    },
    {
      "mode": "custom",
      "element": {
        "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
      },
      "value": "custom-url-slug-value"
    }
  ],
  "workflow": {
    "workflow_identifier": {
      "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
    },
    "step_identifier": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    }
  },
  "workflow_step": {
    "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
  },
  "item": {
    "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
  },
  "language": {
    "id": "00000000-0000-0000-0000-000000000000"
  },
  "last_modified": "2020-02-27T19:08:25.404Z",
  "schedule": {
    "publish_time": "2024-03-31T08:00:00",
    "publish_display_timezone": "Europe/Prague",
    "unpublish_time": "2024-04-30T08:00:00",
    "unpublish_display_timezone": "Europe/Prague"
  },
  "contributors": [
    {
      "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
    }
  ],
  "due_date": {
    "value": "2024-02-26T06:04:00.7069564Z"
  },
  "note": "This content is waiting for a legal review."
}

Retrieve the published language variant

Retrieve the currently published version of the specified language variant of a content item. You can also retrieve the latest available version of the variant.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/published

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

C#
cURL
// Tip: Find more about .NET SDKs at https://kontent.ai/learn/net
using Kontent.Ai.Management;

var client = new ManagementClient(new ManagementOptions
{
    ApiKey = "KONTENT_AI_MANAGEMENT_API_KEY",
    EnvironmentId = "KONTENT_AI_ENVIRONMENT_ID"
});

var identifier = new LanguageVariantIdentifier(Reference.ById(Guid.Parse("f4b3fc05-e988-4dae-9ac1-a94aba566474")), Reference.ById(Guid.Parse("d1f95fde-af02-b3b5-bd9e-f232311ccab8")));
// var identifier = new LanguageVariantIdentifier(Reference.ById(Guid.Parse("f4b3fc05-e988-4dae-9ac1-a94aba566474")), Reference.ByCodename("es-ES"));
// var identifier = new LanguageVariantIdentifier(Reference.ByCodename("on_roasts"), Reference.ById(Guid.Parse("d1f95fde-af02-b3b5-bd9e-f232311ccab8")));
// var identifier = new LanguageVariantIdentifier(Reference.ByCodename("on_roasts"), Reference.ByCodename("es-ES"));
// var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("59713"), Reference.ById(Guid.Parse("d1f95fde-af02-b3b5-bd9e-f232311ccab8")));
// var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("59713"), Reference.ByCodename("es-ES"));

var response = await client.GetPublishedLanguageVariantAsync(identifier);

Response

Status (200)
The currently published language variant of the specified content item.
elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
workflow_identifier
id
string · uuid
The referenced object's internal ID.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
step_identifier
id
string · uuid
The referenced object's internal ID.
workflow_step
nestedSchema · read-only
Deprecated
Reference to the variant's current workflow step.
workflow_step
id
string · uuid
The referenced object's internal ID.
item
nestedSchema · read-only
Reference to the content item.
item
id
string · uuid
The referenced object's internal ID.
language
nestedSchema · read-only
Reference to the language of the variant. 
The default language will always have the ID of 00000000-0000-0000-0000-000000000000.
language
id
string · uuid
The referenced object's internal ID.
last_modified
string · read-only · date-time
ISO-8601 formatted date and time of the last change of content.
schedule
object · read-only
Specifies the variant's scheduled publishing and unpublishing dates.
Show child attributes
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Show child attributes
due_date
object
Specifies the variant's due date information.
Show child attributes
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.

Example responses

200
404
{
  "elements": [
    {
      "element": {
        "id": "c7c3b834-2222-5677-89c4-b46f04489109"
      },
      "value": "Text element value"
    },
    {
      "mode": "custom",
      "element": {
        "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
      },
      "value": "custom-url-slug-value"
    }
  ],
  "workflow": {
    "workflow_identifier": {
      "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
    },
    "step_identifier": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    }
  },
  "workflow_step": {
    "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
  },
  "item": {
    "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
  },
  "language": {
    "id": "00000000-0000-0000-0000-000000000000"
  },
  "last_modified": "2020-02-27T19:08:25.404Z",
  "schedule": {
    "publish_time": "2024-03-31T08:00:00",
    "publish_display_timezone": "Europe/Prague",
    "unpublish_time": "2024-04-30T08:00:00",
    "unpublish_display_timezone": "Europe/Prague"
  },
  "contributors": [
    {
      "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
    }
  ],
  "due_date": {
    "value": "2024-02-26T06:04:00.7069564Z"
  },
  "note": "This content is waiting for a legal review."
}

Retrieve language variants of an item

Retrieve a list of language variants of a content item.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
If you want to retrieve metadata information about the parent content item, see how to Retrieve a content item.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants

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).

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
  .listLanguageVariantsOfItem()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .toPromise();

Response

Status (200)
Array of language variants for the specified content item.
array · unique items
List of language variants.
Hide child attributes
elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
workflow_identifier
id
string · uuid
The referenced object's internal ID.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
step_identifier
id
string · uuid
The referenced object's internal ID.
workflow_step
nestedSchema · read-only
Deprecated
Reference to the variant's current workflow step.
workflow_step
id
string · uuid
The referenced object's internal ID.
item
nestedSchema · read-only
Reference to the content item.
item
id
string · uuid
The referenced object's internal ID.
language
nestedSchema · read-only
Reference to the language of the variant. 
The default language will always have the ID of 00000000-0000-0000-0000-000000000000.
language
id
string · uuid
The referenced object's internal ID.
last_modified
string · read-only · date-time
ISO-8601 formatted date and time of the last change of content.
schedule
object · read-only
Specifies the variant's scheduled publishing and unpublishing dates.
Hide child attributes
publish_time
string · nullable · read-only · date-time
The scheduled publish date and time formatted in ISO-8601.To change the variant's scheduled publish time, use the Publish or schedule endpoint.
publish_display_timezone
string · nullable · read-only
The 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 publish_time property. If omitted, the scheduled publish date is displayed in a local time zone.
unpublish_time
string · nullable · read-only · date-time
The scheduled unpublish date and time formatted in ISO-8601.To change the variant's scheduled unpublish time, use the Unpublish or schedule endpoint.
unpublish_display_timezone
string · nullable · read-only
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 unpublish_time property. If omitted, the scheduled unpublish date is displayed in a local time zone.
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Hide child attributes
id
string
The user's internal ID.
email
string · email
The user's email address.
due_date
object
Specifies the variant's due date information.
Hide child attributes
value
required · string · nullable · date-time
 ISO-8601 formatted date and time of the variant's due date.If you need to remove the variant's due date, set the value to null.
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.

Example responses

200
404
{
  "": {
    "elements": [
      {
        "element": {
          "id": "c7c3b834-2222-5677-89c4-b46f04489109"
        },
        "value": "Text element value"
      },
      {
        "mode": "custom",
        "element": {
          "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
        },
        "value": "custom-url-slug-value"
      }
    ],
    "workflow": {
      "workflow_identifier": {
        "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
      },
      "step_identifier": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      }
    },
    "workflow_step": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    },
    "item": {
      "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
    },
    "language": {
      "id": "00000000-0000-0000-0000-000000000000"
    },
    "last_modified": "2020-02-27T19:08:25.404Z",
    "schedule": {
      "publish_time": "2024-03-31T08:00:00",
      "publish_display_timezone": "Europe/Prague",
      "unpublish_time": "2024-04-30T08:00:00",
      "unpublish_display_timezone": "Europe/Prague"
    },
    "contributors": [
      {
        "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
      }
    ],
    "due_date": {
      "value": "2024-02-26T06:04:00.7069564Z"
    },
    "note": "This content is waiting for a legal review."
  }
}

List language variants by type

Retrieve a dynamically paginated list of language variants for a specified content type.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/types/{type_identifier}/variants

Request

Path parameters

environment_id
required · string
Identifies your environment.
type_identifier
required · string
Identifies the content type by internal ID (e.g., 269202ad-1d9d-47fd-b3e8-bdb05b3e3cf0), external ID (e.g., external-id/Content-Type-123), or codename (e.g., codename/hosted_video).

Header parameters

x-continuation
string
Determines the page of results to retrieve.To get the next page of results, check the pagination object in the API response and set the x-continuation header parameter to the value of the continuation_token property.

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',
});

// Gets the first page of results
const response = await client
  .listLanguageVariantsOfContentType()
  .byTypeCodename('article')
  .toPromise();

// Gets all pages of results
// const response = await client.listLanguageVariantsOfContentType()
//   .byTypeCodename('article')
//   .toAllPromise();

Response

Status (200)
A dynamically paginated list of language variants based on the specified content type.
variants[]
required · array · unique items
List of language variants.
Show child attributes
pagination
required · object
Information about the next page of results.
Show child attributes

Example responses

200
400
404
{
  "variants": {
    "elements": [
      {
        "element": {
          "id": "c7c3b834-2222-5677-89c4-b46f04489109"
        },
        "value": "Text element value"
      },
      {
        "mode": "custom",
        "element": {
          "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
        },
        "value": "custom-url-slug-value"
      }
    ],
    "workflow": {
      "workflow_identifier": {
        "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
      },
      "step_identifier": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      }
    },
    "workflow_step": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    },
    "item": {
      "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
    },
    "language": {
      "id": "00000000-0000-0000-0000-000000000000"
    },
    "last_modified": "2020-02-27T19:08:25.404Z",
    "schedule": {
      "publish_time": "2024-03-31T08:00:00",
      "publish_display_timezone": "Europe/Prague",
      "unpublish_time": "2024-04-30T08:00:00",
      "unpublish_display_timezone": "Europe/Prague"
    },
    "contributors": [
      {
        "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
      }
    ],
    "due_date": {
      "value": "2024-02-26T06:04:00.7069564Z"
    },
    "note": "This content is waiting for a legal review."
  },
  "pagination": {
    "continuation_token": "W3sidG9rZW4iOiIrUklEOn...",
    "next_page": "https://manage.kontent.ai/v2/your/chosen/list/endpoint"
  }
}

List language variants containing components by type

Retrieve a dynamically paginated list of language variants that contain components specified by a content type.The returned language variants may be based on any content type as long as the variants contain at least one component of the specified type. You may want to get language variants with specific components when migrating content based on a specific content type.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/types/{type_identifier}/components

Request

Path parameters

environment_id
required · string
Identifies your environment.
type_identifier
required · string
Identifies the content type by internal ID (e.g., 269202ad-1d9d-47fd-b3e8-bdb05b3e3cf0), external ID (e.g., external-id/Content-Type-123), or codename (e.g., codename/hosted_video).

Header parameters

x-continuation
string
Determines the page of results to retrieve.To get the next page of results, check the pagination object in the API response and set the x-continuation header parameter to the value of the continuation_token property.

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',
});

// Gets the first page of results
const response = await client
  .listLanguageVariantsOfContentTypeWithComponents()
  .byTypeID('6434e475-5a29-4866-9fd1-6d1ca873f5be')
  //   .byTypeCodename('article')
  .toPromise();

// Gets all pages of results
// const response = await client.listLanguageVariantsOfContentTypeWithComponents()
//   .byTypeCodename('article')
//   .toAllPromise();

Response

Status (200)
A dynamically paginated list of language variants that contain components based on the specified content type.
variants[]
required · array · unique items
A list of language variants.
Show child attributes
pagination
required · object
Information about the next page of results.
Show child attributes

Example responses

200
400
404
{
  "variants": {
    "elements": [
      {
        "element": {
          "id": "c7c3b834-2222-5677-89c4-b46f04489109"
        },
        "value": "Text element value"
      },
      {
        "mode": "custom",
        "element": {
          "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
        },
        "value": "custom-url-slug-value"
      }
    ],
    "workflow": {
      "workflow_identifier": {
        "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
      },
      "step_identifier": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      }
    },
    "workflow_step": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    },
    "item": {
      "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
    },
    "language": {
      "id": "00000000-0000-0000-0000-000000000000"
    },
    "last_modified": "2020-02-27T19:08:25.404Z",
    "schedule": {
      "publish_time": "2024-03-31T08:00:00",
      "publish_display_timezone": "Europe/Prague",
      "unpublish_time": "2024-04-30T08:00:00",
      "unpublish_display_timezone": "Europe/Prague"
    },
    "contributors": [
      {
        "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
      }
    ],
    "due_date": {
      "value": "2024-02-26T06:04:00.7069564Z"
    },
    "note": "This content is waiting for a legal review."
  },
  "pagination": {
    "continuation_token": "W3sidG9rZW4iOiIrUklEOn...",
    "next_page": "https://manage.kontent.ai/v2/your/chosen/list/endpoint"
  }
}

List language variants by collection

Retrieve a dynamically paginated list of language variants for a specified collection.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/collections/{collection_identifier}/variants

Request

Path parameters

environment_id
required · string
Identifies your environment.
collection_identifier
required · string
Identifies the content collection by its internal ID (e.g., b7aa4a53-d9b1-48cf-b7a6-ed0b182c4b89), codename (e.g., codename/global_collection), or external ID (e.g., external-id/my-collection-id).

Header parameters

x-continuation
string
Determines the page of results to retrieve.To get the next page of results, check the pagination object in the API response and set the x-continuation header parameter to the value of the continuation_token property.

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',
});

// Gets the first page of results
const response = await client
  .listLanguageVariantsByCollection()
  .byCollectionCodename('important_collection')
  .toPromise();

// Gets all pages of results
// const response = await client.listLanguageVariantsByCollection()
//     .byCollectionCodename('important_collection')
//     .toAllPromise();

Response

Status (200)
A dynamically paginated list of language variants that belong to the specified collection.
variants[]
required · array · unique items
List of language variants in the specified collection.
Show child attributes
pagination
required · object
Information about the next page of results.
Show child attributes

Example responses

200
400
404
{
  "variants": {
    "elements": [
      {
        "element": {
          "id": "c7c3b834-2222-5677-89c4-b46f04489109"
        },
        "value": "Text element value"
      },
      {
        "mode": "custom",
        "element": {
          "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
        },
        "value": "custom-url-slug-value"
      }
    ],
    "workflow": {
      "workflow_identifier": {
        "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
      },
      "step_identifier": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      }
    },
    "workflow_step": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    },
    "item": {
      "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
    },
    "language": {
      "id": "00000000-0000-0000-0000-000000000000"
    },
    "last_modified": "2020-02-27T19:08:25.404Z",
    "schedule": {
      "publish_time": "2024-03-31T08:00:00",
      "publish_display_timezone": "Europe/Prague",
      "unpublish_time": "2024-04-30T08:00:00",
      "unpublish_display_timezone": "Europe/Prague"
    },
    "contributors": [
      {
        "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
      }
    ],
    "due_date": {
      "value": "2024-02-26T06:04:00.7069564Z"
    },
    "note": "This content is waiting for a legal review."
  },
  "pagination": {
    "continuation_token": "W3sidG9rZW4iOiIrUklEOn...",
    "next_page": "https://manage.kontent.ai/v2/your/chosen/list/endpoint"
  }
}

List language variants by space

Retrieve a dynamically paginated list of language variants for a specified space.Language variants are not directly connected to spaces. Rather, the parent content item of each language variant is assigned to a specific collection. Each collection can be linked to zero, one, or more spaces.
When retrieving variants, the API returns their latest versions. For example, if the variant contains both the draft and published versions, the API returns the draft version because it's considered the latest.
GET
https://manage.kontent.ai/v2/projects/{environment_id}/spaces/{space_identifier}/variants

Request

Path parameters

environment_id
required · string
Identifies your environment.
space_identifier
required · string
Identifies a space by it's internal ID (eg., 6291c693-f6e4-4a6b-ac67-5c31c32f9388) or codename (eg., codename/space_1)

Header parameters

x-continuation
string
Determines the page of results to retrieve.To get the next page of results, check the pagination object in the API response and set the x-continuation header parameter to the value of the continuation_token property.

Request samples

C#
cURL
// Tip: Find more about .NET SDKs at https://kontent.ai/learn/net
using Kontent.Ai.Management;

var client = new ManagementClient(new ManagementOptions
{
    ApiKey = "KONTENT_AI_MANAGEMENT_API_KEY",
    EnvironmentId = "KONTENT_AI_ENVIRONMENT_ID"
});

var identifier = Reference.ById(Guid.Parse("6291c693-f6e4-4a6b-ac67-5c31c32f9388"));
// var identifier = Reference.ByCodename("space_1");

// Gets the first page of results
var response = await client.ListLanguageVariantsBySpaceAsync(identifier);

Response

Status (200)
A dynamically paginated list of language variants that belong to the specified space.
variants[]
required · array · unique items
List of language variants in the specified space.
Show child attributes
pagination
required · object
Information about the next page of results.
Show child attributes

Example responses

200
400
404
{
  "variants": {
    "elements": [
      {
        "element": {
          "id": "c7c3b834-2222-5677-89c4-b46f04489109"
        },
        "value": "Text element value"
      },
      {
        "mode": "custom",
        "element": {
          "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
        },
        "value": "custom-url-slug-value"
      }
    ],
    "workflow": {
      "workflow_identifier": {
        "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
      },
      "step_identifier": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      }
    },
    "workflow_step": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    },
    "item": {
      "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
    },
    "language": {
      "id": "00000000-0000-0000-0000-000000000000"
    },
    "last_modified": "2020-02-27T19:08:25.404Z",
    "schedule": {
      "publish_time": "2024-03-31T08:00:00",
      "publish_display_timezone": "Europe/Prague",
      "unpublish_time": "2024-04-30T08:00:00",
      "unpublish_display_timezone": "Europe/Prague"
    },
    "contributors": [
      {
        "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
      }
    ],
    "due_date": {
      "value": "2024-02-26T06:04:00.7069564Z"
    },
    "note": "This content is waiting for a legal review."
  },
  "pagination": {
    "continuation_token": "W3sidG9rZW4iOiIrUklEOn...",
    "next_page": "https://manage.kontent.ai/v2/your/chosen/list/endpoint"
  }
}

Filter language variants (early access)

Filter content items and their language variants using advanced criteria such as search phrases, contributors, workflow steps, taxonomies, and more.The endpoint returns a paginated list of content items and their language variants that match the specified filters. All filters are optional and can be omitted or set to null.
Early accessThis endpoint is still evolving, and its URL, parameters, and response structure may be subject to change. To ensure future compatibility, avoid hard dependencies on the exact endpoint path or response shape. Try the functionality and share your experience with us to help improve it.
POST
https://manage.kontent.ai/v2/projects/{environment_id}/early-access/variants/filter

Request

Path parameters

environment_id
required · string
Identifies your environment.

Body schema

Application/json

Specifies the filters and sorting options for retrieving language variants.

filters
object · write-only
Filtering criteria for language variants. All properties are optional. Empty arrays are not allowed.
Show child attributes
order
object · write-only
The sorting criteria for the results.
Show child attributes
include_content
boolean
Determines whether to also include the variant’s element values in the response. By default, only system attributes are returned.
Default value:
false

Request samples

TypeScript
C#
// 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',
});

// Some SDK queries are available under the `earlyAccess` namespace.
// This endpoint is in early access and may evolve before general availability.
// Use with caution in production environments.

// Filters variants by search phrase and includes element content
const response = await client.earlyAccess
  .filterLanguageVariants()
  .withData({
    filters: {
      search_phrase: 'home',
    },
    order: {
      by: 'last_modified',
      direction: 'desc',
    },
    include_content: true,
  })
  .toPromise(); // or `toAllPromise()`

Response

Status (200)
A dynamically paginated list of content items and their language variants matchng the specified filters.
data[]
required · array
A list of filtered results.
Show child attributes
pagination
required · object
Information about the next page of results.
Show child attributes

Example responses

200
400
{
  "data": {
    "item": {
      "id": "335d17ac-b6ba-4c6a-ae31-23c1193215cb",
      "name": "My article",
      "codename": "my_article",
      "type": {
        "id": "d89b6348-7cdc-444a-8e1e-adacb564f2a2"
      },
      "collection": {
        "id": "00000000-0000-0000-0000-000000000000"
      },
      "spaces": [
        {
          "id": "dcbf90fb-7135-4465-8102-b3e739821ed8"
        },
        {
          "id": "39efe8a4-23d2-4d3a-8dfb-07789668474f"
        }
      ],
      "sitemap_locations": [],
      "external_id": "custom-identifier-for-my-article",
      "last_modified": "2023-04-04T13:45:30.7692802Z"
    },
    "variant": {
      "elements": [
        {
          "element": {
            "id": "c7c3b834-2222-5677-89c4-b46f04489109"
          },
          "value": "Text element value"
        },
        {
          "mode": "custom",
          "element": {
            "id": "53a5eecb-f295-59b4-a07d-19655b6ad860"
          },
          "value": "custom-url-slug-value"
        }
      ],
      "workflow": {
        "workflow_identifier": {
          "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
        },
        "step_identifier": {
          "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
        }
      },
      "workflow_step": {
        "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
      },
      "item": {
        "id": "82ef61f4-ccee-42ac-95e2-1a44beda9625"
      },
      "language": {
        "id": "00000000-0000-0000-0000-000000000000"
      },
      "last_modified": "2020-02-27T19:08:25.404Z",
      "schedule": {
        "publish_time": "2024-03-31T08:00:00",
        "publish_display_timezone": "Europe/Prague",
        "unpublish_time": "2024-04-30T08:00:00",
        "unpublish_display_timezone": "Europe/Prague"
      },
      "contributors": [
        {
          "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
        }
      ],
      "due_date": {
        "value": "2024-02-26T06:04:00.7069564Z"
      },
      "note": "This content is waiting for a legal review."
    }
  },
  "pagination": {
    "continuation_token": "W3sidG9rZW4iOiIrUklEOn...",
    "next_page": "https://manage.kontent.ai/v2/your/chosen/list/endpoint"
  }
}

Create a new version of a language variant

Create a new version of a published language variant while keeping the original version published and available via Delivery API. This is the same as creating new versions in the UI.You can only create new versions of published language variants that don't already have an existing Draft (unpublished) version.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/new-version

Request

Path parameters

environment_id
required · string
Identifies your environment.
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).
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).

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
  .createNewVersionOfLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .toPromise();

Response

Status (204)
A new version of the specified published language variant was created.
Empty response

Example responses

400
404
{
  "request_id": "550c4c30-1b9c-4fe4-8140-a9cda5cd7c11",
  "error_code": 214,
  "message": "Cannot create a new version of a language variant that is not published."
}

Upsert a language variant

Add content to a language variant in an active language or update an existing language variant. You cannot update an existing language variant if its workflow step is set to Archived, Published, or Scheduled.When creating a new variant:
  • The content item for the variant must already exist. The item isn't created automatically on variant upsert.
  • Non-localizable elements are filtered out for variants in non-default languages.
When updating an existing variant, only the elements specified in the request body will be modified. When copying variants, you can take the variant object returned by a GET request and use it as-is in the body of this request. If you need to migrate variants to another environment or project, see how to import content items.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}

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

Specifies the language variant's content and metadata to update.

elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename. The value of the codename property must meet the conditions defined in rules for codenames.
external_id
string · write-only
The referenced object’s external ID. The value of the external_id property must not contain the following characters: /, ., ;.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Show child attributes
due_date
object
Specifies the variant's due date information.
Show child attributes
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.

Request samples

Payload
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
  .upsertLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .withData((builder) => {
    return {
      elements: [
        builder.taxonomyElement({
          element: {
            codename: 'personas',
          },
          value: [
            {
              codename: 'barista',
            },
            {
              codename: 'coffee_blogger',
            },
          ],
        }),
        builder.dateTimeElement({
          element: {
            codename: 'post_date',
          },
          value: '2014-11-07T00:00:00Z',
          display_timezone: 'Australia/Sydney',
        }),
        builder.textElement({
          element: {
            codename: 'summary',
          },
          value: 'Tostar granos de café puede tardar de 6 a 13 minutos. ...',
        }),
        builder.linkedItemsElement({
          element: {
            codename: 'related_articles',
          },
          value: [
            {
              codename: 'coffee_processing_techniques',
            },
            {
              codename: 'origins_of_arabica_bourbon',
            },
          ],
        }),
        builder.textElement({
          element: {
            codename: 'meta_keywords',
          },
          value: 'asados, café',
        }),
        builder.textElement({
          element: {
            codename: 'meta_description',
          },
          value: 'Tostar granos de café puede tardar de 6 a 13 minutos. ...',
        }),
        builder.urlSlugElement({
          element: {
            codename: 'url_pattern',
          },
          mode: 'autogenerated',
          value: undefined,
        }),
      ],
      workflow: {
        step_identifier: {
          codename: 'my_workflow_step',
        },
        workflow_identifier: {
          codename: 'my_workflow',
        },
      },
    };
  })
  .toPromise();

Response

Status (200)
Status (201)
The updated language variant.
elements[]
required · array · unique items
List of elements as defined in the item's content type. To recreate the order from the UI, use the order from the content type response, sorted by the content group.

Any of:
Asset element
Custom element
Date & time element
Linked items element
Multiple choice element
Number element
Rich text element
Subpages element
Taxonomy element
Text element
URL slug element
Asset element
element
required · object
Reference to a specific object in the environment.
The API uses internal IDs for referencing objects. This means that the reference objects in the API responses will always use internal IDs.
Show child attributes
value[]
required · array · unique items
The value of asset elements is an array of Reference objects, each representing a single asset. Every asset can be referenced only once. You can also reference the asset's renditions by the renditions property. Renditions are specific to images only.When retrieving asset elements, the Management API will always reference assets with their internal IDs. When updating asset elements via the API, you can reference an asset by its internal ID or external ID. Also, you can reference a rendition by its internal ID or external ID.
Reference to an asset
id
string · uuid
The referenced object's internal ID.
renditions[]
array · max. 1 items
The asset's renditions. Renditions are different editions of the original image used in Kontent.
The renditions property is optional, but once you specify a rendition for the asset, you need to specify the renditions for all the other referenced assets in the element as well. This is due to the backward compatibility of the API.
When you update a rendition via the API, it gets changed across all assets using this rendition. But when you do the same in the UI, for example, by duplicating an item that contains a rendition, changes to the rendition are not applied across the items. To remove a rendition, leave the array empty.
Show child attributes
workflow
nestedSchema
Specifies the variant's current workflow and workflow step.
workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
workflow_identifier
id
string · uuid
The referenced object's internal ID.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
step_identifier
id
string · uuid
The referenced object's internal ID.
workflow_step
nestedSchema · read-only
Deprecated
Reference to the variant's current workflow step.
workflow_step
id
string · uuid
The referenced object's internal ID.
item
nestedSchema · read-only
Reference to the content item.
item
id
string · uuid
The referenced object's internal ID.
language
nestedSchema · read-only
Reference to the language of the variant. 
The default language will always have the ID of 00000000-0000-0000-0000-000000000000.
language
id
string · uuid
The referenced object's internal ID.
last_modified
string · read-only · date-time
ISO-8601 formatted date and time of the last change of content.
schedule
object · read-only
Specifies the variant's scheduled publishing and unpublishing dates.
Show child attributes
contributors[]
array · max. 50 items · unique items
Specifies the users assigned as contributors to this variant.When updating language variants, you can specify users by their email address or internal ID.
Show child attributes
due_date
object
Specifies the variant's due date information.
Show child attributes
note
string · max. 4000 chars
Adds additional instructions or notes for content creators.

Example responses

200
201
400
404
{
  "elements": [
    {
      "element": {
        "id": "108ed7c0-fc8c-c0ec-d0b5-5a8071408b54"
      },
      "value": [
        {
          "id": "117cdfae-52cf-4885-b271-66aef6825612"
        }
      ]
    },
    {
      "element": {
        "id": "f2ff5e3f-a9ca-4604-58b0-34a2ad6a7cf1"
      },
      "mode": "autogenerated",
      "value": "my-articles-title"
    },
    {
      "element": {
        "id": "63793ba4-6004-a93c-68ca-52a1f0482bca"
      },
      "value": [
        {
          "id": "f6daed1f-3f3b-4036-a9c7-9519359b9601"
        },
        {
          "id": "a6daed1f-4f3b-4037-a9c1-9537359b9600"
        }
      ]
    },
    {
      "element": {
        "id": "68f65095-c9b4-05d6-a473-2883c2f0c7af"
      },
      "value": "A tiny little plaintext."
    }
  ],
  "workflow": {
    "workflow_identifier": {
      "id": "06ea628e-4ec7-4991-91e4-1412995151ee"
    },
    "step_identifier": {
      "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
    }
  },
  "workflow_step": {
    "id": "dc87d7cf-424b-4b89-9519-c9f79a3458b7"
  },
  "item": {
    "id": "f4b3fc05-e988-4dae-9ac1-a94aba566474"
  },
  "language": {
    "id": "d1f95fde-af02-b3b5-bd9e-f232311ccab8"
  },
  "last_modified": "2020-11-21T09:08:33.2229841Z",
  "schedule": {
    "publish_time": "2024-03-31T08:00:00",
    "publish_display_timezone": "Europe/Prague",
    "unpublish_time": "2024-04-30T08:00:00",
    "unpublish_display_timezone": "Europe/Prague"
  },
  "contributors": [
    {
      "id": "gTGVBh3vrho-JIrI7PFrqgbCaKEEyCtXdLQGWxRW9pU"
    }
  ],
  "due_date": {
    "value": "2024-02-26T06:04:00.7069564Z"
  },
  "note": "Make sure the graphic materials we use here are on brand."
}

Change the workflow of a language variant

Move the specified variant to the specified workflow and workflow step. This is the same as updating the workflow in the UI.
  • The workflow step of a published language variant cannot be changed. You need to unpublish or create a new version first.
  • For publishing and scheduling, use the Publish endpoint to move the specified variant to the Published step.
  • For unpublishing and archiving, use the Unpublish endpoint to move the specified variant to the Archived step.
The API follows the workflow transition limitations present in the UI. This means you can change the workflow step of the language variant only to the workflow steps you have permissions to.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/change-workflow

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 workflow and workflow step to move the variant.

workflow_identifier
required · nestedSchema
Reference to the content item variant's workflow.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.
step_identifier
required · nestedSchema
Reference to the content item variant's workflow step.
id
string · uuid
The referenced object's internal ID.
codename
string · write-only
The referenced object's codename.

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
  .changeWorkflowOfLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .withData({
    step_identifier: {
      id: 'dc87d7cf-424b-4b89-9519-c9f79a3458b7',
      // codename: 'review'
    },
    workflow_identifier: {
      id: '06ea628e-4ec7-4991-91e4-1412995151ee',
      // codename: 'default'
    },
  })
  .toPromise();

Response

Status (204)
The variant was moved to the specified workflow step in the specified workflow.
Empty response

Example responses

400
404
{
  "request_id": "385bc5fe-cc64-4924-bee1-78f271d4bbc5",
  "error_code": 215,
  "message": "Cannot change workflow step to Published. If you want to publish a language variant via the Management API, use the '/publish' endpoint instead."
}

Change the workflow step of a language variant

Deprecated
Use a new endpointThis endpoint has been deprecated in favor of a new endpoint that supports multiple workflows.
Move the specified language variant to the specified workflow step in the default workflow.
  • The workflow step of a published language variant cannot be changed. You need to unpublish or create a new version first.
  • For publishing and scheduling, use the Publish endpoint to move the specified variant to the Published step.
  • For unpublishing and archiving, use the Unpublish endpoint to move the specified variant to the Archived step.
The API follows the workflow transition limitations present in the UI. This means you can change the workflow step of the language variant only to the workflow steps you have permissions to.
PUT
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}/workflow/{workflow_step_identifier}

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).
workflow_step_identifier
required · string
Identifies the workflow step by its internal ID (e.g., 13145328-b946-4e47-9c9d-6f40c7aaeaef) or codename (e.g., codename/draft).

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
  .changeWorkflowStepOfLanguageVariant()
  .byItemId('f4b3fc05-e988-4dae-9ac1-a94aba566474')
  // .byItemCodename('my_article')
  // .byItemExternalId('59713')
  .byLanguageId('d1f95fde-af02-b3b5-bd9e-f232311ccab8')
  // .byLanguageCodename('es-ES')
  .byWorkflowStepId('16221cc2-bd22-4414-a513-f3e555c0fc93')
  .toPromise();

Response

Status (204)
The workflow step of the specified language variant was updated.
Empty response

Example responses

400
404
{
  "request_id": "385bc5fe-cc64-4924-bee1-78f271d4bbc5",
  "error_code": 215,
  "message": "Cannot change workflow step to Published. If you want to publish a language variant via the Management API, use the '/publish' endpoint instead."
}

Delete a language variant

Deletes a specific language variant. If you want to delete all language variants of a content item, see how to Delete a content item.
When you delete the last variant of a content item, the whole content item is deleted.
DELETE
https://manage.kontent.ai/v2/projects/{environment_id}/items/{item_identifier}/variants/{language_identifier}

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
  .deleteLanguageVariant()
  .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 deleted.
Empty response

Example responses

404
{
  "request_id": "00000000-0000-0000-c813-0080000000c3",
  "error_code": 103,
  "message": "The requested content item variant was not found."
}
Copyright © 2025 Kontent.ai. All rights reserved.
  • Web
  • Privacy policy
  • Cookies policy
  • Consent settings
  • Security
  • GDPR