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

# Research filing objections

> Find regulator objection letters across filings, read their text, and retain the filing context.

Use [connection setup](/guides/index#connect-once), then search for existing
SERFF objection letters across filings:

```http theme={null}
GET /api/v2/filing-objections?state=CA&toi=05.0&q=rating%20factors&limit=10
```

`q` searches letter text for all the supplied English stemmed words. It ignores
punctuation and stopwords; it does not implement quoted phrases, boolean
operators, semantic matching, or relevance ranking. You can also filter by
carrier, group, SubTOI and inclusive objection dates. To inspect one known
filing, use `filingId={filingId}` instead of searching each filing separately.

## Select a letter and read it

Each result is a **letter**, which can contain several individual issues. It
includes `filing` metadata, the letter's `id`, available date/reviewer details,
and `textPreview`. The preview is the beginning of the letter, not necessarily
the matching passage. When `textTruncated` is true, read on:

```http theme={null}
GET /api/v2/filing-objections/{objectionId}?maxCharacters=4000
GET /api/v2/filing-objections/{objectionId}?maxCharacters=4000&cursor={nextCursor}
```

Keep the ID and `maxCharacters` unchanged and continue until `nextCursor` is
null. `location` uses Unicode character offsets, unlike file text's byte
offsets. Save the returned `textRevision` and offsets with your evidence. Retry
the same request after a lost response; deduplicate by revision and start offset.

Follow `filing.id` into [Filing detail and source documents](/guides/read-filing-documents).
This letter extraction does not establish a particular original-file version
or PDF page. Do not substitute today's download version for missing provenance.

## Handle changes and missing coverage

| Observation | Meaning and next step |
| - | - |
| `textAvailability: "unavailable"` | The letter metadata exists, but usable text is missing. Text fields are null; inspect available filing documents. |
| 400 `invalid_cursor` | The cursor expired, its query/scope changed, or the letter text changed. Restart without the cursor. |
| 404 when reading a previously returned letter ID | Extraction may have replaced the record. Rediscover using its `filing.id`. |
| 503 `temporarily_unavailable` | Respect `Retry-After` and retry the same request with bounded backoff. |
| No matching letters | No stored extraction matched these filters; this does not prove there were no regulatory objections. |

For list continuation, repeat the same filters and limit with `nextCursor`.
Lists use live record-ID order, not chronological or relevance order. Cursors
expire after 24 hours. Refreshes can change IDs and membership; see
[pagination and recovery](/guides/pagination-and-recovery).

Coverage includes stored SERFF objection letters only. It excludes Notes to
Filer, Florida IRFS correspondence, and your managed filing response workflow.
`sourceCompleteness` remains `unknown`, and separate extracted rows may duplicate
a source letter. These operations read existing data; they do not start scraping,
OCR, extraction, or submission work.


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