Skip to main content

aether (Python)

Python client for the Aether REST API — SEC filings, earnings-call transcripts, and EU financial regulation, every hit a ready-to-cite payload (exact source text + accession-numbered citation

Install

pip install evidinvest-aether-sdk

The rule: name the company, then narrow

Pass issuer on every call — {"ticker": …}, {"cik": …}, or {"company_name": …} for non-US filers with no US ticker. Then read scope and quality_caveat off the response: scope == "issuer" with no caveat is the only guarantee you got a filtered answer. Omit the issuer and the call searches every filer at once: slower, relevance-ranked only, and caveated.

Keep the company in issuer and the question in query. Putting the ticker in the query text appears to work — the engine infers a filer — which is exactly why it is risky: nothing errors when the guess is wrong.

Use

from aether import AetherClient

with AetherClient(api_key="ak_...") as aether:
    # Unified — filings, JP/KR, EU regulation and earnings calls at once
    out = aether.search(
        query="data center revenue",
        issuer={"ticker": "NVDA"},
        fiscal_year=2027,   # NVIDIA's OWN fiscal year: the year ending Jan 2027
        limit=10,
    )
    if out.quality_caveat:
        print(out.scope, out.quality_caveat)
    for hit in out.results:
        print(hit.corpus, hit.citation, hit.text[hit.body_offset or 0 :][:200])

    # SEC filings (10-K/10-Q/8-K, prospectuses) + SE/JP/KR registries
    filings = aether.financial_search(
        query="supply-chain concentration risk",
        issuer={"ticker": "AAPL"},
        limit=5,
    )
    for c in filings.results:
        start = c.body_offset or 0          # skip the EDGAR cover page
        print(c.citation, "->", c.metadata.get("source_url"))
        print(c.text[start : start + 200])

    # Earnings calls — speaker-attributed, point-in-time
    calls = aether.transcript_search(
        query="Blackwell demand",
        issuer={"ticker": "NVDA"},
        order="earliest",   # find the FIRST mention
        limit=5,
    )
    print(calls.results[0].raw["speaker_name"], calls.results[0].raw["call_date"])

    # EU regulation — anchor on the CELEX, this corpus's equivalent of an issuer
    reg = aether.regulation_search(
        query="stablecoin issuer own funds requirements",
        celex="32023R1114",   # MiCA
        limit=5,
    )

Fetch mode — don't rank a document you can name

query is optional. Omit it, pass an identifier plus form_type / fiscal_year / section / accession_number, and you get that filing's sections in filing order with no ranking — mode == "fetch", tens of milliseconds, and confidence is None on every hit (nothing was scored).

risks = aether.financial_search(
    issuer={"ticker": "AAPL"},
    form_type=["10-K"],
    section="Item 1A",   # case-insensitive substring of the label
    limit=5,
)
risks.mode   # "fetch"
risks.total  # matching CHUNKS, not returned rows — use it to page

Same on transcripts: transcript_search(issuer={"ticker": "NVDA"}, fiscal_year=2027, quarter="Q2") returns one call in spoken order.

Reading a response

  • scope + quality_caveat are the contract. source, profile, domain and everything under metadata["retrieval"] are diagnostics — report them, never branch on them.
  • Crop from body_offset. Where a chunk opens with an EDGAR cover page, that is the offset in text where the body begins — 1,462 characters in on a TSMC monthly-revenue 6-K. None means the text opens with its own body.
  • confidence is a relative score, not a threshold. Do not gate rendering on a fixed cut-off; it is None in fetch mode by design.
  • Fewer results than limit is normal — near-duplicates are suppressed rather than padded over. Not an error.
  • Keep the default 60 s timeout on any path that can go cross-company; the engine's own floor there is 15 s.
  • Nothing is silently dropped: SearchOutput.raw and Chunk.raw hold the untouched JSON, so a field this client does not name yet is still reachable.

Get an API key at https://aether.evidinvest.com/developer/keys (anonymous calls work but are rate-limited). Full request/response reference: docs/search.md. Changes: CHANGELOG.md.

Develop

python3 -m unittest discover -s clients/python/tests   # fixtures, no network

License

Apache-2.0 — see LICENSE.

Metadata

Release files for evidinvest-aether-sdk 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evidinvest-aether-sdk 0.3.0
File Size Uploaded
evidinvest_aether_sdk-0.3.0.tar.gz 11.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evidinvest-aether-sdk 0.3.0
File Interpreter ABI Platform
evidinvest_aether_sdk-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.4 kB

Release files / evidinvest_aether_sdk-0.3.0.tar.gz

Download URL evidinvest_aether_sdk-0.3.0.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9c130f9ed9458ab1149797c81a8fc4eef484291117f154e80cda868d2e3c98cb
BLAKE2b-256 checksum
How to use checksums
67ba502ac963a785e7de5507b02ac74c30d822c290e9d0045f59e994614226e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / evidinvest_aether_sdk-0.3.0-py3-none-any.whl

Download URL evidinvest_aether_sdk-0.3.0-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7fcf6ef7260045e9978770b56dd7fbf486aa4de2e05e8c609960549bd4dc5c99
BLAKE2b-256 checksum
How to use checksums
57b3af1ca3d6314de601317c088aef2657ee1d9ddb367c69ca6328962a802b30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page