Skip to main content

Documentation Index

Fetch the complete documentation index at: https://powersignals.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Rate Limits

The Power Signals API applies rate limiting per API key to ensure fair usage and service stability.

Limits by Scope

ScopeEndpointsLimit
normalized_data/grid/system-state10 requests/min
features/features/grid-stress3 requests/min
Limits are applied on a rolling 60-second window per API key.

Rate Limit Response

When you exceed the limit, you’ll receive a 429 Too Many Requests response:
{
  "detail": "Request was throttled. Expected available in 42 seconds."
}
The response includes a Retry-After header indicating how many seconds to wait before retrying.

Best Practices

Cache Responses

Grid system state data is published hourly. There’s no benefit in requesting the same time range more than once per hour.
import requests
from functools import lru_cache
from datetime import datetime, timedelta

@lru_cache(maxsize=128)
def get_grid_state(start: str, end: str, interval: str = "1h"):
    response = requests.get(
        "https://api.powersignals.co.za/api/v1/grid/system-state",
        headers={"X-API-KEY": "your_api_key_here"},
        params={"start": start, "end": end, "interval": interval},
    )
    response.raise_for_status()
    return response.json()

Use Exponential Backoff

If you receive a 429, implement exponential backoff:
import time
import requests

def request_with_backoff(url, headers, params, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers, params=params)
        if response.status_code == 429:
            wait = 2 ** attempt
            time.sleep(wait)
            continue
        return response
    raise Exception("Max retries exceeded")

Request Larger Time Ranges

Instead of making many small requests, request larger time ranges in a single call. The API supports up to multi-day ranges.
# Instead of 24 separate hourly requests:
curl "https://api.powersignals.co.za/api/v1/grid/system-state?start=2026-01-01T00:00:00Z&end=2026-01-02T00:00:00Z&interval=1h" \
  -H "X-API-KEY: your_key"

Use Daily Aggregation

If you don’t need hourly granularity, use interval=1d to get daily summaries with fewer data points:
curl "https://api.powersignals.co.za/api/v1/grid/system-state?start=2026-01-01T00:00:00Z&end=2026-02-01T00:00:00Z&interval=1d" \
  -H "X-API-KEY: your_key"

Need Higher Limits?

Contact us at support@powersignals.co.za to discuss enterprise rate limits for high-volume use cases.