Strapi · Schema
Strapi Content Entry
Represents a content entry in the Strapi headless CMS. Content entries are instances of content-types and contain the field values defined by the content-type schema. In Strapi 5, entry attributes are directly accessible at the first level of the data object (flattened response format).
CMSContent ManagementHeadless CMSNode.jsOpen Source
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | The unique integer identifier for the content entry |
| documentId | string | The unique document identifier for the content entry, used as the primary key in REST API operations |
| createdAt | string | The ISO 8601 timestamp when the entry was created |
| updatedAt | string | The ISO 8601 timestamp when the entry was last updated |
| publishedAt | stringnull | The ISO 8601 timestamp when the entry was published, or null if the entry is in draft status. Only present when Draft and Publish is enabled on the content-type. |
| locale | stringnull | The locale code of the entry (e.g., en, fr, de). Only present when internationalization (i18n) is enabled on the content-type. |
| localizations | array | An array of localized versions of this entry. Only present when internationalization is enabled and the populate parameter includes localizations. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://strapi.io/schemas/strapi/content-entry.json",
"title": "Strapi Content Entry",
"description": "Represents a content entry in the Strapi headless CMS. Content entries are instances of content-types and contain the field values defined by the content-type schema. In Strapi 5, entry attributes are directly accessible at the first level of the data object (flattened response format).",
"type": "object",
"required": ["id", "documentId"],
"properties": {
"id": {
"type": "integer",
"description": "The unique integer identifier for the content entry"
},
"documentId": {
"type": "string",
"description": "The unique document identifier for the content entry, used as the primary key in REST API operations"
},
"createdAt": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the entry was created"
},
"updatedAt": {
"type": "string",
"format": "date-time",
"description": "The ISO 8601 timestamp when the entry was last updated"
},
"publishedAt": {
"type": ["string", "null"],
"format": "date-time",
"description": "The ISO 8601 timestamp when the entry was published, or null if the entry is in draft status. Only present when Draft and Publish is enabled on the content-type."
},
"locale": {
"type": ["string", "null"],
"description": "The locale code of the entry (e.g., en, fr, de). Only present when internationalization (i18n) is enabled on the content-type.",
"pattern": "^[a-z]{2}(-[A-Z]{2})?$"
},
"localizations": {
"type": "array",
"description": "An array of localized versions of this entry. Only present when internationalization is enabled and the populate parameter includes localizations.",
"items": {
"$ref": "#"
}
}
},
"additionalProperties": true,
"$defs": {
"ContentTypeSchema": {
"type": "object",
"title": "Content Type Schema",
"description": "Defines the structure of a content-type in Strapi, including its display name, kind, and attribute definitions.",
"required": ["displayName", "singularName", "pluralName", "kind"],
"properties": {
"displayName": {
"type": "string",
"description": "The human-readable display name of the content-type shown in the admin panel"
},
"singularName": {
"type": "string",
"description": "The singular name used internally and in the API identifier",
"pattern": "^[a-z][a-z0-9-]*$"
},
"pluralName": {
"type": "string",
"description": "The plural name used in REST API route paths",
"pattern": "^[a-z][a-z0-9-]*$"
},
"kind": {
"type": "string",
"description": "Whether this content-type is a collection (multiple entries) or single (one entry)",
"enum": ["collectionType", "singleType"]
},
"draftAndPublish": {
"type": "boolean",
"description": "Whether Draft and Publish is enabled for this content-type",
"default": true
},
"attributes": {
"type": "object",
"description": "The field definitions for the content-type, keyed by attribute name",
"additionalProperties": {
"$ref": "#/$defs/Attribute"
}
}
}
},
"Attribute": {
"type": "object",
"title": "Content Type Attribute",
"description": "Defines a single field attribute within a content-type schema.",
"required": ["type"],
"properties": {
"type": {
"type": "string",
"description": "The data type of the attribute",
"enum": [
"string",
"text",
"richtext",
"blocks",
"email",
"password",
"uid",
"integer",
"biginteger",
"float",
"decimal",
"boolean",
"date",
"time",
"datetime",
"timestamp",
"json",
"enumeration",
"media",
"relation",
"component",
"dynamiczone"
]
},
"required": {
"type": "boolean",
"description": "Whether this field is required",
"default": false
},
"unique": {
"type": "boolean",
"description": "Whether this field must have unique values",
"default": false
},
"private": {
"type": "boolean",
"description": "Whether this field is hidden from API responses",
"default": false
},
"default": {
"description": "The default value for this field"
},
"minLength": {
"type": "integer",
"description": "Minimum character length for string-type fields",
"minimum": 0
},
"maxLength": {
"type": "integer",
"description": "Maximum character length for string-type fields",
"minimum": 1
},
"min": {
"type": "number",
"description": "Minimum value for numeric fields"
},
"max": {
"type": "number",
"description": "Maximum value for numeric fields"
},
"enum": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allowed values for enumeration-type fields"
},
"multiple": {
"type": "boolean",
"description": "Whether multiple files are allowed for media-type fields"
},
"allowedTypes": {
"type": "array",
"items": {
"type": "string",
"enum": ["images", "files", "videos", "audios"]
},
"description": "Allowed file types for media-type fields"
},
"relation": {
"type": "string",
"description": "The relation type for relation-type fields",
"enum": [
"oneToOne",
"oneToMany",
"manyToOne",
"manyToMany"
]
},
"target": {
"type": "string",
"description": "The target content-type UID for relation-type fields"
},
"component": {
"type": "string",
"description": "The component UID for component-type fields"
},
"repeatable": {
"type": "boolean",
"description": "Whether the component is repeatable (array of components)"
},
"components": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allowed component UIDs for dynamic zone fields"
}
}
},
"PaginationMeta": {
"type": "object",
"title": "Pagination Metadata",
"description": "Pagination information returned with list responses from the Strapi REST API.",
"properties": {
"page": {
"type": "integer",
"description": "The current page number",
"minimum": 1
},
"pageSize": {
"type": "integer",
"description": "The number of entries per page",
"minimum": 1,
"maximum": 100
},
"pageCount": {
"type": "integer",
"description": "The total number of pages",
"minimum": 0
},
"total": {
"type": "integer",
"description": "The total number of entries matching the query",
"minimum": 0
}
}
},
"ErrorResponse": {
"type": "object",
"title": "Error Response",
"description": "The standard error response format returned by Strapi APIs when a request fails.",
"properties": {
"data": {
"description": "Always null in error responses"
},
"error": {
"type": "object",
"required": ["status", "name", "message"],
"properties": {
"status": {
"type": "integer",
"description": "The HTTP status code of the error"
},
"name": {
"type": "string",
"description": "The error type name (e.g., ValidationError, NotFoundError, ForbiddenError)"
},
"message": {
"type": "string",
"description": "A human-readable description of the error"
},
"details": {
"type": "object",
"description": "Additional error details, such as validation errors per field"
}
}
}
}
}
}
}