# Iosis quickstart

Create an API key at https://iosis.dev/app/account, then run a strategy.

## 1. Install

```console
pip install iosisclient
export IOSIS_API_KEY=iosis_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```

## 2. Strategy

Save as `strategy.yaml`:

```yaml
format: iosis.strategy
version: 0.1.0
name: market-zscore
description: Rolling z-scores of changes in market probability.

nodes:
  market:
    op: source.dataset
    version: 0.1.0
    params:
      name: polymarket_weather

  changes:
    op: transform.pct_change
    version: 0.1.0
    inputs:
      price: market.yes_price
    params:
      input_column: price
      output_column: changes

  zscore:
    op: transform.rolling_z_score
    version: 0.1.0
    inputs:
      changes: changes.changes
    params:
      input_column: changes
      output_column: zscore
      periods: 20
      min_samples: 10

outputs:
  price: market.yes_price
  zscore: zscore.zscore
```

## 3. Submit

```console
curl -X POST https://iosis.dev/api/runs \
  -H "Authorization: Bearer $IOSIS_API_KEY" \
  -H "Content-Type: application/yaml" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data-binary @strategy.yaml
```

```python
from iosisclient import IosisClient

client = IosisClient()
run = client.submit_run("strategy.yaml")
```

Submission returns `202`:

```json
{ "id": "8f3c…", "status": "queued" }
```

## 4. Poll

```console
curl https://iosis.dev/api/runs/8f3c… -H "Authorization: Bearer $IOSIS_API_KEY"
```

```python
result = client.wait_for_run(run["id"])
```

While not done, status is `queued` or `running`:

```json
{ "run": { "id": "8f3c…", "status": "running" } }
```

When done it is `succeeded` or `failed`.

## 5. Results

```json
{
  "run": {
    "id": "8f3c…",
    "status": "succeeded",
    "computeMs": 150,
    "result": {
      "kind": "result",
      "name": "result.parquet",
      "url": "https://…/result.parquet?X-Amz-…",
      "sha256": "…",
      "expiresAt": "2026-08-20T…Z"
    },
    "artifacts": [ "…" ]
  }
}
```

Result URLs expire after 60s. Download immediately.

## 6. Charts

```console
curl https://iosis.dev/api/runs/8f3c…/charts -H "Authorization: Bearer $IOSIS_API_KEY"
```

Chart URLs expire after 5min. Every output renders as SVG. Example output:

![Placeholder chart output](https://iosis.dev/charts-placeholder.png)

Full reference: https://iosis.dev/docs (markdown: https://iosis.dev/docs.md). Agent index: https://iosis.dev/llms.txt.
