> ## Documentation index
>
> Fetch the complete documentation index at: https://andesine.app/docs/llms.txt
> Use it to find all pages before you explore further.

# Get published entry content

`GET https://api.andesine.app/content/entries/get`

Returns content from a publishing channel or a specific available snapshot. Use channel or snapshotID, never both. The default channel is published. Validates saved content against its recorded schema and returns schema metadata. expectedSchemaHash must match that revision; schema-less content cannot match it. Validation and hash checks run before ETag handling. Supports ETag and If-None-Match; a match returns 304 without a body.

Required API key permissions: read:publishing. Write permissions also grant read access for the same resource.

## Authentication

Use one of:

- `apiKey` (http, bearer, Andesine API key)
- `oauth` (http, bearer, Andesine OAuth access token)

## Parameters

### Query

- `entryID` (string, optional)
- `path` (string, optional): Decoded content path, such as /Docs/Page or coll_ID/Page. Names are case-sensitive. Do not URL-encode names before passing them to the SDK.
- `slugPath` (string, optional): Decoded derived slug path, such as /docs/getting-started or coll_ID/getting-started. Use the returned slugPath without URL encoding.
- `expectedSchemaHash` (string, optional): Hash of the effective schema definition.
- `channel` (`PublishingChannelCode`, optional): Publishing channel, defaults to published.
- `snapshotID` (string, optional): Historical publication snapshot to read.
- `contentFormat` (string, optional): Content format of the response; mdx also returns the content as MDX in mdx. One of: `"json"`, `"mdx"`. Default: `"json"`.

### Header

- `x-workspace-id` (string, optional): Required for OAuth: ID of the workspace to access. API keys use their own workspace.

## Responses

### 200

OK

#### Headers

- `Cache-Control` (string, required)
- `ETag` (string, required)

Content type: `application/json`

Type: `PublishedContent`.

- `id` (string, required)
- `path` (string, required)
- `slugPath` (string, required)
- `collectionID` (any of, required)
  - Any of: Option 1 (string)
  - Any of: Option 2 (null)
- `schema` (any of, required)
  - Any of: `ContentSchemaMetadata`
    - `revisionID` (string, required): Recorded effective schema revision.
    - `hash` (string, required): Hash of the effective schema definition.
  - Any of: Option 2 (null)
- `channel` (string, required): Publishing channel used for delivery.
- `snapshotID` (string, required): Publication snapshot used for delivery.
- `expiresAt` (any of, required): Expiry time for a retained historical snapshot.
  - Any of: Option 1 (string (date-time))
  - Any of: Option 2 (null)
- `name` (string, required): Entry name stored in the published version.
- `version` (`EntryVersionSummary`, required)
  - `id` (string, required): ID of the version.
  - `entryID` (string, required): ID of the versioned entry.
  - `entryName` (string, required): Entry name stored in the version.
  - `hash` (string, required): Hash of the version content.
  - `name` (any of, required): Optional name of the version.
    - Any of: Option 1 (string)
    - Any of: Option 2 (null)
  - `reason` (string, required): Reason why the version was created. One of: `"auto"`, `"manual"`, `"revert"`, `"schema-migration"`, `"import"`.
  - `sourceVersionID` (any of, required): Source version used for a revert.
    - Any of: Option 1 (string)
    - Any of: Option 2 (null)
  - `contributorIDs` (array of string, required): Memberships that contributed to the version.
  - `createdAt` (string, required): Time when the version was created.
  - `updatedAt` (string, required): Time when the version name was last updated.
- `assets` (array of `PublishedAsset`, required)
  - `assetID` (string, required)
  - `variant` (`AssetVariant`, required): One of: `"thumbnail"`, `"display"`, `"source"`.
  - `format` (`AssetFileFormat`, required): One of: `"jpeg"`, `"png"`, `"webp"`.
  - `width` (number, required)
  - `height` (number, required)
  - `byteSize` (number, required)
  - `url` (string, required)
- `content` (`ContentNode`, required)
  - `type` (string, required)
  - `attrs` (object, optional)
    - `{key}` (any, optional)
  - `content` (array of `ContentNode`, optional)
  - `marks` (array of `ContentMark`, optional)
    - `type` (string, required)
    - `attrs` (object, optional)
      - `{key}` (any, optional)
  - `text` (string, optional)
- `mdx` (string, optional): Content as MDX: the title as H1, properties as <Property name value /> elements in place, fragments as <Fragment name> elements, and images as asset:<assetID>; frontmatter properties are also read, and entries.update and versions.create import image URLs.
- `fragments` (object, required)
  - `{key}` (`EntryFragment`, optional)
    - `name` (string, required): Source fragment name.
    - `content` (`ContentNode`, required)
- `properties` (object, required)
  - `{key}` (`EntryProperty`, optional)
    - `name` (string, required): Source property name.
    - `type` (string, required): Property type. One of: `"text"`, `"number"`, `"checkbox"`, `"date"`, `"url"`, `"select"`, `"multi-select"`.
    - `value` (`EntryPropertyValue`, required)
      - Any of: Option 1 (string)
      - Any of: Option 2 (number)
      - Any of: Option 3 (boolean)
      - Any of: Option 4 (array of string)
      - Any of: Option 5 (null)

### 304

Not Modified

#### Headers

- `Cache-Control` (string, required)
- `ETag` (string, required)

### 400

400

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"BAD_REQUEST"`.
  - `status` (constant, required): Value: `400`.
  - `message` (string, required): Default: `"Bad Request"`.
  - `data` (`ValidationErrorData`, optional)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
    - `issues` (array of `ValidationIssue`, optional)
      - `message` (string, required)
      - `code` (string, optional)
      - `path` (array of any of, optional)
        - Any of: Option 1 (string)
        - Any of: Option 2 (number)
        - Any of: Option 3 (object)
          - `key` (any of, required)
            - Any of: Option 1 (string)
            - Any of: Option 2 (number)
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 401

401

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"UNAUTHORIZED"`.
  - `status` (constant, required): Value: `401`.
  - `message` (string, required): Default: `"Unauthorized"`.
  - `data` (`ErrorData`, optional)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 403

403

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"FORBIDDEN"`.
  - `status` (constant, required): Value: `403`.
  - `message` (string, required): Default: `"Forbidden"`.
  - `data` (`ForbiddenErrorData`, optional)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
    - `missingPermissions` (array of string, optional)
    - `requiredPlan` (constant, optional): Value: `"pro"`.
    - `action` (string, optional): The requested action that was denied.
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 404

404

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"NOT_FOUND"`.
  - `status` (constant, required): Value: `404`.
  - `message` (string, required): Default: `"Not Found"`.
  - `data` (`ErrorData`, optional)
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 409

409

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"CONFLICT"`.
  - `status` (constant, required): Value: `409`.
  - `message` (string, required): Default: `"Conflict"`.
  - `data` (`ErrorData`, optional)
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"CONTENT_SCHEMA_MISMATCH"`.
  - `status` (constant, required): Value: `409`.
  - `message` (string, required): Default: `"CONTENT_SCHEMA_MISMATCH"`.
  - `data` (`ContentSchemaMismatchErrorData`, required)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
    - `expectedHash` (string, required): Hash of the effective schema definition.
    - `actualSchema` (any of, required)
      - Any of: `ContentSchemaMetadata`
      - Any of: Option 2 (null)
- One of: Option 3 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 429

429

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"TOO_MANY_REQUESTS"`.
  - `status` (constant, required): Value: `429`.
  - `message` (string, required): Default: `"Too Many Requests"`.
  - `data` (`RateLimitErrorData`, optional)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
    - `limit` (string, optional): The limit that was reached: a short-term rate limit, or a monthly API call, AI credit, or spending limit. One of: `"rate"`, `"api-calls"`, `"ai-credits"`, `"spending"`.
    - `retryAfterSeconds` (number, optional): Minimum delay before another attempt, in seconds. Also sent in Retry-After.
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 500

500

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"INTERNAL_SERVER_ERROR"`.
  - `status` (constant, required): Value: `500`.
  - `message` (string, required): Default: `"Internal Server Error"`.
  - `data` (`ErrorData`, optional)
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"CONTENT_SCHEMA_INVALID"`.
  - `status` (constant, required): Value: `500`.
  - `message` (string, required): Default: `"CONTENT_SCHEMA_INVALID"`.
  - `data` (`ContentSchemaInvalidErrorData`, required)
    - `hints` (array of string, optional): Suggested next steps. Wording can change; use error codes and structured data for program logic.
    - `entryID` (string, optional)
    - `versionID` (string, optional)
    - `revisionID` (any of, required)
      - Any of: Option 1 (string)
      - Any of: Option 2 (null)
    - `issues` (array of `ContentSchemaIssue`, required)
      - `code` (string, required): One of: `"invalid_schema"`, `"invalid_structure"`, `"missing_field"`, `"unknown_field"`, `"duplicate_field"`, `"field_kind_mismatch"`, `"field_key_mismatch"`, `"property_type_mismatch"`, `"invalid_property_value"`, `"invalid_field_options"`, `"invalid_allowed_blocks"`, `"invalid_fragment_content"`.
      - `message` (string, required)
      - `path` (array of any of, required)
        - Any of: Option 1 (string)
        - Any of: Option 2 (number)
      - `fieldID` (string, optional)
- One of: Option 3 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)

### 503

503

Content type: `application/json`

Type: one of.

- One of: Option 1 (object)
  - `defined` (constant, required): Value: `true`.
  - `code` (constant, required): Value: `"SERVICE_UNAVAILABLE"`.
  - `status` (constant, required): Value: `503`.
  - `message` (string, required): Default: `"Service Unavailable"`.
  - `data` (`ErrorData`, optional)
- One of: Option 2 (object)
  - `defined` (constant, required): Value: `false`.
  - `code` (string, required)
  - `status` (number, required)
  - `message` (string, required)
  - `data` (any, optional)
