Skip to main content

Exports V2 Migration Guide

V1 exports stop responding on 2027-01-04

POST /v1/exports stops responding on 2027-01-04. V1 responses already carry the header Sunset: Mon, 04 Jan 2027 00:00:00 GMT.

Export files are kept for 7 days after the export runs, for V1 and V2. After that they are deleted and their links stop working.

Why​

A V1 request only returns data if someone has already run the export in the ComboCurve UI. With V2 you start the export yourself over the API, poll its status, and download the files when it finishes. No UI step is needed.

Endpoint mapping​

V1 exportTypeV2 endpoint
dailyForecastVolumeExportPOST /v2/exports/forecast-volumes with forecast.resolution: "daily"
monthlyForecastVolumeExportPOST /v2/exports/forecast-volumes with forecast.resolution: "monthly"
dailyProductionVolumeExportPOST /v2/exports/forecast-volumes with only production.resolution: "daily"
monthlyProductionVolumeExportPOST /v2/exports/forecast-volumes with only production.resolution: "monthly"
dailyCombinedVolumeExportPOST /v2/exports/forecast-volumes with forecast and production at "daily" and mergeForecastAndProduction: true
monthlyCombinedVolumeExportPOST /v2/exports/forecast-volumes with forecast and production at "monthly" and mergeForecastAndProduction: true
econMonthlyExportPOST /v2/exports/econ-monthly

V2 also offers POST /v2/exports/forecast-parameters and POST /v2/exports/econ-one-liners, which have no V1 equivalent.

How a V2 export works​

  1. Start the export. POST to the endpoint above. The response contains a jobId.
  2. Poll the status. GET /v2/exports/<resource>/{jobId} until status is successful (forecast exports) or complete (econ exports). Stop on failed. Forecast exports never report completed; successful is the only success state.
  3. Download. result.fileUrls holds signed links to the Parquet files. Use expirationHours on the status request to choose how long the links stay valid (default 24).
  4. Download right away. The files are deleted 7 days after the export runs, whatever the link's expiry.

A status request for an export older than 7 days reports failed with an error message. Start a new export instead.

Field changes​

V1 fieldV2 field
projectIdprojectId
forecastIdforecastId
scenarioIdscenarioId
econRunIdrunId
fileTypefileType (still only parquet)
expirationHoursexpirationHours, now a query parameter on the status request

Forecast volumes also need mergeForecastAndProduction: true for the combined exports, false otherwise. Include forecast, production or both, each with a resolution.

Examples​

Daily forecast volumes​

POST /v2/exports/forecast-volumes
{
"projectId": "5e5981b9e23dae0012624d72",
"forecastId": "61a4d175f1da1800136c4b21",
"mergeForecastAndProduction": false,
"forecast": { "resolution": "daily" }
}

Econ monthly​

POST /v2/exports/econ-monthly
{
"projectId": "5e5981b9e23dae0012624d72",
"scenarioId": "6494d5049a4f6b0a3491c309",
"runId": "ecf8763db8ac41efb9bbf311"
}

Both return { "jobId": "..." }. Poll GET /v2/exports/forecast-volumes/{jobId} or GET /v2/exports/econ-monthly/{jobId}.