---
title: "Macro indicators"
method: GET
path: "/macro/indicators"
tags: ["Macro & FX"]
---

# Macro indicators

`GET /macro/indicators`

## Request

- Base URL: `https://mcp.dalalos.in/v1`
- URL: `https://mcp.dalalos.in/v1/macro/indicators`
- Auth: HTTP bearer

Official MOSPI CPI/WPI/IIP/GDP and PPAC crude-basket series.

## Query parameters

- `dataset` string, required
- `from` string
- `to` string
- `series_contains` string
- `limit` 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)
