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

# Core Concepts

> Publications, posts, synthesized summaries, stock picks, and search — the building blocks of the Drip API.

Drip indexes premium financial **publications**, breaks them into **posts**, and
sells AI-generated **synthesized summaries** of those posts. From the same
content it also extracts **stock picks**. **Search** is how you discover any of
it. This page defines each term as the API uses it.

## How they relate

```
Publication ──< Post ──> Synthesized Summary   (the paid deliverable)
                 │
                 └──< Stock Pick               (tickers extracted from the post)
```

* A **publication** has many **posts**.
* A **post** has one **synthesized summary** (generated on demand) and may
  produce zero or more **stock picks**.
* **Search** ranks posts across every publication.

## Publication

A **publication** is a source Drip has indexed — a newsletter, blog, or podcast.
Each publication comes from a platform: **Substack**, **Beehiiv**, a generic RSS
feed, a podcast RSS feed, or email.

A publication is identified by its **`publicationSlug`**, a normalized hostname:

| Source URL                                | `publicationSlug`                 |
| ----------------------------------------- | --------------------------------- |
| `https://bytesbeyondborders.substack.com` | `bytesbeyondborders.substack.com` |
| `https://www.reallygoodbusinessideas.com` | `reallygoodbusinessideas.com`     |

Publication metadata includes `title`, `description`, `siteUrl`, `authorName`,
and `lastSyncedAt`. List the full catalog with `GET /api/v1/publications`, or
look one up by name with `GET /api/v1/publications/search?q=...`.

## Post

A **post** is a single item within a publication — an article or a podcast
episode. It is addressed by its publication plus its own **`slug`**:

```
GET /api/v1/publications/{publicationSlug}/{postSlug}
```

A post carries `title`, `subtitle`, `publishedAt`, `url` (and `audioUrl` for
podcast episodes), and an optional per-post price (`priceCents`). The post's
**synthesized summary** is the paid content — see below.

<Note>
  A `publicationSlug` + `slug` pair (returned by search) is all you need to
  build a post's paid URL.
</Note>

## Synthesized summary

A **synthesized summary** is the AI-generated summary of a post — the actual
product you pay for. Requesting a post's paid route returns its
`synthesizedSummary` (plus `paymentInfo`) once payment settles.

Summaries are generated on demand. If a summary is not ready yet, the route
returns `503` with code `summary_not_ready` and **no payment challenge** — retry
shortly. See [Payment Flow](/concepts/payment-flow) for the full request
lifecycle.

## Stock pick

A **stock pick** is a ticker-level call that Drip extracts from a source post —
an analyst recommendation or long/short idea, structured for agent consumption.
Fetch the latest day's picks with `GET /api/v1/stock-picks` (a paid route).

Each pick includes:

| Field                                        | Meaning                                                              |
| -------------------------------------------- | -------------------------------------------------------------------- |
| `ticker`, `tickerExchange`                   | The instrument and its exchange                                      |
| `instrumentType`                             | `EQUITY`, `ETF`, `OPTION`, or `OTHER`                                |
| `direction`                                  | `LONG` or `SHORT`                                                    |
| `action`                                     | `NEW_POSITION`, `ADD`, `HOLD`, `RECOMMENDATION`, `REDUCE`, or `EXIT` |
| `authorConviction`, `convictionLabel`        | The author's conviction, numeric + labeled                           |
| `activePick`                                 | Whether the call is currently active                                 |
| `evidenceQuote`, `rationaleSnippet`          | Supporting quote and reasoning from the source                       |
| `author`, `articleTitle`, `articleUrl`       | Attribution back to the source post                                  |
| `publishedAt`, `publicationSlug`, `postSlug` | Source post context                                                  |

A stock-picks request always returns **one effective UTC calendar day** (the
latest day with picks by default, or a specific `date=YYYY-MM-DD`), never a
rolling range. Pricing scales with the number of distinct attributed **source
articles** in the returned picks. A `404` means no picks exist for that day —
do not pay.

## Search

**Search** (`GET /api/v1/search`) is how you discover posts by topic across every
indexed publication. It runs in **`hybrid`** mode by default — combining semantic
and lexical (full-text) ranking — or **`fts`** for lexical-only.

Results are returned as `items[]`, each a ranked **candidate** with
`publicationSlug`, `slug`, `title`, `subtitle`, `publishedAt`, and relevance
fields. Treat results as candidates, not evidence: answer substantive questions
only from a fetched synthesized summary, and use a candidate's `publicationSlug`

* `slug` to fetch it. See the [Quickstart](/quickstart) for a worked example.
