---
title: "Derived US macro regime (Sugra-computed): liquidity / credit / policy majority"
method: GET
path: "/api/v1/macro/regime"
tags: ["Economics"]
---

# Derived US macro regime (Sugra-computed): liquidity / credit / policy majority

`GET /api/v1/macro/regime`

One machine-readable regime label - expanding / neutral / contracting - folded by simple majority from three votes, each the sign of a 13-week change with an inclusive neutral band: liquidity (net-liquidity delta_13w, band 75 USD bn), credit (Chicago Fed credit-conditions subindex change, SIGN INVERTED - the index rises when conditions tighten; band 0.06) and policy (US policy rate change from the Bank for International Settlements dataset, band 12.5 bp). The liquidity and credit bands are the middle tercile of each series' own measured 13-week move distribution (a third of history reads neutral by construction); the policy band is FIXED at half a standard 25 bp step, so any real move clears it - hikes vote contracting, cuts expanding. A vote with an unavailable input is null - absent, never fabricated - and fewer than two cast votes is 503, never a label from one input. Every vote discloses its route, dates, change and band, so the classification is reproducible from public data. This endpoint REPLACES the six-request client-side recipe. Cache 6h.

## Response `200`

Majority regime label + the three disclosed votes.

- EnvelopeMacroRegimeData
  - `data` MacroRegimeData, required — Response payload for GET /api/v1/macro/regime.
    - `regime` string, required — The majority classification: expanding / neutral / contracting. Two or more votes in one direction set it; anything else is neutral - one vote can never tip the regime.
    - `as_of` string, nullable — Newest observation date across the cast votes.
    - `votes` RegimeVote[], required — The three votes (liquidity / credit / policy) with their disclosed inputs.
      - `name` string, required — Vote name: liquidity, credit, or policy.
      - `vote` string, nullable — expanding / neutral / contracting; null when the input was unavailable (absent, never fabricated).
      - `unavailable_reason` string, nullable — Why the vote is null; null on a cast vote.
      - `inputs` RegimeVoteInputs, required — The disclosed inputs one regime vote was judged from - uniform across the three votes so clients parse one shape.
        - `route` string, required — The API route serving this vote's underlying data.
        - `series_id` string, nullable — Series identifier when the input is a single series (NFCICREDIT, cbpol:US); null for composite inputs.
        - `window_weeks` integer, required — The change window in weeks (13 - the same window the net-liquidity delta uses).
        - `change` number, nullable — The 13-week change the vote classified; null when the input was unavailable.
        - `unit` string, required — Unit of `change`: usd_bn (liquidity), index_points (credit), pct_points (policy).
        - `as_of` string, nullable — Date of the latest observation used.
        - `compared_to` string, nullable — Date of the prior observation (the newest one at least 13 weeks older).
        - `neutral_band` number, required — The inclusive neutral band: |change| <= band votes neutral. Tercile-derived for liquidity/credit, one policy step for policy.
        - `note` string, nullable — Sign semantics for this vote (e.g. the credit index rises when conditions TIGHTEN, so its sign is inverted).
    - `vote_counts` RegimeVoteCounts, required — The tally the majority fold ran on.
      - `expanding` integer, required — Votes for expanding.
      - `neutral` integer, required — Votes for neutral.
      - `contracting` integer, required — Votes for contracting.
      - `unavailable` integer, required — Votes that could not be cast (null inputs).
    - `window_weeks` integer, required — The uniform change window (13 weeks).
    - `methodology_notes` string[], required — How each vote and the fold are computed, including the measured tercile bands.
    - `attribution` string, required — Where the inputs come from and that the classification is Sugra's own.
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/a0c7dc18e21b/schema)
