Developers

Enerlytics API beta

We are opening the first developer-facing API layer for teams that want Enerlytics data outside the dashboard. The current beta is read-oriented and strongest for internal dashboards, research workflows, and downstream alerting rather than full self-serve platform automation.

Base URL
https://beta.enerlytics.io/api/v1
Shape today
Read-first beta endpoints
Access model
API key required
Authentication

Approved teams receive scoped API keys. Send the key as x-api-key or Authorization: Bearer <key>. The public beta contract lives under /api/v1, separate from the dashboard's internal browser routes.

Docs Nav

What teams get first

A credible beta surface

  • Signals, alerts, inventory context, AIS nowcasts, structure reads, and other transformed outputs through stable GET endpoints.
  • Request-based onboarding so we can align endpoint access to your workflow instead of over-selling self-serve keys too early.
  • Human follow-up on volume, reliability expectations, and where webhook or CSV-style delivery matters most.
  • A handful of more differentiated routes are intentionally held for the Team plan so the platform can step up in quality with your needs.

Beta rules

How to think about this API today

  • These routes are best treated as beta endpoints: useful now, but not yet versioned with hard backward-compatibility guarantees.
  • The strongest fit is internal use: desk dashboards, analyst tooling, Slack bots, and research pipelines.
  • We bias the published surface toward derived insight and public-source transforms, not raw subscribed vendor feeds.

Data boundary

What we expose, and what we intentionally do not

The API Beta is designed to make teams feel like they can access a lot of Enerlytics without turning us into a vendor-data redistribution layer. That means we lean hard into transformed surfaces, regime scores, and workflow-ready context.

Raw market quotes and minute bars

We do not publish vendor-substitute quote feeds, intraday tape, or broad OHLC history through the API beta.

Those are the surfaces most likely to trip redistribution or exchange licensing rules.

Full options chains and raw greeks surfaces

We keep full option chain payloads and bulk contract tables internal for now.

Chain-level machine-to-machine redistribution is where licensing gets sharp fastest.

Raw AIS vessel positions and tracks

We expose nowcasts, zone states, and friction-style scores instead of raw vessel-by-vessel datasets.

Derived maritime intelligence is safer and more differentiated than becoming a raw AIS relay.

  • Open / Public-source means the underlying data is public enough that we can expose the transformed series comfortably.
  • Derived / API-beta safe means the endpoint returns Enerlytics scoring, regime logic, summaries, or composites rather than vendor-substitute raw feeds.
  • Restricted / contract review required means we keep that category out of the public API beta unless licensing changes later.
GET/api/v1/signals/snapshotDerived / API-beta safeBeta Plan

Signal Snapshot

Current 1d/5d model read for a single symbol, plus optional history and audit context.

Query parameters
symbol *UI symbol like CL1, CO1, XLE, or USO.
historyPageHistory page number for resolved/pending predictions.
historyPageSizeRows per page, max 50.
historyHorizonall, 1d, or 5d.
Example URL
https://beta.enerlytics.io/api/v1/signals/snapshot?symbol=CL1&historyPage=1&historyPageSize=8&historyHorizon=all
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/signals/snapshot?symbol=CL1&historyPage=1&historyPageSize=8&historyHorizon=all" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "ok": true,
  "symbol": "CL1",
  "bias": "Bullish",
  "displaySignal": "Bullish",
  "isActionable": true,
  "reliability": {
    "trustLabel": "Medium trust",
    "reliabilitySampleSize": 22
  },
  "horizons": {
    "1d": { "confidencePct": 61.4 },
    "5d": { "confidencePct": 64.8 }
  }
}
  • This is a transformed signal layer, not a raw prediction table dump.
  • Best for explainers, signal audit tools, and model-aware workflows.
GET/api/v1/alerts/tacticalDerived / API-beta safeBeta Plan

Tactical Alerts

Aggregated tactical alert feed with price, structure, AIS, inventory, and news context.

Query parameters
regionRegion/zone, for example us_gulf.
categoryall, price, structure, ais, inventory, news, or model.
minLevellow, med, or high.
levelExact level filter if needed.
Example URL
https://beta.enerlytics.io/api/v1/alerts/tactical?region=us_gulf&category=all&minLevel=med
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/alerts/tactical?region=us_gulf&category=all&minLevel=med" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "ok": true,
  "alerts": [
    {
      "id": "price_impulse_cl1",
      "level": "high",
      "category": "price",
      "title": "WTI impulse extended through intraday highs"
    }
  ]
}
  • Best fit for downstream alerting, triage, and chat workflows.
  • This is an Enerlytics decision layer rather than a vendor feed replay.
GET/api/v1/insights/inventory-bandsDerived / API-beta safeBeta Plan

Inventory Bands

Narrative inventory read built from commercial crude stocks, SPR, five-year range, and weekly deltas.

Example URL
https://beta.enerlytics.io/api/v1/insights/inventory-bands
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/inventory-bands" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "text": "Commercial U.S. crude stocks drew 7,537 kbbl w/w...",
  "stats": {
    "crudeInv": 849882,
    "wow": -7537,
    "spr": 392700,
    "total": 1242582,
    "bandPosition": 0.28
  }
}
  • Built on public-source EIA data, but returned as Enerlytics interpretation and regime context.
GET/api/v1/insights/premarket-sessionDerived / API-beta safeBeta Plan

Premarket Session Summary

Derived extended-hours scoreboard for energy-linked ETFs and equities, including the latest premarket read, biggest movers, and a plain-English tone check.

Query parameters
symbolsComma-separated symbols like USO,XLE,XOP,BNO. Defaults to an energy watchlist.
Example URL
https://beta.enerlytics.io/api/v1/insights/premarket-session?symbols=USO,XLE,XOP,BNO
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/premarket-session?symbols=USO,XLE,XOP,BNO" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "coverageWindow": "04:00-09:30 America/New_York",
  "sessionDate": "2026-05-22",
  "sessionTone": "mixed",
  "summary": "Premarket energy trade is mixed so far, with XLE leading at +0.8% vs prior close while USO is softer at -0.3%.",
  "leaders": [
    { "symbol": "XLE", "movePct": 0.8 },
    { "symbol": "BNO", "movePct": 0.5 }
  ]
}
  • This is a session summary layer, not a raw extended-hours quote stream.
GET/api/v1/eia/bandsOpen / Public-sourceBeta Plan

EIA Bands Series

Chart-ready commercial crude, SPR, and total stocks with five-year band context.

Query parameters
startStart date in YYYY-MM-DD format.
endEnd date in YYYY-MM-DD format.
Example URL
https://beta.enerlytics.io/api/v1/eia/bands?start=2021-01-01&end=2026-05-01
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/eia/bands?start=2021-01-01&end=2026-05-01" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "seriesCode": "WCRSTUS1",
  "reserveSeriesCode": "WCSSTUS1",
  "latestSummary": {
    "commercialKbbl": 849882,
    "sprKbbl": 392700,
    "totalKbbl": 1242582
  },
  "data": [
    { "d": "2026-05-15", "min": 780100, "max": 1043000, "obs": 849882, "spr": 392700, "total": 1242582 }
  ]
}
  • This is the cleanest public-source series we can expose without licensing anxiety.
GET/api/v1/insights/term-structureDerived / API-beta safeBeta Plan

Term Structure Insight

Prompt/deferred curve regime, persistence, and interpretation for CL1-led structure.

Query parameters
symbolDefaults to CL1. Keeps room for future symbol coverage.
Example URL
https://beta.enerlytics.io/api/v1/insights/term-structure?symbol=CL1
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/term-structure?symbol=CL1" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "symbol": "CL1",
  "regime": {
    "m1_m2": "backwardation",
    "m1_m6": "backwardation",
    "m1_m6Persistence": "holding"
  },
  "meaning": "Prompt crude is staying tighter than deferred barrels...",
  "watchNext": "Watch whether inventories, crude-on-water, and Brent-WTI keep reinforcing the same prompt-tightness story..."
}
  • This is exactly the kind of transformed surface we should lean on: useful, differentiated, and not a raw vendor substitute.
GET/api/v1/insights/options-positioning-summaryDerived / API-beta safeTeam Plan

Options Positioning Summary

Nearest-expiry options posture for key energy-linked underlyings, summarized into put/call, implied-volatility, and pressure labels.

Query parameters
underlyingsComma-separated underlyings like USO,XLE,XOP. Defaults to the core beta watchlist.
Example URL
https://beta.enerlytics.io/api/v1/insights/options-positioning-summary?underlyings=USO,XLE,XOP
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/options-positioning-summary?underlyings=USO,XLE,XOP" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "summary": "USO is showing the most defensive posture on the nearest expiry, with put-heavy open interest and elevated implied volatility.",
  "items": [
    {
      "underlying": "USO",
      "expirationDate": "2026-05-29",
      "putCallRatio": 1.17,
      "ivAvg": 0.33,
      "positioningLabel": "put-heavy hedging"
    }
  ]
}
  • This is the aggregate options read, not a machine-to-machine full chain export.
GET/api/v1/insights/crude-on-water-toplineDerived / API-beta safeBeta Plan

Crude on Water Topline

Enerlytics topline read on terrestrial crude-on-water composites and week-over-week shifts.

Example URL
https://beta.enerlytics.io/api/v1/insights/crude-on-water-topline
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/crude-on-water-topline" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "text": "The terrestrial crude-on-water proxy is firming...",
  "stats": {
    "latestTotal": 512,
    "totalPct": 3.4,
    "driver": "Middle East export"
  }
}
  • Safe because it is a composite/proxy layer, not a raw vessel position dataset.
GET/api/v1/insights/arrivals-nowcastDerived / API-beta safeTeam Plan

Arrivals Nowcast

Near-term tanker arrival nowcast by port based on destination heuristics and vessel motion.

Query parameters
portsComma-separated port codes like HOU,CCT,LAA,BPT.
horizonHorizon in hours, default 24.
Example URL
https://beta.enerlytics.io/api/v1/insights/arrivals-nowcast?ports=HOU,CCT,BPT&horizon=24
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/arrivals-nowcast?ports=HOU,CCT,BPT&horizon=24" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "horizon": 24,
  "results": {
    "HOU": {
      "arriving": 3,
      "list": [
        { "mmsi": "123456789", "etaHours": 12, "distNm": 143 }
      ]
    }
  }
}
  • This is a derived ETA-style workflow surface, not a bulk AIS position feed.
GET/api/v1/insights/zone-snapshotDerived / API-beta safeTeam Plan

Zone Snapshot

Current tanker state, 30-day baseline comparison, and top destinations for a zone.

Query parameters
zoneZone key like global, us_gulf, or hormuz.
Example URL
https://beta.enerlytics.io/api/v1/insights/zone-snapshot?zone=us_gulf
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/zone-snapshot?zone=us_gulf" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "zone": "us_gulf",
  "latest": {
    "tankerCount": 47,
    "anchoredCount": 12,
    "underwayCount": 29
  },
  "comparisonVs30d": {
    "tankerCountPct": 0.18,
    "anchoredCountPct": -0.07
  }
}
  • Useful for desks that want a zone-level state signal without raw track redistribution.
GET/api/v1/insights/chokepoint-frictionDerived / API-beta safeTeam Plan

Chokepoint Friction

Zone-level terrestrial AIS friction index and supporting tanker-flow metrics.

Query parameters
zoneFriction zone key such as hormuz, suez, or us_gulf.
daysLookback window, 30 to 365 days.
Example URL
https://beta.enerlytics.io/api/v1/insights/chokepoint-friction?zone=strait_of_hormuz&days=90
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/chokepoint-friction?zone=strait_of_hormuz&days=90" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "zone": "strait_of_hormuz",
  "label": "Strait of Hormuz",
  "latest": {
    "frictionIndex": 58.4,
    "uniqueTankers": 31,
    "slowUnderwayShare": 0.29
  }
}
  • This is intentionally a friction score, not a raw AIS route feed.
GET/api/v1/insights/ais-pressure-compositeDerived / API-beta safeTeam Plan

AIS Pressure Composite

Zone-level maritime pressure score combining live tanker state, baseline drift, and friction context into one desk-friendly read.

Query parameters
zoneZone key like strait_of_hormuz, suez_red_sea, us_gulf, or north_sea.
Example URL
https://beta.enerlytics.io/api/v1/insights/ais-pressure-composite?zone=strait_of_hormuz
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/insights/ais-pressure-composite?zone=strait_of_hormuz" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "zone": "strait_of_hormuz",
  "coverageMode": "terrestrial_only",
  "satelliteReady": false,
  "pressureScore": 64.2,
  "regime": "elevated",
  "summary": "Terrestrial AIS is showing elevated tanker pressure through the zone, with anchored activity and friction both running above their recent baseline."
}
  • Today this is explicitly terrestrial-only, with room to absorb satellite coverage later without changing the contract.
GET/api/v1/news/topDerived / API-beta safeBeta Plan

Top Energy News

Deduplicated energy news feed with impact labels, sentiment, and optional text search.

Query parameters
limit1 to 100 rows.
offsetPagination offset.
window24h, 48h, or 7d.
qOptional text filter.
Example URL
https://beta.enerlytics.io/api/v1/news/top?limit=10&window=48h
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/news/top?limit=10&window=48h" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "items": [
    {
      "headline": "Kinetik takes FID on $260m Kings Landing II gas processing plant",
      "source": "finance.yahoo.com",
      "sentiment": "pos",
      "oilImpact": "bullish"
    }
  ]
}
  • We expose the curated, labeled layer rather than the raw ingestion substrate.
GET/api/v1/developers/alert-webhook-specDerived / API-beta safeTeam Plan

Alert Webhook Payload Spec

Reference payload shape for future webhook fanout so teams can build receivers before we turn on broad delivery.

Example URL
https://beta.enerlytics.io/api/v1/developers/alert-webhook-spec
Example request
Pick a language and run the same endpoint with your preferred client.
curl -sS "https://beta.enerlytics.io/api/v1/developers/alert-webhook-spec" \
  -H "x-api-key: YOUR_API_KEY"
Expand sample response
{
  "version": "2026-05-beta",
  "eventType": "alert.created",
  "samplePayload": {
    "title": "WTI impulse extended through intraday highs",
    "category": "price",
    "level": "high",
    "routeHref": "/dashboards/alerts?focus=price_impulse_cl1"
  }
}
  • This is a contract/spec surface for integrations, not a live delivery endpoint yet.

Team Access

Request API Beta Access

We are opening read access first for desks, internal tools, and research workflows that want Enerlytics data outside the dashboard. During beta, we focus on derived insight and workflow-ready summaries rather than raw vendor-feed redistribution.

Approved teams receive scoped API keys for the /api/v1 surface. We review endpoint fit first so the access shape matches your workflow instead of handing out one oversized key to everyone.
Interested Endpoints
Delivery format

During beta, we review API access by use case so we can keep the dataset honest, responsive, and well-supported.

API Beta • Enerlytics