Linear segment `slope` seems incorrect in `get-forecast-outputs`

When I use the get-forecast-outputs endpoint with linear segments, I seem to be getting -1 or 1 for slope but I’d expect to receive the actual slope (matching the UI). It looks like the endpoint currently returns the sign of the slope. Previously I believe this used to return the actual slope so this might be a regression from the previous behavior.

diEffSec still seems to be populated correctly, but that may also be omitted in some cases so I can’t rely on that ( Extremely large decline rates are omitted from `get-forecast-outputs` ).

I will send this off to the backend team for context and suggestions.

1 Like

Sceduled release August 17,2026.

We’ve added a new field on the Forecast Outputs endpoints so you can read the actual linear slope, not just the direction sign.

Endpoints

GET /v1/projects/{projectId}/forecasts/{forecastId}/outputs
GET /v1/projects/{projectId}/forecasts/{forecastId}/outputs/{id}
What changed

Field Meaning When present
slope (existing)
Direction only: -1 declining, 0 flat, 1 increasing
Segments generally
slopeValue (new)
Actual linear slope (k), rate change per day (e.g. -0.00137 BBL/D/D)
Linear segments only
slope is unchanged, so existing integrations keep working. Use slopeValue when you need the numeric slope shown in the UI.

Where slopeValue lives

It is on each segment object under the phase series (best / p10 / p50 / p90 / ratio):

ForecastOutput
└── best | p10 | p50 | p90 | ratio
└── segments
├── segmentType
├── startDate / endDate
├── qStart / qEnd
├── slope ← direction sign (-1 | 0 | 1)
├── slopeValue ← NEW: actual linear slope (k); linear only
└── …
Example (linear segment)

{
“best”: {
“segments”: [
{
“segmentType”: “linear”,
“qStart”: 100,
“qEnd”: 50,
“slope”: -1,
“slopeValue”: -0.00137
}
]
}
}
For non-linear segment types (e.g. arps, exp, flat), slopeValue is omitted.

Sounds great, thank you!

Were you able to confirm if the existing slope field always returned the sign only? I can’t say for sure but I believe it used to return the actual slope (what slopeValue will return). In other words I believe there are already integrations relying on the existing slope field to return the slope instead of the sign.

It was changed in the backend back in October 2025.