# Quickstart

Get risk intelligence for your first trade in under 5 minutes.

## Use the Agent Skill

If you're integrating Canon through an agent runtime, give your agent <a href="/SKILL.md">SKILL.md</a>. It includes a deterministic flow for:

- refresh assets and model info
- validate each trade before execution
- validate multi-trade batches safely
- monitor live risk and alerts
- log outcomes and track calibration health

## 1. Get an API Key

Sign up for early access at [canonprotocol.org](https://canonprotocol.org). Enter your email and we'll send you a Bearer token to authenticate requests.

## 2. Make Your First Request

```bash
curl -X POST https://api.canonprotocol.org/v1/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "asset": "ETH",
    "action": "long",
    "size": 50000,
    "leverage": 10,
    "wallet": "0x7a3b1234567890abcdef1234567890abcdef1234"
  }'
```

## 3. Read the Response

```json
{
  "risk_score": 28,
  "recommendation": "proceed",
  "flags": [],
  "slippage": {
    "bps": 3.8,
    "fill_price": 3412.5,
    "mid_price": 3415.2,
    "depth_50bps": 1800000,
    "depth_100bps": 4200000,
    "bid_ask_imbalance": 0.48
  },
  "liquidation": {
    "price": 2901.25,
    "distance_pct": 17.2,
    "margin_used_pct": 42.1,
    "effective_leverage": 10.0,
    "mode": "cross"
  },
  "funding": {
    "funding_rate": 0.0012,
    "annualized_pct": 2.1,
    "vs_cex_divergence": 0.0003,
    "direction": "longs_pay"
  },
  "meta": {
    "asset": "ETH",
    "mark_price": 3415.2,
    "latency_ms": 47,
    "request_id": "req_abc123"
  }
}
```

(Additional fields like `impact`, `var`, `oi`, `stress`, `fees` are also returned. See the [full response reference](/llm/api/validate.md) for details.)

## 4. Act on It

Use the `recommendation` field to gate your agent's execution:

```python
import requests

resp = requests.post(
    "https://api.canonprotocol.org/v1/validate",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={
        "asset": "ETH",
        "action": "long",
        "size": 50_000,
        "leverage": 10,
        "wallet": "0x7a3b..."
    }
)
result = resp.json()

if result["recommendation"] == "proceed":
    execute_trade()
elif result["recommendation"] == "proceed_with_caution":
    execute_trade_with_reduced_size()
else:
    agent.log(f"Trade aborted: {result['flags']}")
```

## What's Next

- [Validate endpoint details](/llm/api/validate.md) - Full request/response reference
- [Batch validation](/llm/api/batch-validate.md) - Validate multiple trades in sequence
- [Understanding risk scores](/llm/risk/risk-score.md) - How scores map to recommendations
- [Risk flags](/llm/risk/flags.md) - What each flag means and how to respond
