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

# Tickers

> GET /api/v2/tickers/{ticker} — every analyst call on one ticker, grouped by analyst.

A **ticker call** is one analyst's position on one symbol, with the quote behind
it. `GET /api/v2/stock-picks` returns those calls grouped by day;
`GET /api/v2/tickers/{ticker}` returns the calls on a single ticker grouped by
analyst — the same rows, re-keyed.

| Route | Access |
| - | - |
| `GET /api/v2/tickers/{ticker}` | Subscription (PRO/EXPERT) or credits (account mount) |
| `GET /api/v2/x402/tickers/{ticker}` | x402 / MPP pay-per-use (wallet mount) |
| `GET /api/v2/tickers/search` | Free, no auth (ticker autocomplete) |

## `GET /api/v2/tickers/search`

Ticker autocomplete. `q` is a symbol fragment (max 10 characters); `limit` is
1-15. Omit `q` for the most-traded tickers. Free, no auth.

```bash theme={null}
curl "https://dripstack.com/api/v2/tickers/search?q=NVDA&limit=8"
```

Returns `{ "query", "count", "tickers": [...] }` ranked by how often the desk
calls the ticker.

## `GET /api/v2/tickers/{ticker}`

Resolves the caller's plan from the bearer credential first, then either serves
the request from the subscription window or routes wallet callers
through the pay-per-use flow.

### Subscription access (Bearer API key, OAuth token, or session JWT)

* **PRO / EXPERT** are served **free** with the **live** window (up to today).
* An API key **without** a subscription is rejected with `403` and
  `reason: "subscription_required"`.
* An authenticated caller without a paid plan spends **Drip credits**.

### Pay-per-use (anonymous)

No free API access without a credential. Pay per use with an x402 client. The
pay-per-use path serves the free 7-day-delayed window; subscribers read the
live window.

### Query parameters

| Param | Meaning |
| - | - |
| `from`/`to` | Inclusive UTC day range; defaults to the last 30 days ending today |
| `sentiment` | `BULLISH` / `BEARISH` / `NEUTRAL`; repeat for several |
| `author` | Exact stored analyst name; repeat for several |
| `guests` | `exclude` drops podcast-guest calls, which are not analyst coverage |
| `sort` | `newest` (default) or `oldest` |
| `limit` | Max mentions (1-500, default 200); `meta.truncated` says if more exist |

### Response

```jsonc theme={null}
{
  "meta": { "ticker": "NVDA", "from": "2026-09-15", "to": "2026-10-15", "truncated": false },
  "summary": {
    "calls": 20,
    "analysts": 8,
    "bullish": 17,
    "bearish": 3,
    "neutral": 0,
    "byAction": { "HOLD": 12, "NEW_POSITION": 4, "OPINION": 3, "EXIT": 1 },
  },
  "authors": [
    {
      "author": "Michael Burry",
      "calls": 2,
      "bullish": 0,
      "bearish": 2,
      "latestAt": "2026-10-11T19:35:20.000Z",
      "mentions": [
        {
          "sentiment": "BEARISH",
          "action": "EXIT",
          "evidenceQuote": "I covered all my short common stock positions — …",
          "articleTitle": "Fannie Mae, Freddie Mac, …",
          "publishedAt": "2026-09-28T18:00:38.000Z",
          "thesis": "…",
          "priceTarget": null,
        },
      ],
    },
  ],
}
```

### Reading stance correctly

* **`sentiment` is the only stance signal.** `direction` is retired.
* **`summary.byAction` exists because stance alone lies.** An `EXIT` +
  `BEARISH` pick is a *closed* short — Burry covering his position still reads as
  a bearish call if you only count sentiment. Cross-check `byAction` before
  claiming a desk is bearish.
* **`analysts` counts each analyst once**, however many calls they made.
* `sentiment` is `null` when the stored value was not one of the three — it is
  counted in `calls` but in no stance bucket, never guessed.

### Per-mention indicators

Each mention carries the same fields as the picks feed: `thesis` (AI-generated
summary of the stated reasoning — the readable body for a podcast guest, whose
`evidenceQuote` is often throwaway chatter), `rationaleSnippet`, `timeframe`
(+ `timeframeQuote`), `priceTarget` (+ `priceTargetQuote`) and `underlyingTarget`
(+ `underlyingTargetQuote`). Each indicator quotes where the analyst said it.

### Errors

| Status | Meaning |
| - | - |
| `400` | Malformed ticker, bad date, `from` after `to`, unknown filter value |
| `401` | Invalid bearer credential |
| `402` | Payment required (anonymous) or insufficient credits |
| `403` | API key without a subscription, or insufficient credits |
| `404` | No picks mention the ticker in the window (returned before payment) |

```bash theme={null}
curl -H "Authorization: Bearer pk_drip_..." \
  "https://dripstack.com/api/v2/tickers/NVDA?from=2026-06-01&sentiment=BEARISH&guests=exclude"
```


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