---
title: "Read filing text by page range"
description: "Read filing text by page range. Markdown text of a parsed filing by doc_id and page range, with <!-- page N --> markers. At most 12 pages / 24,000 chars per call (max_chars up to 60,000); the response states pages_returned and next_pages and carries links to the full Markdown and PDF for local search."
canonical: "https://developers.tapetide.com/api/operations/readdocument/"
---

# Read filing text by page range

GET

/v1/stocks/{symbol}/documents/read

```js
const url = 'https://api.tapetide.com/v1/stocks/example/documents/read?doc_id=1&pages=1-8';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request GET \
  --url 'https://api.tapetide.com/v1/stocks/example/documents/read?doc_id=1&pages=1-8' \
  --header 'Authorization: Bearer <token>'
```

Markdown text of a parsed filing by doc\_id and page range, with markers. At most 12 pages / 24,000 chars per call (max\_chars up to 60,000); the response states pages\_returned and next\_pages and carries links to the full Markdown and PDF for local search.

## Authorizations

-   **[bearer](/api/#bearer)**

## Parameters

### Path Parameters

**symbol**

required

string

<= 64 characters

Stock or index symbol, e.g. “RELIANCE”, “TCS”, “NIFTY”. Percent-encode symbols containing “&” (M%26M).

### Query Parameters

**doc\_id**

required

integer

\>= 1

A doc\_id from the documents index.

**pages**

string

Inclusive 1-based range: “1-8”, “12”, “40-”. Default “1-12”.

#### Example

```plaintext
1-8
```

**max\_chars**

integer

\>= 2000 <= 60000

Character cap for this call (default 24,000).

## Responses

### 200

OK. Costs one request unit.

Media typeapplication/json

object

**data**

required

The document. Shape is route-specific and never truncated.

**meta**

required

Paging and window information where the route pages (e.g. `window.next_cursor` on price history).

object

**as\_of**

When this response was assembled (UTC).

string format: date-time

**route**

The operationId that served it.

string

**_key_**

additional properties

any

#### Example generated

```json
{
  "data": "example",
  "meta": {
    "as_of": "2026-04-15T12:00:00Z",
    "route": "example"
  }
}
```

#### Headers

**X-RateLimit-Reset**

integer

Unix seconds when the binding quota window resets (IST boundaries).

### 400

Malformed or out-of-range parameter. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 401

Missing or invalid bearer token.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 404

The symbol, index or document does not exist. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

### 429

Per-minute burst cap or plan quota reached.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```

#### Headers

**Retry-After**

integer

**X-RateLimit-Reset**

integer

Unix seconds when the binding quota window resets (IST boundaries).

### 502

A data dependency was unavailable. Not charged.

Media typeapplication/json

object

**error**

required

object

**code**

required

string

Allowed values: authentication\_required invalid\_token invalid\_request route\_not\_found not\_found method\_not\_allowed rate\_limited quota\_exhausted upstream\_unavailable service\_unavailable tool\_error internal\_error

**message**

required

string

**details**

object

**_key_**

additional properties

any

#### Example

```json
{
  "error": {
    "code": "authentication_required"
  }
}
```
