# PIT API quickstart

The PIT API returns public records available at a specific point in time. Pass a timestamp and a company identifier to get the filings visible at that time and the timestamp field used for filtering. Each response also includes a coverage certificate for every date queried, indicating data availability and row counts.

Reference page. Updated 2026-08-26 against the corpus described in [coverage](https://pit.aqx.llc/docs/coverage).

> **Certified history ends 2023-03-31.** SEC EDGAR and Federal Register public inspection data are certified through 2023-03-31. Between that date and 2026-08-26, the corpus contains only seven OFAC actions, with the newest dated 2024-08-06. Since 2026-08-26, the live tape adds rows every 15 minutes. Queries in that window return live tape rows instead of certified backfill data. See [Coverage](https://pit.aqx.llc/docs/coverage) for status by data source.

## Run a query without an API key

The `/v1/sample` routes do not require an `Authorization` header. They support three sample companies: `svb`, `aapl`, and `meta`. These routes use the same backend and response envelope as paid routes. Every response includes `sample: true`. The rate limit is 30 requests a minute per IP.

The `as_of` parameter sets the query timestamp. The API excludes all records timestamped after this value.

**as_of 2023-03-09T20:00:00Z — 200 · count 0**

```
$ curl -s "https://api.pit.aqx.llc/v1/sample/news?example=svb&as_of=2023-03-09T20:00:00Z"

{
  "as_of": "2023-03-09T20:00:00Z",
  "visible_by": "published_at",
  "status": "ok",
  "results": [],
  "count": 0,
  "coverage": { "touched": ["sec.edgar/2023-03-09", …], "missing": [] }
}
```

No records matched, and `coverage.missing` is empty. This confirms that every day queried has a valid certificate and SVB had zero filings at that timestamp. The certificate for `sec.edgar/2023-03-09` is `complete` with 2,828 rows.

**as_of 2023-03-10T23:59:59Z — 200 · count 1**

```
$ curl -s "https://api.pit.aqx.llc/v1/sample/news?example=svb&as_of=2023-03-10T23:59:59Z"

{
  "results": [
    {
      "id": "0001193125-23-067777_719739",
      "source_id": "sec.edgar",
      "form": "8-K",
      "cik": "719739",
      "title": "SVB FINANCIAL GROUP 8-K",
      "published_at": "2023-03-10T23:59:59Z",
      "available_at": null,
      "acceptance_at": "2023-03-10T22:23:03Z",
      "availability_basis": "unknown",
      "content_sha256": "8a95862ef…d2d06a"
    }
  ],
  "count": 1
}
```

One day later, the response includes the receivership 8-K. Only the `as_of` parameter differs between the two calls. See [Timestamps](https://pit.aqx.llc/docs/clocks) for why `published_at` is set to 23:59:59 and why `available_at` is null.

## Other sample routes

| Route | Returns |
| --- | --- |
| `/v1/sample/diff` | The rows that became visible between two instants. On `example=svb` that is the one 8-K. |
| `/v1/sample/coverage` | The 16 certificates behind the samples, 8 from `sec.edgar` and 8 from `us.federal_register.pi`. |
| `/v1/sample/mapping` | Ticker to CIK at an instant. `example=meta` answers FB before 2022-06-09 and META after it. |

## Python

The Python client wraps the same API routes. Its `known_at` argument maps directly to the `as_of` parameter.

**pitnews**

```
$ pip install ./clients/python
```

```
from pitnews import PitClient

client = PitClient(api_key="pit_live_…")
page = client.query_as_of(
    ticker="SIVB",
    source="sec.edgar",
    known_at="2023-03-10T23:59:59Z",
    visible_by="published_at",
)
```

To test without a key, call `/v1/sample/news` directly. Each sample covers one of three companies and returns the standard JSON response format. An API key grants access to all 587,689 rows.

## API keys

Paid routes require the header `Authorization: Bearer pit_live_…`. Log in using GitHub, Google, or email to create API keys in the dashboard. You can create multiple keys per account. Each key shows a name, prefix, last-used timestamp, and a revoke button. The secret is displayed only once at creation time. All plans access the entire ingested history. Plans differ by rate limit, key cap, and Parquet file access; see [pricing](https://pit.aqx.llc/pricing) for details.

Standard API keys cover internal use by you or your employer. If your users receive PIT data, you must obtain a [commercial license](https://pit.aqx.llc/commercial).

## Additional documentation

| Page | Covers |
| --- | --- |
| [Timestamps](https://pit.aqx.llc/docs/clocks) | The five timestamp fields, which three can be queried, and what a null clock does to a cut. |
| [Coverage](https://pit.aqx.llc/docs/coverage) | Certificates, the four coverage key shapes, and the rules that turn a cut into a 409. |
| [Identity](https://pit.aqx.llc/docs/mapping) | Ticker to CIK intervals, and the `leakage_risk` label on each mapping source. |
| [API reference](https://pit.aqx.llc/docs/api) | Envelope, headers, pagination, error codes, and the route list. |
| [Glossary](https://pit.aqx.llc/glossary/as-of) | Definitions of as-of, coverage certificate, and lookahead bias. |
| [Worked examples](https://pit.aqx.llc/use/sec-8k-as-of) | An SEC 8-K cut end to end, and an LLM backtest that fails closed on a gap. |
