API Documentation

Submit predictions programmatically using the ERCOT Bingo API

Quick Start

1

Generate an API Key

Go to Settings and generate your API key. Save it securely - it won't be shown again.

2

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_KEY

Keep your API key secure. Do not share it or commit it to version control.

POST/api/v1/forecast

Submit a 24-hour price forecast for an operating day

Request Body

date
string (optional)

Operating day in YYYY-MM-DD format. Defaults to the earliest available date if not specified.

prices
array of 24 numbers (required)

Hourly 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

401Unauthorized

Invalid or missing API key

400Bad Request

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.

Deadline Rule

To submit for Day N, submit before 10 AM CT on Day N-1

Currently Accepting
YYYY-MM-DD to YYYY-MM-DD
Settlement Point
HB_NORTH

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