---
title: "G.20 - Finance Companies, Owned and Managed Receivables (percent change)"
method: GET
path: "/api/v1/fed/g20"
tags: ["Central Banks & Monetary"]
---

# G.20 - Finance Companies, Owned and Managed Receivables (percent change)

`GET /api/v1/fed/g20`

Federal Reserve G.20 statistical release (Finance Companies - Owned and Managed Receivables; monthly). Total receivables held by finance companies and their breakdown into business, consumer, and real estate receivables. IMPORTANT: these are percent-change-at-annual-rate variants, NOT dollar levels - the corresponding level series do not exist on FRED, so this endpoint reports the rate of change of the receivables stock, not the stock itself. Data drawn live from FRED with 6-hour cache.

## Query parameters

- `lookback_months` integer — Months of history to return (default 36, max 120).
- `include_discontinued` boolean — When true, include discontinued and superseded series in the response. Default false returns only release_status=active series.

## Response `200`

G.20 monthly observation grid with series_metadata + failed_series envelope.

- EnvelopeFedG20Data
  - `data` FedG20Data, required — Monthly observations of the G.20 Owned and Managed Receivables family. Values are FRED percent-change-at-annual-rate variants (the level series do not exist on FRED), so this is a rate-of-change view, not a stock level (DATA-1.7.3).
    - `release_date` string, nullable — FRED release publish date if known, otherwise null. The B3 endpoints currently leave this null and use latest_observation_date for freshness.
    - `latest_observation_date` string, nullable — Max observation_date across active series.
    - `series_metadata` FedReleaseSeriesMetadata[], required
      - `series_id` string, required
      - `title` string, required
      - `units` string, required
      - `frequency` string, required
      - `seasonally_adjusted` boolean, required
      - `release_status` string, required — One of: active, discontinued, superseded.
      - `last_updated` string, nullable — ISO 8601 timestamp from FRED metadata. Null when not retrieved.
      - `last_observation_date` string, nullable — Latest observation date for this series, ISO 8601.
      - `superseded_by` string, nullable — Replacement series ID when release_status=superseded.
    - `failed_series` string[] — Series whose fetch failed (network, 404, parse error). Distinct from legitimate null observations inside snapshots. Empty list = full success.
    - `monthly_data` FedReleaseSnapshot[], required
      - `observation_date` string, required
      - `series` object, required — Map series_id -> numeric value or null.
  - `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.
- `422` — Validation Error
- `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/d3e3d9c28132/schema)
