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

# List your drafted content

> Retrieve a paginated list of the short-form content in your publication's library, newest activity first. The publication is identified by the API key.

Filter with `kind` and `status`. `status` defaults to `all`, which is everything except the pieces you've archived — a piece that was delivered stays listed whether or not it was archived afterwards.

Bodies aren't included; fetch a single piece to read one.



## OpenAPI

````yaml /paragraph-api/openapi.json get /v1/content
openapi: 3.1.0
info:
  title: Paragraph API
  version: 1.0.0
  description: >-
    Public API for interacting with Paragraph publications, posts, users, and
    coined writing.


    ## Rate Limiting

    API requests are rate-limited to ensure fair usage. Contact
    support@paragraph.com for higher limits.


    ## Pagination

    List endpoints support cursor-based pagination using `cursor` and `limit`
    parameters.
  contact:
    name: Paragraph Support
    email: support@paragraph.com
    url: https://paragraph.com/support
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://public.api.paragraph.com/api
    description: Production server
security:
  - {}
tags:
  - name: publications
    description: Operations related to publications
  - name: posts
    description: Operations related to posts and content
  - name: users
    description: Operations related to users and authors
  - name: coins
    description: Operations related to tokenized content
  - name: subscribers
    description: Operations related to subscriber management (requires API key)
paths:
  /v1/content:
    get:
      tags:
        - content
      summary: List your drafted content
      description: >-
        Retrieve a paginated list of the short-form content in your
        publication's library, newest activity first. The publication is
        identified by the API key.


        Filter with `kind` and `status`. `status` defaults to `all`, which is
        everything except the pieces you've archived — a piece that was
        delivered stays listed whether or not it was archived afterwards.


        Bodies aren't included; fetch a single piece to read one.
      operationId: listContent
      parameters:
        - name: cursor
          in: query
          description: Cursor for pagination
          schema:
            type: string
        - name: limit
          in: query
          description: 'Maximum number of items to return (1-50, default: 20)'
          schema:
            default: 20
            type: integer
            minimum: 1
            maximum: 50
        - name: kind
          in: query
          description: Filter by content kind
          schema:
            type: string
            enum:
              - tweet
              - linkedin
              - newsletter
              - x_article
        - name: status
          in: query
          description: >-
            Filter by lifecycle. `all` (default) is drafts plus delivered
            pieces; `archived` is the pieces you've put away and never
            delivered.
          schema:
            type: string
            enum:
              - all
              - draft
              - published
              - archived
      responses:
        '200':
          description: Content retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier for this piece of content
                        kind:
                          type: string
                          description: >-
                            What this piece is: `tweet`, `linkedin`,
                            `newsletter`, or `x_article`
                        title:
                          type: string
                          description: What this piece is called in your library
                        excerpt:
                          type: string
                          description: First readable line of the body, for listing views
                        status:
                          type: string
                          enum:
                            - draft
                            - published
                            - archived
                          description: >-
                            Whether this piece has been delivered, is still a
                            draft, or was archived
                        scheduled:
                          type: boolean
                          description: >-
                            Whether a scheduled send is queued against this
                            piece
                        lockedReason:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Why this piece can't be edited right now, or null
                            when it can. A queued or in-flight send locks the
                            words, because they go out exactly as written.
                        publishedAt:
                          type:
                            - string
                            - 'null'
                          description: ISO 8601 timestamp of the first delivery, or null
                        url:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Where this piece went live, from the same delivery
                            `publishedAt` came from. Null when it hasn't been
                            delivered, and null by design for a channel that
                            publishes no page: a custom email renders into the
                            message itself, so there is no address to link to.
                            Never guessed — a delivery whose id isn't shaped
                            like its channel reports null rather than a link
                            that would 404.
                        archivedAt:
                          type:
                            - string
                            - 'null'
                          description: >-
                            ISO 8601 timestamp of when this piece was archived,
                            or null
                        createdAt:
                          type: string
                          description: ISO 8601 timestamp of creation
                        updatedAt:
                          type: string
                          description: ISO 8601 timestamp of the last change
                      required:
                        - id
                        - kind
                        - title
                        - excerpt
                        - status
                        - scheduled
                        - lockedReason
                        - publishedAt
                        - url
                        - archivedAt
                        - createdAt
                        - updatedAt
                    description: Array of items in this page
                  pagination:
                    type: object
                    properties:
                      cursor:
                        type: string
                        description: Cursor for fetching the next page of results
                      hasMore:
                        type: boolean
                        description: Whether more results are available
                      total:
                        type: number
                        description: Total number of items available
                    required:
                      - hasMore
                required:
                  - items
                  - pagination
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses
                  msg:
                    type: string
                    description: Human-readable error message
                required:
                  - success
                  - msg
        '404':
          description: Publication not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses
                  msg:
                    type: string
                    description: Human-readable error message
                required:
                  - success
                  - msg
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    enum:
                      - false
                    description: Always false for error responses
                  msg:
                    type: string
                    description: Human-readable error message
                required:
                  - success
                  - msg
      security:
        - apiKey: []
      x-codeSamples:
        - lang: typescript
          label: List drafted X posts
          source: >-
            import { ParagraphAPI } from "@paragraph-com/sdk"


            const api = new ParagraphAPI({ apiKey: "your-api-key" })

            const { items, pagination } = await api.content.list({ kind:
            "tweet", status: "draft" })
        - lang: bash
          label: List drafted X posts using curl
          source: >-
            curl
            "https://public.api.paragraph.com/api/v1/content?kind=tweet&status=draft"
            \
              -H "Authorization: Bearer your-api-key"
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        API key for authenticating protected endpoints. Pass as Bearer token in
        Authorization header.

````