Cliff Horizon logo

Policy API

Create, monitor, and resolve parametric weather derivative policies via the Ensuro integration.

The Policy API manages the lifecycle of Ensuro-backed weather derivatives — from quote to settlement.

API specifications are preliminary and subject to change during development. This documentation represents the planned API design.

Request Quote

POST /v1/policy/quote

Generates a premium quote for a parametric derivative.

Request Body

{
  "location": {
    "lat": 1.3521,
    "lon": 103.8198
  },
  "trigger": {
    "variable": "rainfall",
    "condition": "cumulative_gt",
    "threshold": 200,
    "unit": "mm",
    "window_days": 7
  },
  "payout": 500000,
  "payout_currency": "USD",
  "start_date": "2026-05-01",
  "end_date": "2026-08-31",
  "structure": "binary"
}

Response

{
  "quote_id": "qt_abc123",
  "valid_until": "2026-04-04T22:00:00Z",
  "pricing": {
    "loss_prob": 0.185,
    "pure_premium": 106375,
    "jr_coc": 12400,
    "sr_coc": 8200,
    "ensuro_commission": 6800,
    "partner_commission": 9500,
    "total_premium": 143275,
    "premium_rate": 0.2865
  },
  "contract": {
    "trigger_description": "Cumulative rainfall > 200mm in any 7-day rolling window",
    "payout": 500000,
    "measurement_period": "2026-05-01 to 2026-08-31",
    "oracle_source": "primary: local_met_service, secondary: satsure_satellite",
    "counterparty": "Ensuro (BMA-licensed)",
    "settlement": "Automatic on trigger via Ensuro smart contract"
  }
}

Create Policy

POST /v1/policy/create

Accepts a quote and creates the policy on-chain.

Request Body

{
  "quote_id": "qt_abc123",
  "client_id": "cl_xyz789",
  "payment_method": "fiat_invoice"
}

Response

{
  "policy_id": "pol_def456",
  "status": "active",
  "ensuro_policy_nft": "0x1234...5678",
  "created_at": "2026-04-04T14:30:00Z",
  "premium_invoice": {
    "amount": 143275,
    "currency": "USD",
    "due_date": "2026-04-18"
  }
}

Get Policy Status

GET /v1/policy/{policy_id}

Returns current status, monitoring data, and settlement information.

Response

{
  "policy_id": "pol_def456",
  "status": "active",
  "trigger": {
    "variable": "rainfall",
    "condition": "cumulative_gt",
    "threshold": 200,
    "current_max_7day": 142,
    "current_probability": 0.28
  },
  "dates": {
    "start": "2026-05-01",
    "end": "2026-08-31",
    "days_remaining": 149
  },
  "settlement": null
}

List Policies

GET /v1/policies

Returns all policies for the authenticated organisation, with optional filters.

Parameters

ParameterTypeDescription
statusstringFilter: active, settled, expired
client_idstringFilter by client
variablestringFilter by trigger variable

Policy Resolution

Policy resolution is handled automatically by the RESOLVER service. When oracle data confirms a trigger event, the policy is resolved on-chain and the client is notified via webhook.

Resolution cannot be triggered via the API — it's an automated process driven by oracle data to maintain settlement independence.