---
title: "ETF static profile from the SEC annual prospectus (485BPOS)"
method: GET
path: "/api/v1/etf/{symbol}/profile/sec"
tags: ["Funds & ETFs"]
---

# ETF static profile from the SEC annual prospectus (485BPOS)

`GET /api/v1/etf/{symbol}/profile/sec`

Static fund profile for one ETF underlier from the SEC's annual prospectus on Form 485BPOS (the post-effective amendment carrying the audited Financial Highlights). Surfaces the latest fiscal-year-end NAV per share, fund net assets, expense ratio, and net-investment-income ratio (the Tier S yield proxy), plus the fiscal-year-end date and an inception date extracted from the N-1A body. These same fields feed the canonical /etf/{symbol}/snapshot payload (NAV / AUM / expense ratio / yields / inception); this endpoint exposes the raw extract with its SEC provenance (cik / accession / fye_date). Figures are ANNUAL + period-stale by construction - compare fye_date against today to gauge freshness. Returns 404 profile_unavailable when the fund's Financial Highlights table could not be confidently located (per-sub-family filing reality) or the ETF files 10-K instead of N-1A (commodity-pool / grantor-trust structures: USO, UNG, GLD, SLV).

## Path parameters

- `symbol` string, required — ETF underlier ticker.

## Response `200`

SEC 485BPOS prospectus profile payload.

- EnvelopeSecProspectusPayload
  - `data` SecProspectusPayload, required — DATA-N4.3 / N4.2 derived endpoint: ETF static profile from the SEC annual prospectus (Form 485BPOS). Per-ETF blob written by the ``monthly_sec_prospectus`` Timer (15th 06:00 UTC). The 485BPOS is the post-effective amendment carrying the fund's audited Financial Highlights table; the ingest extracts the latest fiscal-year-end column (NAV / net assets / expense ratio / net-investment-income ratio), the fiscal-year-end date itself, and an independent inception date from the N-1A prospectus body. These same fields feed the canonical ``/etf/{symbol}/snapshot`` payload (NAV / AUM / expense ratio / yields / inception); this endpoint surfaces the raw prospectus extract directly with its source provenance (``cik`` / ``accession`` / ``fye_date``). The figures are ANNUAL + period-stale by construction: ``fye_date`` gives the fiscal-year-end the NAV / ratios are as-of. Compare it against today to gauge freshness. Returns 404 ``profile_unavailable`` when the fund's Financial Highlights table could not be confidently located (per-sub-family filing reality / new-fund prospectus) or the ETF files 10-K instead of N-1A (commodity-pool / grantor-trust structures: USO, UNG, GLD, SLV).
    - `version` string, nullable — Blob schema version.
    - `source` string, nullable — Upstream SEC form identifier.
    - `ticker` string, nullable — ETF underlier ticker.
    - `cik` integer, nullable — SEC Central Index Key of the registrant.
    - `series_id` string, nullable — SEC series identifier (multi-class trusts), when resolved.
    - `class_id` string, nullable — SEC class/contract identifier (share class), when resolved.
    - `accession` string, nullable — SEC filing accession number (dashed format).
    - `filing_date` string, nullable — Date the 485BPOS was filed (YYYY-MM-DD).
    - `fye_date` string, nullable — Fiscal-year-end date the Financial Highlights figures are as-of (YYYY-MM-DD). The NAV / ratios reflect this latest audited column.
    - `nav_per_share` number, nullable — Net asset value per share, end of period (audited).
    - `net_assets` number, nullable — Fund net assets, end of period, in USD (unit-normalised from the filing's thousands / millions notation).
    - `expense_ratio_pct` number, nullable — Ratio of net (or total) expenses to average net assets, percent.
    - `net_investment_income_pct` number, nullable — Ratio of net investment income to average net assets, percent. Used as the Tier S yield proxy in the snapshot.
    - `inception_date` string, nullable — Fund inception date (ISO), extracted from the N-1A body ('commenced operations on ...'). Null when absent.
    - `status` string, nullable — Per-ticker ingest status. ``ok`` when the Financial Highlights parsed; visible non-fabricating statuses otherwise (``no_cik`` / ``no_485bpos`` / ``no_financial_highlights`` / ``parse_error`` / ``out_of_bounds`` / ...).
    - `fetched_at` string, nullable — ISO-8601 timestamp of when Sugra ingest captured the blob.
    - `cycle_started_at` string, nullable — ISO-8601 timestamp of the ingest cycle that produced the blob.
    - `data_source` string, nullable — Canonical source slug echoed for this endpoint.
    - `license_attribution` string, nullable — U.S. Public Domain (federal data, 17 USC 105).
  - `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)
