Tidelight Python SDK
Official Python client for supported Tidelight Intelligence Cloud v1 market, asynchronous company research, and webhook endpoints. Market calls require market:read; research calls require research:run; webhook calls require alerts:manage. Market responses can be denied with provider_terms_unconfirmed until redistribution terms are confirmed. The client surfaces that gate without retrying it.
Install with python -m pip install tidelight. Keep the API key on your server.
import os
from tidelight import Client
client = Client(os.environ["TIDELIGHT_API_KEY"])
page = client.list_tokenized_equities(limit=20, underlying_ticker="AAPL")
for instrument in page.data:
print(instrument.symbol, instrument.underlying_ticker)
for instrument in client.tokenized_equities(limit=50):
print(instrument.symbol)
import uuid
accepted = client.start_company_research("NVDA", str(uuid.uuid4()))
result = client.wait_for_research_job(accepted["job_id"], interval=2, timeout=120)
if result.status == "complete":
print(result.result)
created = client.create_webhook(
name="Research events",
url="https://your-service.example/tidelight",
events=["research.job.completed", "research.job.failed"],
)
signing_secret = created.get("signing_secret")
if not signing_secret:
raise RuntimeError("The create response did not include its one-time signing secret")
# TODO: Persist signing_secret with your approved secrets manager before
# finishing setup. Do not print it. It cannot be recovered by listing the endpoint.
deliveries = client.list_webhook_deliveries()
Webhook mutations are not retried automatically because the API does not yet accept webhook idempotency keys; this avoids duplicate endpoint creation or secret rotation after an ambiguous timeout. Webhook destination reachability and DNS safety are checked by the API. A client-side HTTPS check is not an authorization to deliver to a destination.
The client retries network errors, 429, and transient 5xx statuses at most twice by default, except provider_terms_unconfirmed, which is returned immediately. It enforces a 10 second request timeout and raises ApiError with status, code, and request ID. The default transport does not follow redirects, and remote API URLs are restricted to api.tidelight.app so bearer credentials remain scoped to Tidelight.
Run the asynchronous research example
From a mother-repository checkout:
python -m pip install -e ./sdk/python
PYTHONPATH=sdk/python/src python sdk/python/examples/research.py NVDA
The example calls the SDK company snapshot job flow and prints a result only after the API reports complete. It preserves job and request IDs and never prints the key. CI injects a mock transport and makes no network calls. A live run requires research:run and consumes project quota (10 jobs per rolling hour).
Metadata
Release files for tidelight 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tidelight-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / tidelight-0.1.1-py3-none-any.whl
| Download URL | tidelight-0.1.1-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee060ed7b0961c8b50f879b013a9bf60540f5695673695b5f006494a95f87d98
|
|
BLAKE2b-256 checksum How to use checksums |
71f34cb87942591bec93030668140196f91d960525f10f79c144c6f5deb23f02
|
| 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 Oct 18, 2026.
Transparency log