> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thepublive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Post Listing

> Returns a paginated list of posts. Supports advanced filtering via `<field>__<operator>` query params (operators: `__eq`, `__neq`, `__contains`, `__in`, `__nin`, `__gte`, `__lte`, `__gt`, `__lt`; filterable fields: `title`, `type`, `categories.id`, `tags.id`, `contributors.id`, `primary_category.id`, `created_at`, `word_count`).

<Info>Replaces the deprecated `/posts_by_category/`, `/posts_by_tag/`, `/posts_by_author/`, and `/search/` endpoints — see [Deprecated](/dxp/api-reference/deprecated/README).</Info>



## OpenAPI

````yaml /openapi/content-delivery.json get /publisher/{publisher_id}/posts/
openapi: 3.1.0
info:
  title: Publive Content Delivery API
  version: 1.0.0
  description: >-
    Read-only API for delivering publisher content, configuration, and static
    assets. All endpoints require HTTP Basic Auth and are GET requests.
servers:
  - url: https://cds.thepublive.com
security:
  - basicAuth: []
tags:
  - name: Site Configuration
  - name: Content
  - name: Posts
  - name: Forms
  - name: Static Files
  - name: Sitemaps
paths:
  /publisher/{publisher_id}/posts/:
    get:
      tags:
        - Posts
      summary: Post Listing
      description: >-
        Returns a paginated list of posts. Supports advanced filtering via
        `<field>__<operator>` query params (operators: `__eq`, `__neq`,
        `__contains`, `__in`, `__nin`, `__gte`, `__lte`, `__gt`, `__lt`;
        filterable fields: `title`, `type`, `categories.id`, `tags.id`,
        `contributors.id`, `primary_category.id`, `created_at`, `word_count`).


        <Info>Replaces the deprecated `/posts_by_category/`, `/posts_by_tag/`,
        `/posts_by_author/`, and `/search/` endpoints — see
        [Deprecated](/dxp/api-reference/deprecated/README).</Info>
      operationId: listPostsCDS
      parameters:
        - $ref: '#/components/parameters/PublisherId'
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: Paginated post list
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  message:
                    type: string
                  page_no:
                    type: integer
                  per_page:
                    type: integer
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostSummary'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    PublisherId:
      name: publisher_id
      in: path
      required: true
      schema:
        type: string
      description: Your Publisher ID
    Page:
      name: page
      in: query
      required: false
      schema:
        type: integer
        default: 1
        maximum: 1000
      description: Page number
    Limit:
      name: limit
      in: query
      required: false
      schema:
        type: integer
        default: 10
        maximum: 50
      description: Number of results per page
  schemas:
    PostSummary:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        slug:
          type: string
        type:
          type: string
          enum:
            - Article
            - Video
            - Web Story
            - Gallery
            - LiveBlog
            - CustomPage
            - BlankPage
        banner_url:
          type: string
        short_description:
          type: string
        summary:
          type: string
        primary_category:
          type: object
          properties:
            id:
              type: integer
            name:
              type: string
            slug:
              type: string
        categories:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              slug:
                type: string
        tags:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              slug:
                type: string
        contributors:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
              slug:
                type: string
        content_html:
          type: string
        meta_data:
          type: object
          properties:
            access_type:
              type: string
        media_file_banner:
          type: object
          properties:
            id:
              type: integer
            filename:
              type: string
            path:
              type: string
            alt_text:
              type: string
            meta_data:
              type: object
              properties:
                width:
                  type: integer
                height:
                  type: integer
        word_count:
          type: integer
        access_type:
          type: string
        hide_banner_image:
          type: boolean
        banner_description:
          type: string
        language_code:
          type: string
        custom_entity:
          type: object
        absolute_url:
          type: string
        formatted_first_published_at_datetime:
          type: string
        formatted_last_published_at_datetime:
          type: string
    ErrorDetail:
      type: object
      properties:
        detail:
          type: string
  responses:
    Unauthorized:
      description: Invalid or missing credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorDetail'
          example:
            detail: Invalid Auth Credentials
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic Auth using your Publive API key pair, base64-encoded.

````