Rate Limits & Quotas

Community: 120 decision-class requests/day per key. Basic without key: 60/h per IP. Professional: 600/h per account. Telemetry, PV, and Weather have separate softcaps โ€” they do not eat Decision quota.

SpotpriceAPI limits how often you can call price/decision endpoints so the service stays fair for everyone.

Everyday example

Community account: 120 forecast/decision calls per day. Polling every minute would hit the limit in two hours. Polling once per hour (24 calls) is fine. Better: use Webhooks and skip most polls.

When to use this page

  • Getting HTTP 429 rate_limit_exceeded
  • Planning poll frequency for Loxone or an EMS
  • Deciding if Professional tier is needed

Quota classes

ClassEndpointsCounts against daily/hourly limit?
decisionForecast, Decision, Windows, Hours (mode=decide)Yes
telemetryPlant Telemetry, Hours (mode=telemetry)No (separate softcap)
pvGET /v1/plant/pv-forecastNo โ€” Community 48/day, else 288/day
weatherGET /v1/plant/weatherNo โ€” Community 48/day, else 288/day
status/v1/status, /healthNo

Limits per tier

TierDecision limitTelemetry softcap
basic60 / hour per IPNot available
community120 / day per key2000 / day
full_active (Professional)600 / hour per account10000 / day
full_active (OEM / enterprise)3000 / hour per account10000 / day

Exact numbers may change โ€” on HTTP 429 the response body and headers show the active limit.

Response headers

X-RateLimit-* headers are emitted on successful /v1/* responses and on HTTP 429:

HeaderMeaning
X-RateLimit-LimitYour limit for this call type
X-RateLimit-RemainingCalls left in the window (0 on 429)
X-RateLimit-ResetUnix epoch when the window resets
X-RateLimit-Scopeip / api_key / api_key_day / account
Retry-AfterSeconds to wait (429 only)

curl -i https://api.spotpriceapi.com/v1/forecast \
  -H "X-API-Key: sf_live_YOUR_KEY"

On 429, wait for Retry-After before retrying.

Step by step: use quota wisely

1. Poll Forecast/Decision hourly, not every minute โ€” data updates about hourly anyway. 2. Register Webhooks for push on changes. 3. Send telemetry on SOC steps (e.g. every 10 %), not every second. 4. Call Hours Demand decide when the plan should change (day-ahead published, big SOC swing) โ€” not on every telemetry ping. 5. On 429, wait for Retry-After before retrying.

Common mistakes

  • Loxone fetch every 10 seconds โ€” will hit Community daily cap
  • Using decision calls for telemetry โ€” use POST /v1/plant/telemetry or mode: telemetry
  • Ignoring 429 / Retry-After until the client is stuck

EMS integration tips

  • Telemetry: every 15 min or on 10 % SOC change
  • Decide: hourly at :00 (Loxone I8; :05 fallback) or after day-ahead (~13:00 Vienna)
  • Webhooks: best for servers; Loxone uses Virtual Output polling instead

Next steps

Start with SpotpriceAPI

Register for Community or code samples with your personal key.

Live API status