# List Documents

> Knowledge documents of the store (newest first).

Source: https://shopassist.coec.dk/docs/api/reference/knowledge/list-documents · Updated 2026-11-03

`GET /v1/stores/{store_id}/knowledge/documents`

- Scope: `knowledge:read`
- Rate limit: 600 requests/min per API key (test keys: 60/min)

Knowledge documents of the store (newest first).

## Parameters [#parameters]

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `store_id` | path | `string` | yes |  |
| `limit` | query | `integer` | no | Page size |
| `cursor` | query | `string \| null` | no | Cursor from the previous page |

## Example request [#example-request]

```bash
curl -X GET "https://api.shopassist.coec.dk/v1/stores/sto_01j8000000e008000000000000/knowledge/documents" \
  -H "Authorization: Bearer $SHOPASSIST_API_KEY"
```

## Response 200 (Page_KnowledgeDocument_) [#response]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | `KnowledgeDocument[]` | yes |  |
| `data[].chunk_count` | `integer` | yes |  |
| `data[].content_preview` | `string` | yes |  |
| `data[].doc_type` | `string (enum)` | yes | one of policy, page, faq, file, blog, size_chart, other |
| `data[].fetched_at` | `string \| null` | yes | format date-time |
| `data[].id` | `string` | yes | pattern `^kdoc_[0-9a-hjkmnp-tv-z]{26}$` |
| `data[].injection_flags` | `InjectionFlag[]` | yes |  |
| `data[].injection_flags[].excerpt` | `string` | yes |  |
| `data[].injection_flags[].rule` | `string` | yes |  |
| `data[].locale` | `string \| null` | yes |  |
| `data[].pending_change` | `PendingChange \| null` | yes |  |
| `data[].pending_change.diff_preview` | `string` | yes |  |
| `data[].pending_change.reason` | `"off_domain" \| "crawled_policy" \| "content_changed" \| "mass_change"` | yes |  |
| `data[].pending_change.since` | `string` | yes | format date-time |
| `data[].policy_type` | `string (enum) \| null` | yes | one of refund, return, shipping, privacy, terms, contact, legal_notice, subscription, withdrawal, other |
| `data[].review_status` | `"approved" \| "pending_review" \| "rejected"` | yes |  |
| `data[].source_id` | `string` | yes | pattern `^ksrc_[0-9a-hjkmnp-tv-z]{26}$` |
| `data[].status` | `"active" \| "excluded" \| "error"` | yes |  |
| `data[].title` | `string` | yes |  |
| `data[].updated_at` | `string` | yes | format date-time |
| `data[].url` | `string \| null` | yes | format uri · ≤ 2048 characters |
| `has_more` | `boolean` | yes |  |
| `next_cursor` | `string \| null` | yes | Opaque cursor for the next page; null on the last page |

```json
{
  "data": [
    {
      "chunk_count": 1,
      "content_preview": "string",
      "doc_type": "policy",
      "fetched_at": "2026-09-28T10:15:30.123Z",
      "id": "kdoc_01j8000000e008000000000000",
      "injection_flags": [
        {
          "excerpt": "string",
          "rule": "string"
        }
      ],
      "locale": "da-DK",
      "pending_change": {
        "diff_preview": "string",
        "reason": "off_domain",
        "since": "2026-09-28T10:15:30.123Z"
      },
      "policy_type": "refund",
      "review_status": "approved",
      "source_id": "ksrc_01j8000000e008000000000000",
      "status": "active",
      "title": "string",
      "updated_at": "2026-09-28T10:15:30.123Z",
      "url": "https://shop.example/products/linen-shirt"
    }
  ],
  "has_more": true,
  "next_cursor": "string"
}
```

## Errors [#errors]

| Status | Meaning |
| --- | --- |
| 400 | Bad Request ([error codes](/docs/api/errors)) |
| 401 | Unauthorized ([error codes](/docs/api/errors)) |
| 403 | Forbidden ([error codes](/docs/api/errors)) |
| 404 | Not Found ([error codes](/docs/api/errors)) |
| 422 | Unprocessable Content ([error codes](/docs/api/errors)) |
| 429 | Too Many Requests ([error codes](/docs/api/errors)) |
