A Minerva API key is required. Set
MINERVA_API_KEY in your environment
or pass api_key= to the constructor. See Authentication
for where to find your key and how the SDK resolves credentials.Early access (alpha). The interface below is stable; we’re hardening the
edges ahead of the public release. Feedback welcome.
Why this SDK
One client, one credential
Minerva(api_key=...) is the only entry point. Your x-api-key goes on
every request. No tokens, no sessions, no rotation logic to manage.Typed end-to-end
Every response is a typed pydantic object with IDE autocomplete. Missing
fields fail at type-check, not at runtime. Forward-compatible — new fields
the API adds won’t break older clients.
Validate before you spend
dry_run=True validates input locally and tells you exactly what’s wrong —
before anything hits the network. Same checks the server runs, available
offline.Tabular by default
Any list-shaped result →
to_df() / to_csv() / to_dicts() /
to_table(). Nested fields flatten for you; missing extras error clearly.Hardened
The
Minerva instance rejects any attribute writes after construction —
typos and accidental tinkering raise AttributeError instead of silently
breaking subsequent calls.Custom-endpoint escape hatch
mc.api.call(method, path, …) for client-specific routes that don’t have a
typed wrapper yet. Same auth + error mapping; raw JSON in/out.Where to go next
Quickstart
Five-minute tour — install, set your key, run your first enrichment.
Authentication
Just
MINERVA_API_KEY. No token exchange. No session state.Enrich
Full person profiles from a record stub. Up to 500 records per call.
Custom endpoints
The
mc.api.call(...) escape hatch for tailored / preview routes.Get help fast
python -m minerva— banner, version, and a cheat-sheet of the public API.help(Minerva)in a REPL orMinerva?in Jupyter — full class + method docstrings.- Reach support with the
api_request_idcarried on everyMinervaAPIError.