Skip to content

Rate limits

Darek Margas edited this page Oct 13, 2026 · 1 revision

Rate limits

PVOutput allows 60 requests an hour, 300 for donors, per API key. The integration reads the X-Rate-Limit-* headers of every answer, so it always knows how many requests are left and when the hour resets.

Who gets the requests

In this order:

  1. Live statuses: the last two upload intervals go first, before any history.
  2. Live downloads (fields in Download mode): one request per upload interval.
  3. History: backlog, reuploads, daily totals, PVOutput history downloads.

Two reserves protect the order:

  • 5 requests are always kept in hand. The limit belongs to the API key, so another uploader on the same key (e.g. IoTaWatt) still has room.
  • History stops early enough to leave a request for every live status due before the hour resets, plus one. On a 5-minute site with 40 minutes to go, history stops at 5 + 8 + 1 = 14 requests left; near the end of the hour, at 7. A long backlog uses almost the whole hour and never holds up live data.

Requests are at least 0.3 seconds apart, so a backlog goes out at a steady pace.

When the limit is hit

Uploads pause until PVOutput's reset time and continue where they stopped. The pause survives restarts. Rate limit pause until shows when it ends; Requests left this hour shows the allowance.

What a backlog costs

Account Statuses per request Three weeks of 5-minute statuses
Standard 30 about 202 requests (and only 14 days are accepted)
Donor 100 about 61 requests

Battery fields go in the same batches, so they cost nothing extra.

Sharing a key with IoTaWatt

Both uploaders count against the same 60/300. The 5-request reserve keeps IoTaWatt's live uploads going while this integration works through history. If you use a separate API key for each, there is no sharing at all.

Clone this wiki locally