pvnodepvnode
  • pvnode.com
  • Studio
  • Pricing
  • Deutsch
  • English
  • API Reference
Product
  • Studio
  • API Documentation
  • API Reference
  • Pricing
Resources
  • Quickstart
  • Integrations
Legal
  • Imprint
  • Privacy
  • Terms
  • Licenses
pvnodepvnode

© 2026 pvnode. All rights reserved.

linkedin
IntroductionQuickstartMigration from V1
Sites & Data
    Sites & StringsForecastsHistorical DataData UploadCalibration & Monitoring
Guides
Enterprise
    Sites APIInline Endpoints
Integrations
(Archive) V1 API
powered by Zudoku
Enterprise

Sites API

With the Sites API you manage sites entirely via the API — without the pvnode web app. This is the programmatic variant of the concepts described under Sites & Strings.

Requires a plan with Sites API access. Without this access, the write endpoints respond with 403. Hobby users manage sites through the pvnode web app. You can see your entitlements on the Usage & Limits page.

Endpoints at a glance

ActionEndpoint
Create a sitePOST /v2/sites
List all sitesGET /v2/sites
Retrieve a siteGET /v2/sites/{site_id}
Update a sitePATCH /v2/sites/{site_id}
Delete a siteDELETE /v2/sites/{site_id}
Restore a deleted sitePOST /v2/sites/{site_id}/restore

The exact request/response schemas are in the API Reference.

Create

latitude and longitude are required. elevation, timezone and the terrain horizon are determined automatically. Without strings, a single default string is created.

Terminalcurl
curl -X POST https://api.pvnode.com/v2/sites \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Roof South", "latitude": 48.8566, "longitude": 2.3522, "strings": [{"slope": 30, "orientation": 180, "power_kw": 10}] }'

Update (PATCH)

Partial update — only the sent fields change. Note:

  • strings replaces the entire array. Each string has a stable, server-assigned id — echo it to keep a string (and its data, e.g. measurements); omit it and the string is dropped; send a string with no id to add a new one. The forecast strings block carries this id as string_id (plus a positional string_index), so read the site and forecast from the same point in time.
  • A location change (coordinates) triggers a re-determination of elevation, timezone and horizon and invalidates the forecast cache.
  • Location changes are limited to 1 per 30 days per site (plan-independent) → otherwise 429.
Terminalcurl
curl -X PATCH https://api.pvnode.com/v2/sites/{site_id} \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"config": {"modules": {"technology": "topcon"}}}'

Deletion & restore

DELETE marks the site as "pending deletion" (deleted_at set); permanent removal happens 30 days later. Within this window, POST .../restore restores the site.

Limits & errors

Limit / errorBehavior
Sites API accessWithout access → 403.
Site limitMaximum number of sites (can be unmetered) → 403 when exceeded.
Strings per siteMaximum strings per site → 422 when exceeded.
Ephemeral sitesWithout this entitlement → 403.
Location change quota1 per 30 days per site → 429.
Invalid timezone422.
Site not found404.

The complete reference of all fields and error codes is in the API Reference.

Last modified on June 18, 2026
EnterpriseInline Endpoints
On this page
  • Endpoints at a glance
  • Create
  • Update (PATCH)
  • Deletion & restore
  • Limits & errors