Skip to content
Dark MatterDark Matter
EnergyReference

API reference — /v1/energy/*

Endpoint reference for the energy vertical. Slots, demand, aggregation plans, pools, tranches, waterfalls, contracts, dispatch, jurisdictions, stage gates.

Authentication

All /v1/energy/* endpoints require Authorization: Bearer $DMTR_KEY headers per the standard API auth model.

Slots

MethodPathPurpose
GET/v1/energy/slotsList slot inventory
POST/v1/energy/slotsRegister a new slot
GET/v1/energy/slots/{slot_id}Fetch a slot
PATCH/v1/energy/slots/{slot_id}Update fields
POST/v1/energy/slots/{slot_id}/decomposeSplit into child blocks
POST/v1/energy/slots/{slot_id}/advanceAdvance the stage gate

Decompose request body

{
  "blocks": [
    { "slot_id": "slot-X-block-1", "capacity_mw": 50 },
    { "slot_id": "slot-X-block-2", "capacity_mw": 50 }
  ]
}

The total child MW must not exceed the parent's capacity_mw. Each child inherits the parent's site_class, jurisdiction, and interconnect topology by default; override fields via subsequent PATCH.

Advance request body

{ "gate": "permits", "status": "complete" }

Returns 409 if the transition is disallowed (prerequisite gates incomplete or regression attempted).

Demand

MethodPathPurpose
POST/v1/energy/demandSubmit a DemandSpec
POST/v1/energy/demand/{demand_id}/matchMatch against slot inventory
POST/v1/energy/demand/{demand_id}/allocation-planProduce a non-binding multi-slot AllocationPlan

Match request body (optional)

{
  "tenantOfacScreenedAt": "2026-04-30",
  "estimatedProjectValueUsd": 800000000
}

Both are passed through to the rights engine for the OFAC and RIGI checks respectively.

Aggregation and pools

MethodPathPurpose
POST/v1/energy/poolsCreate a CapacityPool
GET/v1/energy/pools/{pool_id}Fetch pool by id
PATCH/v1/energy/pools/{pool_id}Update pool fields
POST/v1/energy/pools/{pool_id}/signExecute pool and issue component encumbrances
POST/v1/energy/pools/{pool_id}/dissolveDissolve pool after precondition checks
POST/v1/energy/pools/{pool_id}/tranchesAdd pool tranche
POST/v1/energy/pools/{pool_id}/waterfallExecute deterministic period waterfall

Contracts

MethodPathPurpose
POST/v1/energy/contractsCreate a CapacityContract
GET/v1/energy/contracts/{contract_id}Fetch a contract
POST/v1/energy/contracts/{contract_id}/dispatch-noticeIssue a dispatch notice
GET/v1/energy/contracts/{contract_id}/dispatch-noticesList dispatch history

Reference endpoints

MethodPathPurpose
GET/v1/energy/jurisdictionsList distinct jurisdictions across slot inventory
GET/v1/energy/stage-gatesReference: stage-gate sequence + prerequisites

OpenAPI source

The full machine-readable specification lives at packages/openapi/openapi.yaml with schema components:

  • ComputeSlot → packages/openapi/schemas/compute-slot.json
  • CapacityContract → packages/openapi/schemas/capacity-contract.json
  • DemandSpec → packages/openapi/schemas/demand-spec.json
  • StageGateState → packages/openapi/schemas/stage-gate-state.json
  • AllocationPlan → packages/openapi/schemas/allocation-plan.json
  • CapacityPool → packages/openapi/schemas/capacity-pool.json
  • PoolTranche → packages/openapi/schemas/pool-tranche.json

A pnpm test:openapi-sync check enforces enum parity between the OpenAPI JSON Schemas and the Zod source-of-truth in @dmtr/core and @dmtr/energy so the spec cannot drift silently.

Edit this page on GitHub

Last reviewed: May 5, 2026

Was this page helpful?