API Documentation
Submit predictions programmatically using the ERCOT Bingo API
Quick Start
Generate an API Key
Go to Settings and generate your API key. Save it securely - it won't be shown again.
Submit Your Forecast
Make a POST request to /api/v1/forecast with your 24-hour price predictions.
Authentication
All API requests require authentication using a Bearer token. Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEYKeep your API key secure. Do not share it or commit it to version control.
/api/v1/forecastSubmit a 24-hour price forecast for an operating day
Request Body
dateOperating day in YYYY-MM-DD format. Defaults to the earliest available date if not specified.
pricesHourly price predictions in $/MWh for hours 1-24 (HE01-HE24). Prices can be negative.
Example Request
curl -X POST https://ercotbingo.com/api/v1/forecast \
-H "Authorization: Bearer eb_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"date": "YYYY-MM-DD",
"prices": [
25.5, 22.3, 20.1, 19.8, 21.2, 28.4,
35.6, 42.1, 48.3, 52.7, 55.2, 58.9,
62.1, 65.4, 68.2, 70.5, 72.1, 68.4,
55.2, 45.8, 38.2, 32.5, 28.1, 26.3
]
}'Success Response
{
"success": true,
"predictionId": "550e8400-e29b-41d4-a716-446655440000",
"date": "YYYY-MM-DD",
"updated": false,
"message": "Forecast submitted successfully"
}Skipped Response (date closed)
If you submit for a date that's past its deadline, the API returns success with a skipped flag instead of an error. This allows batch submissions without failing on closed dates.
{
"success": true,
"skipped": true,
"reason": "Deadline has passed for this date",
"date": "2025-11-28",
"acceptableDates": {
"earliest": "YYYY-MM-DD",
"latest": "YYYY-MM-DD"
},
"message": "Forecast skipped - date outside acceptable window"
}Error Responses
Invalid or missing API key
Invalid request body (missing prices, wrong format, etc.)
Date Validation
Predictions can be submitted for up to 7 days in advance. The submission window for each operating day closes at 10:00 AM Central Time on the day before.
To submit for Day N, submit before 10 AM CT on Day N-1
Code Examples
Python
import requests
API_KEY = "eb_your_api_key"
url = "https://ercotbingo.com/api/v1/forecast"
response = requests.post(
url,
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"date": "YYYY-MM-DD",
"prices": [25.5, 22.3, 20.1, 19.8, 21.2, 28.4,
35.6, 42.1, 48.3, 52.7, 55.2, 58.9,
62.1, 65.4, 68.2, 70.5, 72.1, 68.4,
55.2, 45.8, 38.2, 32.5, 28.1, 26.3],
},
)
print(response.json())JavaScript / Node.js
const API_KEY = "eb_your_api_key";
const response = await fetch("https://ercotbingo.com/api/v1/forecast", {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
date: "YYYY-MM-DD",
prices: [
25.5, 22.3, 20.1, 19.8, 21.2, 28.4,
35.6, 42.1, 48.3, 52.7, 55.2, 58.9,
62.1, 65.4, 68.2, 70.5, 72.1, 68.4,
55.2, 45.8, 38.2, 32.5, 28.1, 26.3,
],
}),
});
console.log(await response.json());Additional Information
Prices are for the ERCOT North Hub (HB_NORTH) Day-Ahead Market settlement point
Prices can be negative - ERCOT occasionally has negative prices during high renewable output
Submitting for a date you've already predicted will update your existing prediction
Submitting for a closed date returns success with skipped: true - no error is thrown
Rate limits: 100 requests per hour per API key