---
title: "Contentstack Delivery .Net SDK"
description: "Documentation for Dot net Delivery SDK"
url: "https://www.contentstack.com/docs/developers/sdks/content-delivery-sdk/dot-net/reference"
product: "Contentstack"
doc_type: "guide"
audience:
  - developers
  - admins
version: "current"
last_updated: "2025-09-15"
---

# Contentstack Delivery .Net SDK

## Contentstack - .NET Delivery SDK

## .NET SDK for Contentstack's Content Delivery API

Contentstack is a headless CMS with an API-first approach. It is a CMS that developers can use to build powerful cross-platform applications in their favorite languages. Build your application frontend, and Contentstack will take care of the rest.

For more information, you can check out the GitHub page of our [.NET Delivery SDK](https://github.com/contentstack/contentstack-dotnet).

## Prerequisites

To get started with C#, you will need:

*   .Net platform
*   IDE (Visual Studio)
*   NuGet.

## SDK installation and setup

The .Net SDK provided by contentstack.io is available for Xamarin, Windows Phone and legacy .Net applications. You can integrate contentstack with your application by following these steps.

Open the terminal and install the contentstack module via 'Package Manager' command

PM> Install-Package contentstack.csharp  

And via ‘.Net CLI’

dotnet add package contentstack.csharp

To use the module in your application, you need to first Add Namespace to your class

using Contentstack.Core; // ContentstackClient  
using Contentstack.Core.Models; // Stack, Query, Entry, Asset, ContentType, ContentstackCollection  
using Contentstack.Core.Configuration; // ContentstackOptions

## Quickstart in 5 mins

## Initialize SDK

You will need to specify the API key, Access token, and Environment Name of your stack to initialize the SDK:

// Initialize the Contentstack 
ContentstackClient client = new ContentstackClient("api\_key", "delivery\_token", "enviroment\_name");

or:

ContentstackOptions options = new ContentstackOptions()
{
	ApiKey = "<api\_key>",
	DeliveryToken = "<access\_token>",
	Environment = "<environment>"
}
ContentstackClient client = new ContentstackClient(options);

Once you have initialized the SDK, you can start getting content in your app  
**For Setting other regions**:

Refer the below code if you want to use the Europe, Australia, Azure North America, Azure Europe, GCP North America, or GCP Europe region.

ContentstackOptions options = new ContentstackOptions()
{
	ApiKey = "<api\_key>",
	DeliveryToken = "<delivery\_token>",
	Environment = "<environment>",
	Region = ContentstackRegion.EU
}
ContentstackClient client = new ContentstackClient(options);

Once you have initialized the SDK, you can start getting content in your app.

**For Setting the Early Access Header:**

Integrating EarlyAccess headers into the ContentstackOptions grants access to features included in the early access program.

ContentstackOptions options = new ContentstackOptions() {
    ApiKey = "<api\_key>",
    DeliveryToken = "<delivery\_token>",
    Environment = "<environment>",
    Branch = "<branch>"
    EarlyAccess = new string \[\] {"Taxonomy", "Teams", "Terms", "LivePreview"}
};

ContentstackClient client = new ContentstackClient(options);

**Parameters:**

Name

Type

Description

EarlyAccess (Optional)

Array of Strings

Array of header strings for early access features.

## Basic Queries

#### Get a Single Entry

To retrieve a single entry from a content type, use the code snippet given below:

ContentstackClient client = new ContentstackClient("api\_key", "delivery\_token", "enviroment\_name");  
Entry entry = client.ContentType("product").Entry("entry\_uid");  
entry.Fetch<Product>().ContinueWith((t) => {   
    if (!t.IsFaulted) {   
        Console.WriteLine("entry:" + t.Result);    
    }   
});  

#### Get Multiple Entries

To retrieve multiple entries of a particular content type, use the code snippet given below:

ContentstackClient client = new ContentstackClient("api\_key", "delivery\_token", "enviroment\_name");  
Query query = client.ContentType("product").Query();   
query.Where("title", "welcome");   
query.IncludeSchema();   
query.IncludeCount();   
query.ToJSON();   
query.Find<Product>().ContinueWith((t) => {   
    if (!t.IsFaulted) {   
        ContentstackCollection<Product> result = t.Result;   
        Console.WriteLine("result" + result.items);   
    }   
});

**Note:** By default, the limit for response details per request is 100, with the maximum limit set at 250.

## Paginating Responses

In a single instance, the[Get Multiple Entries](https://www.contentstack.com/docs/developers/dot-net/get-started-with-dot-net-delivery-sdk/#get-multiple-entries)query will **retrieve only the first 100 items**of the specified content type. You can paginate and retrieve the rest of the items in batches using the**skip**and**limit** parameters in subsequent requests.

ContentstackClient client = new ContentstackClient("api\_key", "delivery\_token", "enviroment\_name");
Query query = client.ContentType("blog").Query();
query.Skip(20);
query.Limit(20); 
query.Find<Blog>().ContinueWith((t) => { 
    if (!t.IsFaulted) { 
         ContentstackCollection<Blog> result = t.Result; 
         Console.WriteLine("result" + result); 
    } 
});

## ContentstackOptions

Represents a set of options to configure a Stack.

## ContentstackOptions

The api key used when communicating with the Contentstack API.

The access token used when communicating with the Contentstack API.

The delivery token used when communicating with the Contentstack API.

The environment used when communicating with the Contentstack API.

The Branch used to set Branch for the Contentstack API.

The Host used to set host url for the Contentstack API.

The Region used to set region for the Contentstack API.

The Version number for the Contentstack API.

The Live preview configuration for the Contentstack API.

The api key used when communicating with the Contentstack API.

The access token used when communicating with the Contentstack API.

The delivery token used when communicating with the Contentstack API.

The environment used when communicating with the Contentstack API.

You can choose from seven regions namely, NA, EU, AU, Azure NA, Azure EU, GCP NA and GCP EU.

The Host used to set host url for the Contentstack API.

The Version number for the Contentstack API.

The Branch used to set Branch for the Contentstack API.

The Live preview configuration for the Contentstack API.

## LivePreviewConfig

Configuration for enabled live preview to get live content data

## LivePreviewConfig

To enable live preview

Host for getting live preview content

Management Token for the stack to get content

To enable live preview

Host for getting live preview content

Preview Token for the stack to get content

## ContentstackRegion

### Fields

Name

Description

EU

To specify the EU region.

US

To specify the US region.

AU

To specify the AU region.

AZURE\_NA

To specify the AZURE NA region

AZURE\_EU

To specify the AZURE EU region

GCP\_NA

To specify the GCP NA region

GCP\_EU

To specify the GCP EU region

## ContentstackRegion

## ContentstackCollection

## ContentstackCollection<T>

The total number of items available.

The System.Collections.Generic.IEnumerable<T> of items to be serialized from the API response.

The maximum number of items returned in this result.

The number of items skipped in this resultset.

The total number of items available.

The System.Collections.Generic.IEnumerable<T> of items to be serialized from the API response.

The maximum number of items returned in this result.

The number of items skipped in this resultset.

## ContentstackException

The ContentstackError class is abstraction of general exception class.

## ContentstackException

This is error message.

Set of errors in detail.

Contentstack error code.

Contentstack error message

Set of errors in detail.

## SyncStack

Represents the result of a sync operation.

## SyncStack

Readonly property contains all the Contents

Readonly property for paginating sync

Readonly property to delta sync.

Readonly property to check totalCount

Readonly property contains all the Contents

Readonly property for paginating sync

Readonly property to delta sync.

Readonly property to check totalCount

## SyncType

The different types of items you can request a sync for.

### Fields

Name

Description

All

Only published entries and assets

AssetDeleted

Only deleted assets

AssetPublished

Only published assets

AssetUnpublished

Only unpublished assets

ContentTypeDeleted

Only deleted Content-Types entries

Default

This will bring all published entries and published assets

EntryDeleted

Only deleted entries

EntryPublished

Only published entries

EntryUnpublished

Only unpublished entries

## SyncType

## ContentstackClient

Initialize an instance of ‘Stack’

## ContentstackClient

Initializes an instance of the **ContentstackClient** class.

API Key of your stack on Contentstack.

Delivery token of your stack on Contentstack.

Environment from where you want to fetch content.

Specifies the base URL for the Contentstack API.

**Default**: cdn.contentstack.io

Specifies the database region for your stack. You can choose from the following: NA, EU, AU, Azure NA, Azure EU, and GCP NA.

**Default**: ContentstackRegion.US

Specifies the version of the Contentstack API to use.

**Default:** v3

used to get stack details via class ContentstackOptions to create client.

## GetVersion

Get url base version

## Asset

Represents a Asset. Creates Asset Instance.

This is Asset Uid of an Asset.

## AssetLibrary

Represents a AssetLibrary. Creates AssetLibrary Instance.

## ContentType

Represents a ContentType. Creates ContenntType Instance.

ContentType UID.

## GetApplicationKey

Get stack application key

## GetAccessToken

Get stack access token

## GetEnvironment

Get stack environment

## GetContentTypes

This method returns comprehensive information of all the content types of a particular stack in your account.

dictionary of additional parameter

## LivePreviewQuery

To add live preview Query for Contentstack preview call

Query parameter containing hash and content type UID

## RemoveHeader

Remove header key.

key to be remove from header

## SyncToken

Syncs the token.

Sync token.

## SyncRecursive

Syncs the recursive language.

Locale

Sync type.

Content type uid.

Start from.

## SyncPaginationToken

Syncs the pagination token.

Pagination token.

## ContentstackClient

Gets or sets the settings that should be used for deserialization.

Gets or sets the settings that should be used for deserialization.

## Asset

Creates an instance of Assets. Use a UID to fetch a specific asset, or use the AssetLibrary class to retrieve all assets.

## SetHeader

To set headers for Contentstack rest calls.

header name.

header value against given header name.

## RemoveHeader

Remove header key.

key to be remove from header

## GetCreateAt

Get created at time.

## GetCreatedBy

Get created by user uid

## GetUpdateAt

Get updated at time.

## GetUpdatedBy

Get Update by user uid

## GetDeleteAt

Get deleted at time.

## GetDeletedBy

Get Deleted by user uid

## IncludeBranch

Include branch for publish content.

## IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

## IncludeMetadata

The includeMetadata method will add the meta information to the response.

## Fetch

fetches the latest version of a specific asset of a particular stack.

## AssetFields

The assetFields method specifies which asset-related fields are included in the API response when fetching an entry or querying entries.

**Note:** The assetFields method is currently supported only in the North America (NA) region.

Asset field names to include in the response.

## setLocale

The setLocale method sets the locale for fetching a single asset. The API returns the asset with localized metadata (for example, title and description), along with the locale and publish\_details.locale fields in the response.

Locale code used to fetch the asset.

## Asset

Asset uid

Asset URL

File Name for asset

File size for asset

Tags assign to asset

Asset uid

Asset URL

Asset Description

File name for Asset

File size of asset

Tags assign to asset

## AssetLibrary

Get all asset from Stack

## SetHeader

To set headers for Contentstack rest calls.

header name.

header value against given header name.

## RemoveHeader

Remove header key.

key to be remove from header

## SortWithKeyAndOrderBy

Sorts the assets in the given order on the basis of the specified field.

Field UID

ordering for sorting from key

## SetLocale

Sets the locale.

Locale to be fetch

## Skip

The number of objects to skip before returning any.

No of objects to skip from returned objects.

## Limit

A limit on the number of objects to return.

No of objects to limit.

## IncludeBranch

Include branch for publish content.

## IncludeCount

This method also includes the total number of assets returned in the response.

## IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

## IncludeMetadata

The includeMetadata method will add the meta information to the response.

## Except

Specifies list of field uids that would be excluded from the response.

## Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

## IncludeRelativeUrls

This method includes the relative url of assets.

## FetchAll

Execute a AssetLibrary and Caches its result (Optional)

## Count

Total count of the asset in specified Stack

## Query

AssetLibrary Query allows you to retrieve assets that match specific query criteria, returning a comprehensive list of assets that meet the defined parameters.

The query contains the parameters needed to fetch assets and supports nested structures when required.

## Tags

The tags method retrieves all assets associated with the specified tag

An array of tag strings used to filter assets; returns assets matching any specified tag. If null or empty, no tag filtering is applied.

## AssetLibrary

## ContentType

ContentType provides Entry and Query instance.

## SetHeader

To set headers for Contentstack rest calls.

header name.

header value against given header name.

## RemoveHeader

Remove header key.

key to be remove from header

## Fetch

This method returns the complete information, of a specific content type.

Dictionary of additional parameter

## Entry

Represents a Entry. Create Entry Instance.

Set entry uid.

## Query

Represents a Query Create Query Instance.

## ContentType

Content type uid

Content type uid

## Entry

An initializer is responsible for creating Entry object.

## GetContentType

Get contentType name.

## GetUid

Get entry uid

## GetTitle

Get entry title

## GetTags

Returns tags of this entry.

## GetMetadata

Get metadata of entry.

## GetHTMLText

Get html text for markdown data type

field\_uid as key.

## GetMultipleHTMLText

Get html text for markdown data type which is multiple true

Field\_uid as key.

## GetCreateAt

Get value of creation time of entry.

## GetCreatedBy

Get uid who created this entry.

## GetUpdateAt

Get value of updating time of entry.

## GetUpdatedBy

Get uid who updated this entry.

## GetDeletedAt

Get value of deleting time of entry.

## GetDeletedBy

Get uid who created this entry.

## Get

Get object value for key.

Key to get value

## SetCachePolicy

To set cache policy using Entry instance.

CachePolicy instance

## SetHeader

To set headers for Contentstack rest calls.

header name.

header value against given header name.

## RemoveHeader

Remove header key.

key to be remove from header

## SetLocale

Sets the locale.

Locale to fetch entry

## SetUid

Assigns a uid to current instance of an entry.

Uid for entry to fetch

## SetTags

Assign a tag(s) for this Entry.

Collection of tags.

## IncludeReferenceContentTypeUID

This method also includes the content type UIDs of the referenced entries returned in the response.

## IncludeReference

Add a constraint that requires a particular reference key details.

Array key that to be constrained.

## IncludeReference

Add a constraint that requires a particular reference key details.

Key that to be constrained.

## IncludeOnlyReference

Specifies an array of except keys that would be excluded in the response.

Array of the only reference keys to be included in response.

Key who has reference to some other class object.

## IncludeExceptReference

Specifies an array of except keys that would be excluded in the response.

Array of the except reference keys to be excluded in response.

Key who has reference to some other class object.

## IncludeEmbeddedItems

Include Embedded Objects (Entries and Assets) along with entry/entries details.

## IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

## IncludeMetadata

The includeMetadata method will add the meta information to the response.

## IncludeBranch

Include branch for publish content.

## Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

Array of the only reference keys to be included in response.

## Except

Specifies list of field uids that would be excluded from the response.

Field uid which get excluded from the response.

## ToJson

Get key/value pairs in json of current instance.

## Fetch

Fetches the latest version of the entries from Contentstack.io content stack

## Variants

The variants method retrieves details of a specific entry variant or an array of entry variants based on the applied query.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in the x-cs-variant-uid header.

List of variants

## assetFields

The assetFields method specifies which asset-related fields are included in the API response when fetching an entry or querying entries.

**Regional Behavior**

This method is currently supported only for stacks located in the **North America (NA)** region.

**For stacks in the Europe (EU) or Azure North America (Azure NA) regions:**

*   The API ignores the asset\_fields\[\] parameter.
*   The response returns the default asset metadata.
*   The system does not return an error or warning message if the parameter is used.

If you are working in these regions, ensure your application logic accounts for the full default metadata response rather than a filtered set of fields.

Asset field names to include in the response.

## Entry

Set key/value attributes of Metadata.

Set key/value attributes of an current entry instance.

Set array of Tags

Title of an entry

This is Entry Uid of an entry.

Set key/value attributes of Metadata.

Set key/value attributes of an current entry instance.

Set array of Tags

Title of an entry

This is Entry Uid of an entry.

## Global Fields

A Global field is a reusable field or group of fields that you define once and reuse across any content type in your stack. This helps you avoid recreating the same set of fields multiple times, saving time and effort.

## IncludeGlobalFieldSchema

The IncludeGlobalFieldSchema method fetches the complete schema of a specified Global Field, including all nested fields and configurations

## SetHeader

The SetHeader method sets custom headers when fetching a Global Field, allowing you to pass additional information such as authentication tokens, localization settings, or custom metadata with the API request.

## fetch

The fetch method retrieves the details of the specified global field.

## Global Field Query

A Global field is a reusable field or group of fields that you define once and reuse across any content type in your stack. This helps you avoid recreating the same set of fields multiple times, saving time and effort.

## find

The find method retrieves all Global Fields from your stack using a Global Field query, providing access to the complete collection of Global Field data.

## IncludeGlobalFieldSchema

The IncludeGlobalFieldSchema method includes the complete schema for each Global Field when fetching all Global Fields using a query.

## Query

A class that defines a query that is used to query for Entry instance.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in thex-cs-variant-uidheader.

## AddQuery

Add a custom query against specified key.

field uid.

field value

## IncludeCount

Retrieve count and data of objects in result.

## IncludeBranch

Include branch for publish content.

## IncludeFallback

Include fallback locale publish content, if specified locale content is not publish.

## IncludeMetadata

The includeMetadata method will add the meta information to the response.

## IncludeEmbeddedItems

Include Embedded Objects (Entries and Assets) along with entry/entries details.

## IncludeOnlyReference

Specifies an array of except keys that would be excluded in the response.

Array of the only reference keys to be included in response.

Key who has reference to some other class object.

## IncludeExceptReference

Specifies an array of except keys that would be excluded in the response.

Array of the except reference keys to be excluded in response.

Key who has reference to some other class object.

## IncludeReference

Add a constraint that requires a particular reference key details.

Key that to be constrained.

## IncludeReferenceContentTypeUID

This method also includes the content type UIDs of the referenced entries returned in the response.

## IncludeReference

Add a constraint that requires a particular reference key details.

Array key that to be constrained.

## ReferenceIn

Retrieve entries based reference in query

They key to constraint on

Query object

## ReferenceNotIn

Retrieve entries based reference not in query

The key to constraint on

Query object

## Regex

Add a regular expression constraint for finding string values that match the provided regular expression.

The key to be constrained.

The regular expression pattern to match.

Any of the following supported Regular expression modifiers.

*   use _i_ for case-insensitive matching.
*   use _m_ for making dot match newlines.
*   use _x_ for ignoring whitespace in regex

## RemoveQuery

Remove provided query key from custom query if exist.

Query name to remove.

## SetCachePolicy

To set cache policy using Query instance.

CachePolicy instance

## SetLocale

Sets the locale.

Locale to fetch entry

## SetHeader

To set headers for Contentstack rest calls.

header name.

header value against given header name.

## RemoveHeader

Remove header key.

key to be remove from header

## WhereTags

Include tags with which to search entries.

Array of tags you want to match in the entries

## Skip

The number of objects to skip before returning any.

No of objects to skip.

## Limit

A limit on the number of objects to return.

No of objects to limit.

## Ascending

Sort the results in ascending order with the given key.

The key to order by.

## Descending

Sort the results in descending order with the given key.

The key to order by.

## And

Combines all the queries together using AND operator

List of Query instances on which AND query executes.

## Or

Add a constraint to fetch all entries which satisfy any queries.

List of Query instances on which OR query executes.

## Except

Specifies list of field uids that would be excluded from the response.

field uid which get excluded from the response.

## Only

Specifies an array of 'only' keys in BASE object that would be 'included' in the response.

Array of the 'only' keys to be included in response.

## Exists

Add a constraint that requires, a specified key exists in response.

The key to be constrained.

## NotExists

Add a constraint that requires, a specified key does not exists in response.

The key to be constrained.

## NotEqualTo

Add a constraint to the query that requires a particular key's entry to be not equal to the provided value.

the key to be constrained.

The object that must not be equaled.

## Where

Add a constraint to the query that requires a particular key entry's value not be contained in the provided array.

the key to be constrained.

Field value which get included from the response.

## NotContainedIn

Add a constraint to the query that requires a particular key entry's value not be contained in the provided array.

the key to be constrained.

The list of values the key object should not be.

## ContainedIn

Add a constraint to the query that requires a particular key's entry to be contained in the provided array.

the key to be constrained.

The possible values for the key's object.

## LessThanOrEqualTo

Add a constraint to the query that requires a particular key entry to be less than or equal to the provided value.

the key to be constrained.

The value that provides an upper bound or equal.

## LessThan

Add a constraint to the query that requires a particular key entry to be less than the provided value.

the key to be constrained.

The value that provides an upper bound.

## GreaterThanOrEqualTo

Add a constraint to the query that requires a particular key entry to be greater than or equal to the provided value.

the key to be constrained.

The value that provides a lower bound or equal.

## GreaterThan

Add a constraint to the query that requires a particular key entry to be greater than the provided value.

the key to be constrained.

The value that provides an lower bound.

## Find

Execute a Query and Caches its result (Optional)

## FindOne

Execute a Query and Caches its result (Optional)

## Count

Retrieve only count of entries in result.

## Variants

The variants method retrieves details of a specific entry variant or an array of entry variants based on the applied query.

When Personalize creates a variant in the CMS, it assigns a "Variant Alias" to identify that specific variant. When fetching entry variants using the Delivery API, you can pass variant aliases in place of variant UIDs in the x-cs-variant-uid header.

List of variants

## Query

## Taxonomy

[Taxonomy](/docs/developers/taxonomy/about-taxonomy) helps you categorize pieces of content within your stack to facilitate easy navigation and retrieval of information.

**Note:** All methods in the Query section are applicable for taxonomy-based filtering as well.

## EqualAndBelow

The EqualAndBelow method retrieves all entries for a specific taxonomy that match a specific term and its descendant terms, requiring only the target term.

**Note:** This query is applicable for the stack.Taxonomies() and stack.ContentType('uid').Query() methods.

Enter the UID of the taxonomy

Enter the UID of the term

Enter the level

## Below

The Below method retrieves all entries for a specific taxonomy that match all of their descendant terms by specifying only the target term and a specific level.

**Note:** If you don't specify the level, the default behavior is to retrieve terms up to level 10.

Enter the UID of the taxonomy

Enter the UID of the term

Enter the level

## EqualAndAbove

The EqualAndAbove method retrieves all entries for a specific taxonomy that match a specific term and all its ancestor terms, requiring only the target term and a specified level.

**Note:** If you don't specify the level, the default behavior is to retrieve terms up to level 10.

Enter the UID of the taxonomy

Enter the UID of the term

Enter the level

## Above

The Above method retrieves all entries for a specific taxonomy that match only the parent terms of a specified target term, excluding the target term itself and a specified level.

**Note:** If you don't specify the level, the default behavior is to retrieve terms up to level 10.

Enter the UID of the taxonomy

Enter the UID of the term

Enter the level