US Compliance API Reference
Base URL: https://api.techcompass.com.au — Covers SEC EDGAR and Federal Reserve FRED endpoints.
About this Dataset
The US Compliance API combines two of the most widely used US financial data sources into a single authenticated endpoint: SEC EDGAR and the Federal Reserve Economic Data (FRED) API.
SEC EDGAR
The US Securities and Exchange Commission’s EDGAR system is the authoritative public repository for all regulatory filings by US-listed public companies. The Tech Compass API exposes three EDGAR data streams:
- Company Facts (XBRL): Structured financial statement data — income statement, balance sheet, cash flow — for every reporting period back to the company’s first electronic filing. Updated within minutes of each SEC filing acceptance.
- Filings: The full filing history for any company by CIK number, filterable by form type (10-K, 10-Q, 8-K, DEF 14A, S-1, and 400+ others). Each record includes the accession number, filing date, and direct URL to the submission on EDGAR.
- Submissions: Company identity metadata — legal name, ticker, SIC code, state of incorporation — keyed by SEC Central Index Key (CIK).
Use cases: Due diligence on US public companies, financial modelling inputs, earnings monitoring, material event detection (8-K), beneficial ownership research, SEC filing compliance verification.
Federal Reserve Economic Data (FRED)
Maintained by the Federal Reserve Bank of St. Louis, FRED provides access to over 800,000 macroeconomic time series from 100+ data sources. Via Tech Compass you can retrieve both series metadata and observation history for any FRED series ID.
Commonly used series: Federal Funds Rate (FEDFUNDS), US GDP (GDP), CPI inflation (CPIAUCSL), unemployment rate (UNRATE), 10-year Treasury yield (DGS10).
Use cases: Macroeconomic scenario analysis, interest rate risk modelling, inflation-adjusted return calculations, regulatory capital stress testing.
Licensing
SEC EDGAR data is US Government public domain — unrestricted commercial use. FRED data is released under FRED’s Terms of Use, which permit commercial use with attribution. The data_lineage block on every response provides the source URL, retrieval timestamp, and license string for audit purposes.
Authentication
All endpoints except /health and /health/ready require an API key passed in the Authorization header:
Authorization: ApiKey tc_live_<your_key>
Keys beginning with sk_live_ (issued before May 2026) remain valid. New keys use the tc_live_ prefix. Obtain a key at signup.
Tiers
| Tier | Calls/month | Price |
|---|---|---|
| Free | 10,000 | $0 |
| Professional | 500,000 | USD $1,500/mo or AUD $2,250/mo |
| Enterprise | Unlimited | Contact sales |
Rate limit headers
Every response includes:
| Header | Description |
|---|---|
X-RateLimit-Limit | Monthly quota for your tier |
X-RateLimit-Remaining | Calls remaining this month |
X-RateLimit-Reset | UTC Unix timestamp when quota resets |
Common Response Structure
All data endpoints return a consistent envelope:
{
"data": { ... },
"meta": {
"request_id": "a1b2c3d4-...",
"cached": false,
"upstream_latency_ms": 142,
"timestamp": "2026-05-09T07:00:00Z",
"upstream_available": true,
"cached_at": null
},
"data_lineage": {
"source": "SEC EDGAR",
"source_url": "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json",
"retrieved_at": "2026-05-09T07:00:00Z",
"request_id": "a1b2c3d4-...",
"license": "US Government Public Domain - SEC EDGAR"
}
}
| Field | Type | Description |
|---|---|---|
meta.request_id | string | UUID for this request — matches audit log entry |
meta.cached | bool | true if response served from cache |
meta.upstream_latency_ms | int|null | Milliseconds to fetch from upstream (null on cache hit) |
meta.upstream_available | bool|null | false if upstream was down and stale cache was served |
meta.cached_at | ISO 8601|null | When cached data was originally fetched (present when upstream_available: false) |
data_lineage.source | string | Authoritative data source name |
data_lineage.source_url | string | Exact upstream URL used to fetch the data |
data_lineage.retrieved_at | ISO 8601 | When data was fetched from upstream |
data_lineage.license | string | Data licence |
Graceful Degradation
When an upstream source is temporarily unavailable:
- If cached data exists, it is returned with HTTP 200 and
meta.upstream_available: false meta.cached_atshows when the data was last successfully fetched- If no cache exists, HTTP 503 is returned
/health/readyreturnsdegraded: true— the service is still operational
Error Reference
All errors use a consistent body: {"error": "string", "message": "string"}
| Status | Meaning |
|---|---|
| 400 | Invalid parameters |
| 401 | Missing or invalid API key |
| 429 | Monthly quota exhausted — check X-RateLimit-Reset |
| 500 | Unexpected server error |
| 502 | Upstream returned an unexpected error |
| 503 | Upstream down and no cached data available |
Endpoints
GET /v1/sec/company/{cik}/facts
Returns all XBRL company facts for a given CIK — balance sheet, income statement, and cash flow data tagged under US-GAAP and IFRS.
| Parameter | Type | Description |
|---|---|---|
cik | path | SEC Central Index Key. Zero-padding applied automatically. |
curl "https://api.techcompass.com.au/v1/sec/company/0000320193/facts" \
-H "Authorization: ApiKey tc_live_<your_key>"
Errors: 401, 429, 502, 503
GET /v1/sec/filings
Returns filtered filing history for a company.
| Parameter | Required | Description |
|---|---|---|
cik | Yes | SEC Central Index Key |
form_type | No | SEC form type. Default: 10-K. Examples: 10-K, 10-Q, 8-K |
curl "https://api.techcompass.com.au/v1/sec/filings?cik=0000320193&form_type=10-K" \
-H "Authorization: ApiKey tc_live_<your_key>"
Errors: 400, 401, 429, 502, 503
GET /v1/sec/submissions
Returns full submission metadata — entity details, filing history across all form types, and current addresses.
| Parameter | Required | Description |
|---|---|---|
cik | Yes | SEC Central Index Key |
curl "https://api.techcompass.com.au/v1/sec/submissions?cik=0000320193" \
-H "Authorization: ApiKey tc_live_<your_key>"
Errors: 400, 401, 429, 502, 503
GET /v1/fred/series/{series_id}
Returns metadata for a FRED economic series — title, units, frequency, seasonal adjustment, and last update.
| Parameter | Description |
|---|---|
series_id | FRED series ID. Examples: GDP, UNRATE, FEDFUNDS, CPIAUCSL |
curl "https://api.techcompass.com.au/v1/fred/series/GDP" \
-H "Authorization: ApiKey tc_live_<your_key>"
Errors: 401, 429, 502, 503
GET /v1/fred/series/{series_id}/data
Returns time series observations for a FRED economic series.
| Parameter | Required | Description |
|---|---|---|
series_id | Yes (path) | FRED series ID |
observation_start | No | Start date YYYY-MM-DD. Default: series start |
observation_end | No | End date YYYY-MM-DD. Default: today |
curl "https://api.techcompass.com.au/v1/fred/series/GDP/data?observation_start=2020-01-01" \
-H "Authorization: ApiKey tc_live_<your_key>"
Errors: 401, 429, 503
GET /health & /health/ready
No authentication required. /health returns 200 if the process is running. /health/ready verifies database connectivity and upstream availability — always returns HTTP 200, use the degraded field to detect partial outages.
curl "https://api.techcompass.com.au/health/ready"
{
"status": "ok",
"degraded": false,
"database": "ok",
"upstreams": {
"sec_edgar": { "available": true },
"fred": { "available": true }
}
}
GET /health/data
No authentication required. Returns the freshness of all pipeline-ingested datasets. Returns HTTP 200 if all datasets are within their staleness thresholds, or HTTP 503 if any dataset is overdue. Use this to verify data currency before running compliance-critical workflows.
curl "https://api.techcompass.com.au/health/data"
{
"status": "ok",
"stale_sources": [],
"sources": {
"ofac": { "status": "ok", "last_date": "2026-06-19", "max_age_days": 2, "age_days": 0 },
"un": { "status": "ok", "last_date": "2026-06-19", "max_age_days": 8, "age_days": 0 },
"eu": { "status": "ok", "last_date": "2026-06-19", "max_age_days": 8, "age_days": 0 },
"fcdo": { "status": "ok", "last_date": "2026-06-19", "max_age_days": 8, "age_days": 0 },
"dfat": { "status": "stale", "last_date": null, "max_age_days": 8, "age_days": null },
"asic_company": { "status": "ok", "last_date": "2026-06-19", "max_age_days": 10, "age_days": 0 },
"asic_far": { "status": "ok", "last_date": "2026-06-01", "max_age_days": 10, "age_days": 18 }
}
}
stale until a static egress IP is in place. All other sources contribute to the 503 decision. Monitor via stale_sources to detect actionable freshness failures.
Common Use Cases
1. Check if a company is SEC-registered
Who uses this: Counterparty due diligence, compliance officers verifying a counterparty before onboarding.
curl "https://api.techcompass.com.au/v1/sec/company/0000320193/facts" \
-H "Authorization: ApiKey YOUR_API_KEY"
data.facts.us-gaap contains structured financial facts. Check data_lineage.retrieved_at for data freshness. Gotcha: CIK must be the 10-digit SEC CIK — leading zeros are applied automatically.2. Get all 10-K annual filings
Who uses this: Compliance reviewers building financial history timelines.
curl "https://api.techcompass.com.au/v1/sec/filings?cik=0000320193&form_type=10-K" \
-H "Authorization: ApiKey YOUR_API_KEY"
form_type is 10-K. Specify 10-Q for quarterly or 8-K for material events.3. Get material 8-K event filings
Who uses this: Risk teams monitoring for material events, M&A signal trackers.
curl "https://api.techcompass.com.au/v1/sec/filings?cik=0000320193&form_type=8-K" \
-H "Authorization: ApiKey YOUR_API_KEY"
accessionNumber to retrieve the full document from SEC EDGAR directly.4. Pull US GDP data
Who uses this: Macro researchers, risk modellers incorporating GDP growth into credit models.
curl "https://api.techcompass.com.au/v1/fred/series/GDP/data" \
-H "Authorization: ApiKey YOUR_API_KEY"
5. Pull Federal Funds Rate history
curl "https://api.techcompass.com.au/v1/fred/series/FEDFUNDS/data" \
-H "Authorization: ApiKey YOUR_API_KEY"
DFF series ID.6. Pull unemployment rate with date range
curl "https://api.techcompass.com.au/v1/fred/series/UNRATE/data?observation_start=2020-01-01&observation_end=2024-12-31" \
-H "Authorization: ApiKey YOUR_API_KEY"
7. Check your rate limit status
curl -I "https://api.techcompass.com.au/v1/fred/series/GDP" \
-H "Authorization: ApiKey YOUR_API_KEY"
X-RateLimit-Remaining in response headers. Decrements by 1 on every authenticated call. The -I flag (HEAD request) avoids fetching the body.8. Verify data freshness for audit purposes
Every response includes a data_lineage block with retrieved_at, source_url, and request_id. The request_id matches the corresponding immutable audit log entry.
data_lineage.retrieved_at reflects when the cached data was originally fetched — intentional for provenance accuracy.9. Check upstream availability
curl "https://api.techcompass.com.au/health/ready"
degraded field in the response body to detect partial outages.10. Test cache behaviour
Make the same call twice in quick succession. The second call should return meta.cached: true and meta.upstream_latency_ms: null.
X-RateLimit-Remaining. Rate limiting and caching are independent.Data Sources
| Source | Licence | Refresh |
|---|---|---|
| SEC EDGAR | US Government Public Domain | Cached 1 hour; upstream updates within minutes of filing |
| Federal Reserve FRED | US Government Public Domain | Cached 1 hour; upstream updates per FRED release schedule |
About this API
What this API does
The Tech Compass US Compliance Data API provides authenticated, audit-logged access to SEC EDGAR company facts and filing histories, and Federal Reserve FRED economic time series data. It wraps publicly available US government data sources with versioned schemas, rate limiting, immutable audit logging, and a consistent data_lineage block per response — purpose-built for regulated enterprise compliance workflows.
Who uses this API
- US compliance officers verifying SEC registration and filing history of counterparties
- Risk teams incorporating macroeconomic indicators into credit and portfolio models
- Fintech engineers building automated compliance data pipelines
- M&A due diligence teams reviewing SEC filing history of target companies
- RegTech platforms embedding SEC data into compliance-as-a-service products
- Quantitative researchers requiring auditable, versioned FRED time series data
Key use cases
- Counterparty SEC registration check — verify a company's SEC registration and retrieve all XBRL financial facts
- 10-K / 10-Q / 8-K filing retrieval — pull annual, quarterly, or material event filings for a given CIK
- Material event monitoring — retrieve 8-K filings to detect M&A activity, restatements, or management changes
- Macroeconomic data ingestion — pull GDP, unemployment, inflation, and Federal Funds Rate time series into models
- Audit trail generation — every call creates an immutable log with
request_idanddata_lineagefor regulatory reporting - Graceful degradation testing — verify that upstream unavailability returns cached data with correct metadata flags
Applicable compliance frameworks
- SEC Regulation S-K and Regulation S-X — financial reporting requirements
- Sarbanes-Oxley Act (SOX) — financial disclosure and audit trail obligations
- FINRA Rule 4512 — customer account information requirements
- APRA CPS 234 — third-party information security risk (for AU-regulated entities)
- Basel III — counterparty credit risk and financial data requirements
Data sources
- SEC EDGAR — data.sec.gov — US Government Public Domain
- Federal Reserve FRED — fred.stlouisfed.org — US Government Public Domain
Frequently asked questions
- How current is the SEC EDGAR data?
- SEC EDGAR data is cached for 1 hour. Upstream (data.sec.gov) updates within minutes of a filing being accepted by the SEC. If you require near-real-time data, the cache miss will fetch live from EDGAR — the
meta.cachedfield tells you which. - How current is the FRED economic data?
- FRED data is cached for 1 hour. Underlying series update on FRED's own release schedule (monthly for GDP/CPI, daily for DFF). Check
data_lineage.retrieved_atfor the fetch time. - Is every API call audited?
- Yes. An immutable audit log entry is written before every response is returned. The
meta.request_idin the response matches the audit log entry for regulatory reporting. - What happens when SEC EDGAR or FRED is unavailable?
- Stale cached data is returned with HTTP 200,
meta.upstream_available: false, andmeta.cached_atshowing when the data was last successfully fetched. If no cache exists, HTTP 503 is returned. The service is always available even when upstreams are not. - What SLA is available?
- Professional and Enterprise tier subscribers receive SLA documentation on request. Contact [email protected].
Related APIs
- US Enforcement & Disciplinary API — FINRA BrokerCheck and SEC enforcement actions
- OFAC Sanctions Screening API — screen against the US Treasury SDN list
- AU Entity Intelligence API — ASIC and ABR entity verification for Australian KYC
- AU Financial Advisers API — ASIC Financial Advisers Register