---
title: "Treasury debt composition (MSPD) + auction demand (bid-to-cover)"
method: GET
path: "/api/macro/treasury-debt"
tags: ["Macro"]
---

# Treasury debt composition (MSPD) + auction demand (bid-to-cover)

`GET /api/macro/treasury-debt`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/macro/treasury-debt`
- Auth: none declared

K15 consumer slice (task #25): the v152 MSPD composition read —
total public debt outstanding + marketable/nonmarketable split + the
marketable class breakdown (amounts published in MILLIONS of dollars;
the panel displays trillions) — plus the per-type auction-demand
summary (bid-to-cover over the recent completed-auction window). FREE
public-domain Treasury FiscalData — deliberately ungated
(sf_monetization_v3; matches the /api/macro/* siblings).

Honest omission end-to-end: the headline comes ONLY from the published
Total row (never summed from parts — a partial ingest must not
fabricate a smaller total); classes render only when their published
figure parses. Degrades to {rows: [], auctions: [], count: 0} when PG
is unavailable or pre-first-ingest — the FE panel stays empty, never a
broken card.

## Response `200`

Successful Response

- MacroTreasuryDebtResponse: `GET /api/macro/treasury-debt` — K15 consumer slice (task #25): the MSPD debt-composition read (total outstanding + marketable/nonmarketable split + marketable class breakdown; amounts published in MILLIONS, displayed in trillions) plus the per-type auction-demand summary (bid-to-cover — the demand pulse). FREE public-domain Treasury FiscalData, deliberately NO tier-gate (sf_monetization_v3; matches the ungated /api/macro/* siblings). `rows`/`auctions` are ALWAYS lists (empty on PG-down / pre-first-ingest degrade) so the FE forEach never NPEs; uncomputable pieces are OMITTED (honest omission). The error branch adds `error` and keeps rows=[].
  - `total_display` string, nullable: Headline, e.g. "$36.2T".
  - `as_of` string, nullable: MSPD record_date (ISO, monthly).
  - `split` MacroTreasuryDebtRow[], required
    - `label` string, required: Class name, e.g. "Notes" or "Marketable".
    - `display` string, required: Rendered dollar string, e.g. "$14.8T".
    - `value_mil` number, nullable: Total outstanding in MILLIONS of dollars (as published).
    - `share_pct` number, nullable: Share of total public debt outstanding, percent.
  - `rows` MacroTreasuryDebtRow[], required
    - `label` string, required: Class name, e.g. "Notes" or "Marketable".
    - `display` string, required: Rendered dollar string, e.g. "$14.8T".
    - `value_mil` number, nullable: Total outstanding in MILLIONS of dollars (as published).
    - `share_pct` number, nullable: Share of total public debt outstanding, percent.
  - `auctions` MacroTreasuryAuctionRow[], required
    - `security_type` string, required: "Bill" / "Note" / "Bond" / "TIPS" / "FRN" / "CMB".
    - `avg_bid_to_cover` number, required: Mean bid-to-cover over the window's completed auctions.
    - `auctions` integer, required: Completed auctions in the window.
    - `latest_date` string, nullable: Most recent auction date (ISO).
    - `latest_bid_to_cover` number, nullable: The newest auction's bid-to-cover.
  - `count` integer, required
  - `error` string, nullable

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
