• Cheat sheets
  • Documentation
  • API reference
  • Product updates
  • Sign in
Kontent.ai Learn
  • Try Kontent.ai
  • Plan
  • Set up
  • Model
  • Develop
  • Create
Copyright © 2024 Kontent.ai. All rights reserved.
  • Web
  • Privacy policy
  • Cookies policy
  • Consent settings
  • Security
  • GDPR
  • Overview
  • Manage API keys
  • Hello World
  • Hello Web Spotlight
  • Try sample apps
  • Build apps
  • Decide navigation and URLs
  • Environments
    • Overview
    • Migrate from other systems
    • Automate migrations with CLI
    • Import content via API
  • Get Developer Certification

Import linked content

Jan Cerman
9 minutes
Download PDF
  • TypeScript
  • .NET
  • REST
0% complete
Content items often contain references to other content items in linked items elements or rich text elements. This lesson shows you how to import these references to Kontent.ai.

How to think about links between your content

To avoid having to import objects in a specific order, use external IDs to reference content that’s not yet imported. This solves problems with circular dependencies and lets you reference non-existent content. Here is how it works:
  1. Define external IDs for all content items and assets you want to import in advance.
  2. When referencing another content item or asset, use its external ID.
  3. Import your content using the upsert methods with an external ID. The system will resolve all references.
This way, you can import your content in any order and run the import process repeatedly to keep your project up to date. In the example below, you will import two content items that reference each other in their Linked items elements.

Example scenario

Say you want to import two related content items: Donate with us and On Roasts articles. Each content item references the other in the Related articles Linked items element. The result will have the following structure:

1. Define external IDs

External IDs are string-based identifiers of items and assets defined by you. You can define new IDs or reuse IDs from the original storage system you are importing content from. It's up to you to ensure no two objects have the same external ID. See more details on using external IDs for imported content. For large projects, consider using GUIDs. To keep things simple here, use 123 and 456 for your two articles.

2. Use external IDs to reference items

When defining the Linked items elements, use external IDs to reference the other content item:
  • JSON

3. Import content

To create a content item, send a PUT request to the /items/external-id/<YOUR_ITEM_EXTERNAL_ID> endpoint. In the body of the request, specify the item's name and content type. See more details on upserting content items.
  • cURL
Import content by upserting a language variant. Send a PUT request to the endpoint specifying the language variant you want to insert or update. In the body of the request, specify the values of individual content elements.
Notice that you are referencing the Donate with us item even though you haven't imported it yet. Such references are not visible in the UI.

Second content item

Repeat the same process with the Donate with us article. Start by creating the content item:
This resolves the reference in the On Roasts item. Lastly, import the content of the Donate with us item by upserting its language variant:
Both references are now resolved. To verify, you can view the imported content items in Kontent.ai:

Validate imported content

After your import process is finished, we recommend that you validate your project's content for inconsistencies. For example, if you forget to add the second item, the validation will report that you’re referencing a nonexistent object. Project validation can also reveal other issues like references to missing assets or empty required elements.
Sign in with your Kontent.ai credentials or sign up for free to unlock the full lesson, track your progress, and access exclusive expert insights and tips!
Sign in
  • cURL
  • cURL
  • cURL
"related_articles": [
  {
    "external_id": "456"
  }
]
The reference is not visible inside the Kontent.ai UI, but it still exists. It will resolve itself once you import the second content item.
The Donate with us and On Roasts articles link to one another within their Related articles elements.In Kontent.ai, select Content & assets to view the imported content items.
  • Content model
  • Content items
  • Linked content
  • Assets
  • Rich text
curl --request PUT \
  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/123 \
  --header 'Authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \
  --header 'Content-type: application/json' \
  --data '
{  
  "name":"On Roasts",
  "type":{  
    "codename":"article"
  }
}'
curl --request PUT \
  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/123/variants/codename/en-US \
  --header 'authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \
  --header 'content-type: application/json' \
  --data '
{  
  "elements":{  
    "title":"On Roasts",
    "related_articles":[  
      {
        "external_id":"456"
      }
    ]
  }
}'
curl --request PUT \
  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/456 \
  --header 'Authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \
  --header 'Content-type: application/json' \
  --data '
{  
  "name":"Donate with us",
  "type":{  
    "codename":"article"
  }
}'
curl --request PUT \
  --url https://manage.kontent.ai/v2/projects/KONTENT_AI_ENVIRONMENT_ID/items/external-id/456/variants/codename/en-US \
  --header 'authorization: Bearer KONTENT_AI_MANAGEMENT_API_KEY' \
  --header 'content-type: application/json' \
  --data '
{  
  "elements":{  
    "title":"Donate with us",
    "related_articles":[  
      {  
        "external_id":"123"
      }
    ]
  }
}'
Rich text links See how to import rich text to learn how to link items in rich text elements.
Best practice: Upsert by external ID You can use a simple POST to /items request to add the content item. But using an UPSERT operation and defining an external ID for your item has advantages and makes the import process much smoother:
  • You can run the same request repeatedly. If the item doesn't exist, it will be created. If it does, it will be updated.
  • You can reference or link to your item, even if it hasn't been imported yet (and has no internal ID or codename). You might have other content items that reference this one in Rich text or Linked items elements. But if you are using external IDs you don't need to worry about the order in which the content items are imported.
  • How to think about links between your content
  • Example scenario
  • 1. Define external IDs
  • 2. Use external IDs to reference items
  • 3. Import content
  • Validate imported content