Thanks for the detailed walkthrough. I followed each step but the join path isn’t returning what the UI shows, so hoping you can confirm whether this is a limitation or whether I’m calling the wrong endpoint.
(Full transparency: I worked through the diagnostics with Claude, which also helped format this reply. All API calls, IDs, and responses below are from my actual environment.)
Test case:
-
Project ID: 63084b80fcf8460013c92992 (PTOG Master)
-
Scenario ID: 67a00d629958039a2191be5c (PTOG Type Wells - Latest)
-
Econ Run ID: 69de6385353e3f15221c1f69
In the UI scenario grid, every well shows a populated model name under the “Default” qualifier for Pricing, Expenses, Capex, Stream Properties, etc. — exactly what I want to read via the API.
What I tried (matching your steps):
Step 1 — Get the econ run.
GET /v1/projects/{pid}/scenarios/{sid}/econ-runs/{runId} returns:
-
{"id": "69de6385...", "runDate": "2026-04-14T15:55:49Z", "status": "complete", "tags": [], "outputParams": {...}, "project": "63084b...", "scenario": "67a00d..."}
No embedded combo/qualifier object.
Step 2 — Get the scenario combos/qualifiers.
GET /v1/projects/{pid}/scenarios/{sid}/qualifiers returns:
-
{"capex": ["Default"], "dates": ["Default"], "expenses": ["Default"],
"pricing": ["Default"], "differentials": ["Default"], "streamProperties": ["Default"], "productionTaxes": ["Default"], "risking": ["Default"], ...}
Good — qualifier names retrieved.
GET /v1/projects/{pid}/scenarios/{sid}/combos → 404 “Method does not exist”
Step 3 — Resolve assignment per (econName, modelId).
GET /v1/projects/{pid}/econ-models/pricing/{any-pricing-model-id}/assignments?scenarios={sid} returns [] (empty list) for every model I probed across all 8 econ types (45 pricing models, 36 capex, 16 expenses, 5 stream-properties, etc., across both project-level and company-level econ-models).
An unfiltered probe ?take=5 returns 0–1 rows total per type — nowhere near the 535 wells visible in the UI grid for this scenario.
Step 4 — Get model names.
GET /v1/projects/{pid}/econ-models and GET /v1/econ-models both work fine and return all model definitions with id and name. So step 4 is fine — but I have nothing from step 3 to look up.
Other things I tried:
-
GET /v1/projects/{pid}/scenarios/{sid}/well-assignments returns only {“wells”: [, , …]} — no model bindings.
-
GET /v1/projects/{pid}/scenarios/{sid}/well-assignments/{wellId} → 404.
-
GET /v1/econ-models/pricing?well={wellId} returns len=0 for every well I tried (the docs note this filter only matches unique per-well overrides, not Default-qualifier assignments).
-
POST /v1/projects/{pid}/econ-models/pricing/assignments with {“scenarios”:[sid],“wells”:[wellId]} → 404.
-
GET /v1/projects/{pid}/scenarios/{sid}/inputs|table|columns|grid|models|assignments → all 404.
-
GET /v1/openapi.json and ~10 other discovery URLs → all 404.
Question:
Is the per-well-per-type model assignment (the data shown in the UI scenario grid under the Default qualifier) exposed via the public API? If yes, which endpoint returns it? If no, is there a CSV/Excel scenario-table export endpoint we can call?
Thanks!