---
title: "List content"
method: GET
path: "/api/v1/content"
tags: ["Content"]
---

# List content

`GET /api/v1/content`

## Request

- Base URL: `https://app.promptingco.com`
- URL: `https://app.promptingco.com/api/v1/content`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
  - API key in cookie `better-auth.session_token`

Unified content list across the lifecycle. `status` selects the view: `published` (default) and `draft` list live site pages; `pending_review`, `generating`, `failed`, `rejected`, and `approved` list content drafts in the review queue. Provide exactly one of `productId` or `productSlug`.

## Query parameters

- `productId` string: Product ID. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime).
- `productSlug` string: Product slug. Provide exactly one of `productId` or `productSlug` (the server enforces this at runtime).
- `status` 'draft' | 'published' | 'pending_review' | 'generating' | 'failed' | 'rejected' | 'approved': Lifecycle filter. `published` (default) and `draft` list live site pages; `pending_review`, `generating`, `failed`, `rejected`, and `approved` list content drafts in the review queue.
- `promptId` string: Filter by the prompt the content was generated from. Works for every status: published pages keep their prompt lineage.
- `page` integer
- `pageSize` integer
- `orderBy` 'createdAt' | 'updatedAt' | 'deletedAt'
- `orderByDirection` 'asc' | 'desc'
- `query` string
- `q` string
- `type` string
- `isManual` boolean
- `pathPrefix` string
- `hasContent` boolean
- `includeContent` boolean
- `domainId` string
- `domain` string
- `archivedStatus` 'active' | 'archived' | 'all'

## Response `200`

Successful response

- object
  - `ok` true, required
  - `data` union, required
    - object
      - `scope` object, required
        - `product` object, required
          - `id` string, required
          - `name` string, required
          - `slug` string, nullable, required
        - `organization` object, required
          - `id` string, required
          - `name` string, required
          - `slug` string, required
      - `page` integer, required
      - `pageSize` integer, required
      - `query` string, nullable, required
      - `status` string, nullable, required
      - `type` string, nullable, required
      - `isManual` boolean, nullable, required
      - `pathPrefix` string, nullable, required
      - `hasContent` boolean, nullable, required
      - `domainId` string, nullable, required
      - `domain` string, nullable, required
      - `archivedStatus` 'active' | 'archived' | 'all', required
      - `orderBy` 'createdAt' | 'updatedAt' | 'deletedAt', required
      - `orderByDirection` 'asc' | 'desc', required
      - `total` integer, required
      - `totalPages` integer, required
      - `items` object[], required
        - `id` string, required
        - `kind` 'document', required
        - `promptId` string, nullable, required
        - `title` string, required
        - `filePath` string, required
        - `path` string, required
        - `sourceUrl` string, nullable, required
        - `status` string, required
        - `type` string, required
        - `isManual` boolean, required
        - `metaTitle` string, nullable, required
        - `metaDescription` string, nullable, required
        - `metadata` object, required
          - `contentType` 'recommended' | 'solution-recommendation' | 'comparison' | 'explainer' | 'implementation-guide' | 'decision-guide' | 'use-case-workflow' | 'listicle' | 'solution-guide' | 'code-example' | 'code-decision-guide' | 'compatibility' | 'faq' | 'custom' | 'null', nullable, required
        - `redirectToUrl` string, nullable, required
        - `redirectAudience` string, required
        - `publishedAt` string, date-time, nullable, required
        - `deletedAt` string, date-time, nullable, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `domains` object[], required
          - `id` string, required
          - `domain` string, required
          - `isCanonical` boolean, required
          - `pathPrefix` string, nullable, required
    - object
      - `scope` object, required
        - `product` object, required
          - `id` string, required
          - `name` string, required
          - `slug` string, nullable, required
        - `organization` object, required
          - `id` string, required
          - `name` string, required
          - `slug` string, required
      - `status` 'pending_review' | 'generating' | 'failed' | 'rejected' | 'approved', required
      - `page` integer, required
      - `pageSize` integer, required
      - `total` integer, required
      - `totalPages` integer, required
      - `items` object[], required
        - `id` string, required
        - `kind` 'draft', required
        - `draftId` string, required
        - `documentId` string, nullable, required
        - `status` 'pending_review' | 'generating' | 'failed' | 'rejected' | 'approved', required
        - `title` string, required
        - `filePath` string, required
        - `path` string, required
        - `promptId` string, nullable, required
        - `promptMessage` string, nullable, required
        - `metaDescription` string, nullable, required
        - `metadata` object, required
          - `contentType` 'recommended' | 'solution-recommendation' | 'comparison' | 'explainer' | 'implementation-guide' | 'decision-guide' | 'use-case-workflow' | 'listicle' | 'solution-guide' | 'code-example' | 'code-decision-guide' | 'compatibility' | 'faq' | 'custom' | 'null', nullable, required
        - `generationStatus` string, nullable, required
        - `contentFormat` string, nullable, required
        - `error` string, nullable, required
        - `approved` boolean, nullable, required
        - `approvedAt` string, date-time, nullable, required
        - `rejectionFeedback` string, nullable, required
        - `createdAt` string, date-time, required
        - `updatedAt` string, date-time, required
        - `content` string

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Forbidden
- `404`: Not found
- `422`: Validation failed
- `500`: Internal server error

---

[API](https://skmtc.dev/promptingcompany/apis/the-prompting-company-api.md) - [All operations](https://skmtc.dev/promptingcompany/apis/the-prompting-company-api/llms.txt) - [OpenAPI document](https://skmtc.dev/promptingcompany/apis/the-prompting-company-api/revisions/c0451ea10e9a?raw)
