---
title: "Per-stock FII flow"
method: GET
path: "/stocks/{q}/fii-flow"
tags: ["Stocks"]
---

# Per-stock FII flow

`GET /stocks/{q}/fii-flow`

## Request

- Base URL: `https://mcp.dalalos.in/v1`
- URL: `https://mcp.dalalos.in/v1/stocks/{q}/fii-flow`
- Auth: HTTP bearer

Per-stock daily FII/FPI transaction flow (CDSL-only coverage). Renamed from `/stocks/{q}/fii-activity` (issue #285) so the path carries "flow" like its `/market-fii-dii-flow`/`/fii-dii/sectors` siblings; the old path is kept as a deprecated alias for this release.

## Path parameters

- `q` string, required

## Query parameters

- `days` integer

## Response `200`

Success (or success-with-empty when nothing is cached).

- Envelope: Standard DalalOS response envelope (src/models.py). `source` is a per-tool provenance tag; `stale`/`data_age_seconds` describe cache freshness.
  - `cached_at` string, nullable: ISO timestamp the served data was refreshed.
  - `data` unknown
  - `data_age_seconds` number: Present only when cached_at is set.
  - `error` string, nullable
  - `reason_code` string, nullable: Stable machine-readable category (no_data, not_found, bad_request, ...).
  - `resolved_via` string: Present only when a query resolved via a rename/merger alias.
  - `source` string, nullable
  - `stale` boolean, required
  - `status` 'success' | 'error', required

## Other responses

- `400`: Malformed request (reason_code=bad_request).
- `401`: Missing/invalid API key (reason_code=unauthorized).
- `402`: Monthly quota exhausted (reason_code=quota_exceeded).
- `403`: Account or plan is not permitted to use this route.
- `404`: Identifier resolves to nothing (reason_code=not_found).
- `409`: Request conflicts with an account limit.
- `429`: Rate or concurrency limit exceeded.

---

[API](https://skmtc.dev/dalalos/apis/dalalos-indian-stock-rest-api.md) · [All operations](https://skmtc.dev/dalalos/apis/dalalos-indian-stock-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dalalos/apis/dalalos-indian-stock-rest-api/revisions/b13d59d2b300?raw)
