Access & keys

  1. 1Get access →

    Sign up or accept a workspace invite. Your tier determines tables and history.

  2. 2Create a key →

    Open Account → API keys. The key is shown once; send it as X-API-Key.

  3. 3Check your tier →

    GET /tier-info returns your permissions and data_windows, anchored on actual data.

  4. 4Connect Claude →

    MCP uses OAuth: sign in without pasting an API key.

Check your data window

curl https://api.datons.com/esios/tier-info -H 'X-API-Key: YOUR_API_KEY'

API access

Query ESIOS market data programmatically from Python. Use the datons client or call the REST endpoints directly.

Quickstart

Video walkthrough

Install

pip install datons

Example

from datons import Client

client = Client(token="YOUR_API_KEY")

# Query preprocessed I90 market data → pandas DataFrame
df = client.esios.query(
    "SELECT unit, datetime, energy, price "
    "FROM esios.archives_i90 "
    "WHERE program = 'PDBF' AND toDate(datetime) >= '2025-01-01' "
    "LIMIT 100"
)
print(df.head())

Authentication

Request header

Include your API key in every request:

X-API-Key: your_key_here

Environment variable

Set DATONS_API_KEY and the client will pick it up automatically:

export DATONS_API_KEY=your_key_here

Base URL

https://api.datons.com/esios

Don't have an API key yet? Get your API key from your account dashboard.

Force-refresh revised data

Use this only when ESIOS has revised already-published values and you need to fetch a specific range again. Routine freshness is the pipeline’s responsibility; reingest is a targeted recovery path, not a regular update mechanism.

REST · POST /ingest/reingest

Eligible plans
curl -X POST https://api.datons.com/esios/ingest/reingest \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "indicators": [600, 1293],
    "date_from": "2026-08-01",
    "date_to": "2026-08-03",
    "reason": "ESIOS revised already-published values"
  }'

MCP

request_reingest

Accepts the same indicators, dates and reason. Use it from Claude or another MCP client when you discover a revision during analysis.

The request is asynchronous

The API queues the reingest and returns an identifier, a coarse ETA and a status URL. Poll status_url as it moves from pending to running and then done or failed; do not keep the POST request open.

{
  "checkpoint_id": "2a6b6f08-...",
  "status": "pending",
  "eta_seconds": 42,
  "status_url": "/ingest/checkpoints/2a6b6f08-..."
}
View requests and data status

Endpoint reference

Rate limits

All API requests are rate-limited by tier. See plans for tier comparison. All queries are read-only (SELECT only).

Response headers

Every response includes rate limit headers so you can track your usage:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1712448000
X-Tier: explorer