Access & keys
1Get access →
Sign up or accept a workspace invite. Your tier determines tables and history.
2Create a key →
Open Account → API keys. The key is shown once; send it as X-API-Key.
3Check your tier →
GET /tier-info returns your permissions and data_windows, anchored on actual data.
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 datonsExample
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_hereEnvironment variable
Set DATONS_API_KEY and the client will pick it up automatically:
export DATONS_API_KEY=your_key_hereBase URL
https://api.datons.com/esiosDon'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 planscurl -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-..."
}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: