---
title: "List your drafted content"
method: GET
path: "/v1/content"
tags: ["content"]
---

# List your drafted content

`GET /v1/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.

## Query parameters

- `cursor` string
- `limit` integer
- `kind` 'tweet' | 'linkedin' | 'newsletter' | 'x_article'
- `status` 'all' | 'draft' | 'published' | 'archived'

## Response `200`

Content retrieved successfully

- object
  - `items` object[], required — Array of items in this page
    - `id` string, required — Unique identifier for this piece of content
    - `kind` string, required — What this piece is: `tweet`, `linkedin`, `newsletter`, or `x_article`
    - `title` string, required — What this piece is called in your library
    - `excerpt` string, required — First readable line of the body, for listing views
    - `status` 'draft' | 'published' | 'archived', required — Whether this piece has been delivered, is still a draft, or was archived
    - `scheduled` boolean, required — Whether a scheduled send is queued against this piece
    - `lockedReason` string, nullable, required — 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` string, nullable, required — ISO 8601 timestamp of the first delivery, or null
    - `url` string, nullable, required — 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` string, nullable, required — ISO 8601 timestamp of when this piece was archived, or null
    - `createdAt` string, required — ISO 8601 timestamp of creation
    - `updatedAt` string, required — ISO 8601 timestamp of the last change
  - `pagination` object, required
    - `cursor` string — Cursor for fetching the next page of results
    - `hasMore` boolean, required — Whether more results are available
    - `total` number — Total number of items available

## Other responses

- `401` — Invalid or missing API key
- `404` — Publication not found
- `500` — Internal server error

---

[API](https://skmtc.net/paragraph-xyz/apis/paragraph-api.md) · [All operations](https://skmtc.net/paragraph-xyz/apis/paragraph-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paragraph-xyz/paragraph-api/revisions/d7ee6288035e/schema)
