iosisClient
Thin Python client for the Iosis cloud API. Zero dependencies, stdlib only.
pip install iosisclient
Setup
Get an API key at tryiosis.vercel.app (Billing page, API keys section).
from iosisclient import IosisClient
# reads IOSIS_API_KEY from environment
client = IosisClient()
# or pass explicitly
client = IosisClient(api_key="iosis_...")
# or use a custom base URL
client = IosisClient(base_url="http://localhost:3000")
Environment variables:
IOSIS_API_KEY-- your API keyIOSIS_BASE_URL-- API base URL (defaults tohttps://tryiosis.vercel.app)
Runs
submit_run(yaml, idempotency_key=None)
Submit a strategy YAML document for execution. Pass a file path or a YAML string. Returns the queued run:
run = client.submit_run("strategy.yaml")
# {"id": "8f3c...", "status": "queued"}
Auto-generates an idempotency key (UUID) per call. Pass idempotency_key= to reuse one and avoid duplicate runs on retry.
Endpoint: POST /api/runs (Content-Type: application/yaml)
get_run(run_id)
Get run status and result artifacts:
run = client.get_run("8f3c...")
# {"run": {"id": "8f3c...", "status": "succeeded", "result": {...}, "artifacts": [...]}}
Status is one of queued, running, succeeded, or failed. Artifact URLs are signed and expire after 60 seconds.
Endpoint: GET /api/runs/:runId
wait_for_run(run_id, max_wait=300, initial_delay=2, max_delay=30)
Poll get_run() with exponential backoff until the run succeeds or fails:
result = client.wait_for_run(run["id"])
Raises TimeoutError if the run does not complete within max_wait seconds.
Charts
get_charts(run_id)
Get signed SVG chart URLs for a completed run:
charts = client.get_charts("8f3c...")
# {"charts": [{"name": "close", "chartUrl": "https://...svg...", "expiresAt": "..."}]}
URLs expire after 5 minutes. Download immediately.
Endpoint: GET /api/runs/:runId/charts
Datasets
list_datasets()
List all published dataset names and versions:
datasets = client.list_datasets()
# {"datasets": [{"name": "prices", "versions": ["2026-01-15"], "latestVersion": "2026-01-15"}]}
Endpoint: GET /api/datasets
list_dataset_manifests()
List datasets with full manifests (schema, row count, resolution, coverage window, S3 location):
manifests = client.list_dataset_manifests()
# {"datasets": [{"name": "prices", "versions": [...], "manifest": {"rows": 50000, "schema": {...}, ...}}]}
Endpoint: GET /api/datasets/manifest
lookup_dataset(name, version="latest")
Look up a single dataset by name. Pass "latest" or an ISO-8601 date for calendar versioning:
info = client.lookup_dataset("prices", version="2026-01-15")
# {"dataset": {"name": "prices", "version": "2026-01-15", "rows": 50000, "schema": {...}}}
Endpoint: GET /api/datasets/lookup?name=:name&data_version=:version
TSFN Catalog
list_tsfns()
Get the catalog of time-series function nodes allowed in strategy YAML:
catalog = client.list_tsfns()
# {"format": "iosis.tsfn-catalog", "tsfns": [{"op": "transform.pct_change", "version": "0.1.0", ...}]}
Each entry includes the operation name, version, category, parameters, and input/output frame signature.
Endpoint: GET /api/tsfns
Graph Rendering
render_graph(yaml)
Render a strategy YAML document as an SVG graph (nodes, ports, edges):
svg = client.render_graph("strategy.yaml")
# "<svg xmlns=\"...\">...</svg>"
Write to file:
with open("graph.svg", "w") as f:
f.write(svg)
Endpoint: POST /api/graphs/render (Content-Type: application/yaml, returns image/svg+xml)
Errors
API errors raise IosisError with .status, .code, and .message:
from iosisclient import IosisError
try:
client.get_run("bad-id")
except IosisError as e:
print(e.status) # 400
print(e.code) # "invalid_run_id"
print(e.message) # "Run ID must be a valid UUID."
Common status codes:
| Status | Meaning |
|---|---|
| 400 | Malformed request (bad YAML, missing parameter, invalid ID) |
| 401 | Missing or invalid API key |
| 403 | Account not approved or credits exhausted |
| 404 | Run or dataset not found |
| 429 | Rate limited (retry after backoff) |
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iosisclient-1.0.0.tar.gz.
File metadata
- Download URL: iosisclient-1.0.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
652d1717b414f2bd0ead90a52d68c2891ae0a3785888e776e706ff8e63c9caf9
|
|
| MD5 |
1f35e8909408b31a8c47b60b21d073b3
|
|
| BLAKE2b-256 |
0162c0649109cacf4508de2e3263d13350c130d3d71c2dbf316ad7a9d95333d5
|
Provenance
The following attestation bundles were made for iosisclient-1.0.0.tar.gz:
Publisher:
publish.yml on Chris2Rich/iosisclient
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iosisclient-1.0.0.tar.gz -
Subject digest:
652d1717b414f2bd0ead90a52d68c2891ae0a3785888e776e706ff8e63c9caf9 - Sigstore transparency entry: 2585089920
- Sigstore integration time:
-
Permalink:
Chris2Rich/iosisclient@681a6389b24e5632f378ba51be0f3556eec17cf1 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Chris2Rich
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@681a6389b24e5632f378ba51be0f3556eec17cf1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file iosisclient-1.0.0-py3-none-any.whl.
File metadata
- Download URL: iosisclient-1.0.0-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53476861b948793250972f97b8816187137777ee54a1158894cbfabb29fcf5a5
|
|
| MD5 |
401374c13830be93a52573a10bba8602
|
|
| BLAKE2b-256 |
678a3f4cc275824d94b0239e6f9cba79db4f6e643ce1f21c31d71785c706c930
|
Provenance
The following attestation bundles were made for iosisclient-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on Chris2Rich/iosisclient
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
iosisclient-1.0.0-py3-none-any.whl -
Subject digest:
53476861b948793250972f97b8816187137777ee54a1158894cbfabb29fcf5a5 - Sigstore transparency entry: 2585091420
- Sigstore integration time:
-
Permalink:
Chris2Rich/iosisclient@681a6389b24e5632f378ba51be0f3556eec17cf1 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Chris2Rich
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@681a6389b24e5632f378ba51be0f3556eec17cf1 -
Trigger Event:
push
-
Statement type: