Quickstart
From sign-up to your first response in four steps.
Create an account
Sign up with your email address and confirm it using the link we send. You get an organization on the Free plan, which includes both products.
Create an API key
In the console, open API keys and create a key. You can limit it to one product and set an expiry date. The full key is shown once. Store it in your secret manager or an environment variable:
shell export OLYMPUS_API_KEY="oly_live_..."Make a request
Send the key in the X-API-Key header:
SEC Filings & Financial Data: resolve a ticker curl -s "https://api.olympus.new-odyssey.com/v1/sec/companies/search?ticker=AAPL" \ -H "X-API-Key: $OLYMPUS_API_KEY"Geographic & Demographics: a ZCTA profile curl -s "https://api.olympus.new-odyssey.com/v1/geo-demographics/locations/02139" \ -H "X-API-Key: $OLYMPUS_API_KEY"Check your usage
The console shows requests by day, product and endpoint. You can also read usage with any key:
shell curl -s "https://api.olympus.new-odyssey.com/v1/usage?from=2026-10-01" \ -H "X-API-Key: $OLYMPUS_API_KEY"
Authentication
Product and usage endpoints take an organization API key in X-API-Key, or as Authorization: Bearer <key>. Keys look like oly_live_… or oly_test_…. Keys in query strings are rejected because URLs end up in logs. A key scoped to one product returns 403 API_KEY_PRODUCT_SCOPE on the other product. Revoked and expired keys return 401 API_KEY_REVOKED or 401 API_KEY_EXPIRED.
Errors
Every error, from every service, has the same body: a human-readable error, a stable code, the product when there is one, and optional details. Every response carries an X-Request-Id. Include it when you contact us.
{
"error": "Company not found",
"code": "NOT_FOUND",
"product": "sec",
"details": { "cik": "0000000001" }
}Rate limits and quotas
Each plan sets a per-minute rate limit and a monthly request quota per product (see pricing). Responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, plus X-Quota-Limit, X-Quota-Remaining and X-Quota-Reset. Over either limit, the API returns 429 with RATE_LIMIT_EXCEEDED or QUOTA_EXCEEDED and a Retry-After header.
Provenance
Records include a provenance object with dataset_id, source_id, source_url, source_version, source_date, published_at, schema_version, validation_status and a stable record_id. The response's meta.datasets lists the active publication of each dataset it read, with its freshness. See coverage for sources and release schedules.
OpenAPI specifications
- US Geographic & Demographics API reference — Census ACS demographics for ZCTAs and counties, NCES public schools, comparison. Download geo-demographics.yaml
- US SEC Filings & Financial Data API reference — SEC EDGAR companies, 10-K / 10-Q filings and standardised XBRL financials. Download sec.yaml
- Platform reference — Accounts, organizations, API keys and usage. Download platform.yaml