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

# Get rulebook rule

> Returns one rule of a rulebook with its official text as structured blocks and plain text

Returns one rule: its number, citation, heading, place in the rulebook and status, and its official text both as structured `blocks` and as `plain_text`. Use it to open a rule from a citation, to show the official wording next to a requirement, or to check whether a stored copy of a rule is still current.

The answer does not include the rule's requirements. Read them with [`/extracted-rules`](/api-reference/extracted-rules) using `rulebook_id` and `rule_number`; `requirement_count` tells you how many to expect.

**rulebook\_id** `string` *required*

Rulebook identifier from [`/rulebooks`](/api-reference/rulebooks), such as
`california-rules-of-court`.

**number** `string` *required*

The rule's official number, exactly as the rulebook prints it and without the word Rule: `3.1113`,
`4:46-2`, `21a`. It must match exactly: `21a` and `21A` are different rules, and `3.111` does not
find `3.1113`. URL-encode numbers that hold spaces or slashes (`1/2` is `1%2F2`). Leading and
trailing spaces are not allowed. At most 40 characters.

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.courtrules.app/api/v1/rulebooks/california-rules-of-court/rules/3.1113' \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
import requests
from urllib.parse import quote

number = "3.1113"
resp = requests.get(
    f"https://api.courtrules.app/api/v1/rulebooks/california-rules-of-court/rules/{quote(number, safe='')}",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
rule = resp.json()
```

```typescript Node.js theme={"theme":{"light":"github-light","dark":"github-dark"}}
const number = "3.1113";
const resp = await fetch(
  `https://api.courtrules.app/api/v1/rulebooks/california-rules-of-court/rules/${encodeURIComponent(number)}`,
  { headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const rule = await resp.json();
```

The real response lists subdivisions (a) through (m) of Rule 3.1113. The example keeps (d), the page limits, and the notes printed with the rule.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "number": "3.1113",
  "slug": "3.1113",
  "citation": "Cal. Rules of Court, rule 3.1113",
  "revision_id": "50dd0291-ae07-48d0-b490-23555244dcf1",
  "heading": "Memorandum",
  "outline": [
    { "label": "Title Three", "heading": "Civil Rules" },
    { "label": "Division 11", "heading": "Law and Motion" },
    { "label": "Chapter 2", "heading": "Format of Motion Papers" }
  ],
  "legal_status": "in_force",
  "effective_from": "2017-01-01",
  "observed_at": "2026-10-19T04:34:37.532+00:00",
  "removed": false,
  "requirement_count": 27,
  "extraction_status": "succeeded",
  "site_url": "https://www.courtrules.app/rules/california-rules-of-court/3.1113",
  "current": {
    "revision_id": "50dd0291-ae07-48d0-b490-23555244dcf1",
    "heading": "Memorandum",
    "blocks": [
      {
        "type": "item",
        "label": "(d)",
        "heading": "Length of memorandum",
        "children": [
          {
            "type": "paragraph",
            "text": "Except in a summary judgment or summary adjudication motion, no opening or responding memorandum may exceed 15 pages. In a summary judgment or summary adjudication motion, no opening or responding memorandum may exceed 20 pages. No reply or closing memorandum may exceed 10 pages. The page limit does not include the caption page, the notice of motion and motion, exhibits, declarations, attachments, the table of contents, the table of authorities, or the proof of service."
          },
          {
            "type": "note",
            "role": "history",
            "blocks": [
              {
                "type": "paragraph",
                "text": "(Subd (d) amended effective January 1, 2017; adopted as part of a longer subd (d); previously amended effective July 1, 1984, January 1, 1992, July 1, 1997, and January 1, 2004.)"
              }
            ]
          }
        ]
      },
      {
        "type": "note",
        "role": "comment",
        "title": "Advisory Committee Comment",
        "blocks": [
          { "type": "paragraph", "text": "See also rule 1.200 concerning the format of citations." }
        ]
      }
    ],
    "plain_text": "(d) Length of memorandum\nExcept in a summary judgment or summary adjudication motion, no opening or responding memorandum may exceed 15 pages. In a summary judgment or summary adjudication motion, no opening or responding memorandum may exceed 20 pages. No reply or closing memorandum may exceed 10 pages. The page limit does not include the caption page, the notice of motion and motion, exhibits, declarations, attachments, the table of contents, the table of authorities, or the proof of service.",
    "source_url": "https://courts.ca.gov/cms/rules/index/three/rule3_1113",
    "captured_at": "2026-10-19T04:34:37.532+00:00"
  }
}
```

## Response fields

The fields before `current` are the ones [`/rulebooks/{rulebook_id}/rules`](/api-reference/rulebook-rules) returns for each rule.

**number** `string`

Official rule number, as printed

**slug** `string`

URL form of the number, as used in `site_url`

**citation** `string`

How to cite the rule

**revision\_id** `string`

Identifier of this version of the rule. It changes when the rule's heading, place in the rulebook,
text, status or effective date changes. The requirements read from the rule carry the same id in
`rulebook_rule.revision_id`.

**heading** `string`

The rule's heading

**outline** `array`

Where the rule sits in the rulebook, from the top level down

**legal\_status** `string`

`in_force`, `repealed` or `reserved`. Repealed and reserved rules usually carry only a history
note.

**effective\_from** `string | null`

Date the current text took effect, as the official source states it. `null` when it gives none.

**observed\_at** `string`

When we first saw this version of the rule on the official source

**removed** `boolean`

`true` when the official source no longer lists the rule. The rule keeps the text it had when it
was last listed and has no requirements.

**requirement\_count** `integer`

Requirements read from the current text. Check `extraction_status` before reading `0` as none.

**extraction\_status** `string`

`succeeded`, `pending`, `failed` or `skipped`; see [List rulebook
rules](/api-reference/rulebook-rules.md)

**site\_url** `string`

The rule's page on courtrules.app

**current** `object | null`

The rule's latest official text. For a removed rule, the text it had when it was last listed.
`null` when no text is available.

**Current**

**revision\_id** `string`

The version of the rule this text belongs to. Equals the rule's `revision_id`.

**heading** `string`

The rule's heading in this version

**blocks** `array`

The official text as structured blocks, in document order. See the block types below.

**plain\_text** `string`

The operative text as lines: every paragraph, item and table row in order, with item labels.
History notes and committee comments are left out. Empty for a rule with no operative text.

**source\_url** `string`

The official page the text was read from

**captured\_at** `string`

When we fetched that page for this version

### Block types

Every block has a `type`. Blocks nest: an item can hold paragraphs, other items and notes, and a note holds paragraphs.

| `type` | Fields | What it is |
| - | - | - |
| `paragraph` | `text` | A paragraph of rule text |
| `item` | `label`, `heading` (optional), `text` (optional), `children` (optional) | A labeled part: a subdivision such as `(d)` with its heading, or a numbered paragraph such as `(1)` |
| `table` | `rows`, each with `cells` (`text`, optional `header`, `colspan`, `rowspan`) | A table printed in the rule |
| `note` | `role` (`history`, `comment` or `editor`), `title` (optional), `blocks` | Text printed with the rule that is not part of it: amendment history, committee comments |

## Notes and plain text

Notes are shown in `blocks` and left out of `plain_text`, out of [search](/api-reference/rulebook-rules.md), and out of the requirements. A history note such as "Subd (d) amended effective January 1, 2017" tells you when a part changed; it is not an instruction to a filer.

## Errors

### 400: Invalid parameters

Returned when `rulebook_id` cannot be an identifier, or when `number` could not be any stored number: a space at either end, two spaces in a row, a control character, or more than 40 characters.

```json 400 theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "error": "Invalid request",
  "details": [
    {
      "path": "number",
      "message": "A rule number cannot start or end with a space or hold two spaces in a row"
    }
  ],
  "docs_url": "https://docs.courtrules.app/api-reference/get-rulebook-rule"
}
```

### 404: Rulebook or rule not found

Returned when no rulebook has this identifier, or the rulebook has no rule with exactly this number.

```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "error": "Rule '9.999' not found in the California Rules of Court.",
  "suggestion": "Rule numbers match exactly as the rulebook prints them, without the word Rule. Find a rule with GET /api/v1/rulebooks/california-rules-of-court/rules?q=<words>.",
  "docs_url": "https://docs.courtrules.app/api-reference/get-rulebook-rule"
}
```

One rule counts as one row against your [daily row limit](/api-reference/rate-limits.md), however long its text.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.