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

# List Knowledge Sources

Use this API to list your knowledge sources, each with its ingestion status and, for completed sources, signed download URLs. It returns the 100 most recently uploaded sources, newest first by `uploadedAt`. There is no pagination, so a workspace with more than 100 sources cannot reach the older ones through this API. For a de-duplicated source (`dedupOf` set), `embeddingStatus` and the download URLs mirror the winning source's state, matching Get Ingest Status.

# Endpoint

`POST https://api.velt.dev/v2/memory/knowledge/list`

# Headers

<ParamField header="x-velt-api-key" type="string" required>
  Your API key.
</ParamField>

<ParamField header="x-velt-auth-token" type="string" required>
  Your [Auth Token](/docs/security/auth-tokens).
</ParamField>

# Body

#### Params

<ParamField body="data" type="object" required>
  No fields required. Send an empty object.
</ParamField>

## **Example Requests**

#### List all sources

```JSON theme={null}
{
  "data": {}
}
```

# Response

Each item keeps the source's persisted fields: `sourceType`, `fileName`, `uploadedAt`, `ruleCount`, `chunkCount`, and so on. On top of those, each item carries the source `id`, `embeddingStatus` (`processing`, `completed`, or `failed`), an optional `mimeType` (present for uploaded file sources), an optional `failureReason`, an optional `dedupOf` (the winning source id when this file deduped), an optional `sha256`, `metadata.usedRawFallback` when the pipeline fell back to raw text, and signed `originalDownloadUrl`/`canonicalMdDownloadUrl` for completed sources. The inline canonical markdown is omitted from the list; fetch it with [Download Canonical Markdown](/docs/api-reference/rest-apis/v2/memory/knowledge/download).

Both download URLs are 15-minute signed URLs, minted fresh on every request. Do not cache or store them; call this API again when you need a working URL. If a URL cannot be minted, the field is present with an empty string value.

#### Success Response

```JSON theme={null}
{
  "result": [
    {
      "id": "src_9a8...",
      "sourceType": "upload",
      "fileName": "brand-guidelines.pdf",
      "uploadedAt": 1748000000000,
      "mimeType": "application/pdf",
      "embeddingStatus": "completed",
      "originalDownloadUrl": "https://storage.googleapis.com/...",
      "canonicalMdDownloadUrl": "https://storage.googleapis.com/..."
    }
  ]
}
```

#### Failure Response

```JSON theme={null}
{
  "error": {
    "message": "ERROR_MESSAGE",
    "status": "INVALID_ARGUMENT"
  }
}
```

<ResponseExample>
  ```js theme={null}
  {
    "result": [
      {
        "id": "src_9a8...",
        "sourceType": "upload",
        "fileName": "brand-guidelines.pdf",
        "uploadedAt": 1748000000000,
        "mimeType": "application/pdf",
        "embeddingStatus": "completed",
        "originalDownloadUrl": "https://storage.googleapis.com/...",
        "canonicalMdDownloadUrl": "https://storage.googleapis.com/..."
      }
    ]
  }
  ```
</ResponseExample>
