GET/v1/documents

List Documents

List all documents for the authenticated user.

Returns a paginated list of your documents, ordered by most recently updated. This endpoint does not count toward your monthly usage quota.

Query parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo20Maximum results per page. Min 1, max 100.
cursorstringNoISO 8601 timestamp cursor from a previous response's next_cursor field. Used for pagination.

Response

Returns a paginated list of document summaries.

FieldTypeDescription
dataarrayArray of document summary objects
has_morebooleanWhether more results are available
next_cursorstring or nullCursor for the next page. Pass as the cursor query parameter.

Document summary fields

FieldTypeDescription
idstringDocument UUID
titlestringDocument title
template_idstringTemplate applied to the document
theme_modestringColor theme
is_publishedbooleanWhether the document is currently published
slugstring or nullURL slug if published
page_widthstring or nullPage width setting: "standard", "wide", or "full"
word_countintegerWord count of the document content
created_atstringISO 8601 creation timestamp
updated_atstringISO 8601 last update timestamp

Errors

StatusCodeDescription
401unauthorizedMissing or invalid API key
500internal_errorUnexpected server error

TIP

To paginate through all documents, keep requesting with the next_cursor value from the previous response until has_more is false.

# List first 20 documents
curl https://api.unmarkdown.com/v1/documents \
  -H "Authorization: Bearer um_your_key_here"

# Paginate with cursor
curl "https://api.unmarkdown.com/v1/documents?limit=10&cursor=2026-02-14T12:00:00.000Z" \
  -H "Authorization: Bearer um_your_key_here"
const response = await fetch(
  "https://api.unmarkdown.com/v1/documents?limit=10",
  {
    headers: {
      "Authorization": "Bearer um_your_key_here",
    },
  }
);

const { data, has_more, next_cursor } = await response.json();

// Fetch next page if available
if (has_more) {
  const nextPage = await fetch(
    `https://api.unmarkdown.com/v1/documents?limit=10&cursor=${next_cursor}`,
    { headers: { "Authorization": "Bearer um_your_key_here" } }
  );
}
import requests

response = requests.get(
    "https://api.unmarkdown.com/v1/documents",
    headers={"Authorization": "Bearer um_your_key_here"},
    params={"limit": 10},
)

data = response.json()
documents = data["data"]

# Fetch next page if available
if data["has_more"]:
    next_page = requests.get(
        "https://api.unmarkdown.com/v1/documents",
        headers={"Authorization": "Bearer um_your_key_here"},
        params={"limit": 10, "cursor": data["next_cursor"]},
    )

Response 200 OK

{
  "data": [
    {
      "id": "d4f7a8b2-1234-5678-9abc-def012345678",
      "title": "Weekly Report",
      "template_id": "executive",
      "theme_mode": "light",
      "is_published": true,
      "slug": "weekly-report",
      "page_width": "standard",
      "word_count": 450,
      "created_at": "2026-02-14T12:00:00.000Z",
      "updated_at": "2026-02-15T09:30:00.000Z"
    },
    {
      "id": "a1b2c3d4-5678-9abc-def0-123456789abc",
      "title": "API Documentation",
      "template_id": "github",
      "theme_mode": "light",
      "is_published": false,
      "slug": null,
      "page_width": null,
      "word_count": 1200,
      "created_at": "2026-02-13T08:00:00.000Z",
      "updated_at": "2026-02-14T16:45:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}