• Cheat sheets
  • Documentation
  • API reference
  • Product updates
  • Sign in
Kontent.ai Learn
  • Try Kontent.ai
  • Plan
  • Set up
  • Model
  • Develop
  • Create
Copyright © 2025 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
    • Generate models
    • Resolve rich text
    • Resolve linked content
  • Decide navigation and URLs
  • Environments
  • Get Developer Certification

Turn your content types into strongly typed models

Jan Cerman
15 minutes
Delivery API
Download PDF
  • TypeScript
  • .NET
  • Java
0% complete
Improve your development experience by using strongly typed models based on your Kontent.ai content types.

Life without strongly typed models

When getting content directly from the Delivery REST API, you receive content items as JSON objects. Your app then needs to parse the JSON to display your content. For example, to access the Headline element in a content item, you’d use a notation like this response.data.item.elements.headline.value.
In real-life scenarios, this approach might be cumbersome because it requires you to remember the JSON structure of your content items, and the codenames of your elements, types, languages, and other entities.   To make this easier, use a Delivery SDK (the JS version or the .NET version) to map the retrieved content items to their strongly typed models.

Build your app with strongly typed models

The video below, by Cameron Tape, our Senior Technical Support Engineer, shows how to set up a TypeScript-based web app using Next.js and install the JavaScript Delivery SDK and the model generator to get and display content from Kontent.ai.

Use strongly typed models

This practice has several advantages:
  • type safety during compile-time
  • convenience (IntelliSense remembers content type properties for you)
  • support of type-dependent functionalities
Each model corresponds to a content type in your Kontent.ai project.
A strongly typed model provides type-safe access to:
  • All elements defined within a specific content type
  • System fields such as type, workflow, language, and more
The following example is a strongly typed model of the Homepage content type.

Generate models

Use the model generator to create strongly typed models from your Kontent.ai project by providing your environment ID.

Get strongly typed content

With your models defined and added to your application, you can use them when retrieving items from Kontent.ai.
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
  • Java
  • Java
  • Java
We recommend that you generate the models using the Java model generator.
// Tip: Find more about Java SDK at https://kontent.ai/learn/java
import kontent.ai.delivery.Asset;
import kontent.ai.delivery.ContentItemMapping;
import kontent.ai.delivery.ElementMapping;
import kontent.ai.delivery.System;
import java.lang.String;
import java.util.List;

/**
 * This code was generated by a <a href="https://github.com/kontent-ai/java-packages/tree/master/delivery-sdk-generators">kontent-generators-java tool</a>
 *
 * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
 * For further modifications of the class, create a separate file and extend this class.
 */
@ContentItemMapping("homepage")
public class Homepage {
    @ElementMapping("body_text")
    String bodyText;

    @ElementMapping("headline")
    String headline;

    @ElementMapping("picture")
    List<Asset> picture;

    System system;

    public String getBodyText() {
        return bodyText;
    }

    public void setBodyText(String bodyText) {
        this.bodyText = bodyText;
    }

    public String getHeadline() {
        return headline;
    }

    public void setHeadline(String headline) {
        this.headline = headline;
    }

    public List<Asset> getPicture() {
        return picture;
    }

    public void setPicture(List<Asset> picture) {
        this.picture = picture;
    }

    public System getSystem() {
        return system;
    }

    public void setSystem(System system) {
        this.system = system;
    }
}
// Find instructions on using the Java model generator at https://github.com/kontent-ai/java-packages/tree/master/delivery-sdk-generators
import com.squareup.javapoet.JavaFile
import kontent.ai.delivery.DeliveryClient
import kontent.ai.delivery.DeliveryOptions
import kontent.ai.delivery.generators.CodeGenerator

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath('ai.kontent:kontent-delivery-generators:latest.release')
    }
}

// showcase task
task generateModels {
    doLast {

        // The most complex solution, you could configure the client as you want
        // i.e. set preview API key
        DeliveryOptions options = new DeliveryOptions();
        options.setProjectId("975bf280-fd91-488c-994c-2f04416e5ee3");
        DeliveryClient client = new DeliveryClient(options);

        CodeGenerator generator = new CodeGenerator(
            options.getProjectId(),
            'ai.kontent.test.springapp.models',
            file('src/main/java')
        );
        List<JavaFile> sources = generator.generateSources(client);
        generator.writeSources(sources);
    }
}
// Tip: Find more about Java SDK at https://kontent.ai/learn/java
import kontent.ai.delivery.*;

// Initializes a DeliveryClient
DeliveryClient client = new DeliveryClient("8d20758c-d74c-4f59-ae04-ee928c0816b7");

// Tip: Create strongly typed models according to https://kontent.ai/learn/strongly-typed-models
// Registers the model class for navigation items
client.registerType(Homepage.class);

CompletionStage<Homepage> homepageResult = client.getItem("hello_caas_world", Homepage.class);
// Use homepageResult
// homepageResult.thenAccept(homepage -> System.out.println(homepage.getHeadline())
  • Life without strongly typed models
  • Build your app with strongly typed models
  • Use strongly typed models
  • Generate models
  • Get strongly typed content