---
title: "Retrieve a source's full text"
method: GET
path: "/library/sources/{sourceId}/full-text"
tags: ["Library"]
---

# Retrieve a source's full text

`GET /library/sources/{sourceId}/full-text`

## Request

- Base URL: `https://elicit.com/api/v2`
- URL: `https://elicit.com/api/v2/library/sources/{sourceId}/full-text`
- Auth: HTTP bearer

Returns the parsed full text of the source's PDF as markdown: title, abstract, and body. Includes a nullable `download` object with `downloadUrl`, `expiresAt`, `filename`, and `contentType` for the original PDF. The URL expires after 30 minutes; call again for a fresh URL. Fetch `download.downloadUrl` with `curl -L --fail --output paper.pdf '<downloadUrl>'`, without an Authorization header. If a download URL is temporarily unavailable, `download` is null and the parsed text is still returned. Before parsing finishes, use get_library_source to get the original PDF download details.

A `404` has one of three codes. `full_text_pending`: the PDF search or parse is in progress; retry later. `full_text_unavailable`: no PDF was found. `not_found`: the source is not visible to you.

### Example

```bash
curl https://elicit.com/api/v2/library/sources/{sourceId}/full-text \
  -H "Authorization: Bearer elk_live_your_key_here"
```

## Path parameters

- `sourceId` string, uuid, required

## Response `200`

The parsed full text.

- GetLibrarySourceFullTextResponse
  - `markdown` string, required: The parsed paper — title, abstract, and body — as markdown.
  - `download` object, nullable, required: Download details for the original PDF; null when no stored PDF exists or a download URL is temporarily unavailable. URLs expire after 30 minutes; retrieve the source again for a fresh URL.
    - `downloadUrl` string, uri, required: Presigned URL for the original PDF. Fetch without an Authorization header.
    - `expiresAt` string, date-time, required
    - `filename` string, required
    - `contentType` 'application/pdf', required

## Other responses

- `400`: A malformed id, or an unknown or invalid query parameter.
- `401`: Authentication failed. The API key is missing, invalid, revoked, or expired.
- `403`: API access is not available on your current plan. Upgrade to Pro or above to use the API.
- `404`: The source is not visible to you, or has no full text (yet). Check the code.
- `429`: Rate limit exceeded. More than 100 requests per minute were received from your IP address; further requests are blocked for 5 minutes.
- `500`: An unexpected error occurred. Retry reads with backoff; before retrying a write, check whether it took effect. See Error Handling for retry guidance.

## Changes

- **2026-10-23** `2b22eef72e64`: 1 info
  - added the required property `download` to the response with the `200` status
- **2026-10-16** `22847bf7e65d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/changes/library/sources/:sourceId/full-text/get.md)

---

[API](https://skmtc.dev/elicitlabs/apis/elicit-labs-api.md) - [All operations](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/llms.txt) - [OpenAPI document](https://skmtc.dev/elicitlabs/apis/elicit-labs-api/revisions/cbbe29509d04?raw)
