Docs · Platform
A regulatory graph that your team can query through a REST API, subscribe to through webhooks, and extend through custom integrations. The public API is in closed beta today — enterprise customers get keys on request.
Authentication
Every API call requires an Authorization header with a bearer token. Tokens are scoped to a single workspace and can be rotated from the admin console. Enterprise customers can request tokens with narrower scopes for automation pipelines.
# Obtain a token from the admin console at app.cliffcenter.com
export CLIFFCENTER_API_KEY="sk_live_..."
# Every request sends the bearer token
curl https://api.cliffcenter.com/v1/workspaces/current \
-H "Authorization: Bearer $CLIFFCENTER_API_KEY"Core concepts
Cliffcenter's data model is intentionally small. Once you understand these six objects, the rest of the API is predictable.
The core object. A Project has a canonical schema — load profile, capex, COD, job count, candidate POI list, candidate county list — that feeds every workflow. Every filing, every artifact, every filing package is generated from a Project.
A per-tenant container for Projects, Deals, Sites, and Filings. Workspaces are strictly isolated; every API call carries a workspace ID and access is enforced by our auth layer.
A live data structure representing every rulemaking, tariff, docket, statute, and regulatory deadline we track. When a new FERC order lands, the graph updates within 24 hours and every downstream Project gets a compliance diff.
A generated artifact derived from the Project and the Regulatory graph. Filings have types (interconnection, incentive, FERC, NRC, NPDES), statuses (draft, in review, submitted, approved), and per-field source attribution.
A BTM or co-location transaction object. Deals own their own regulatory graph subset and can span multiple Projects. Deal rooms are scoped by Deal.
An entry in the Site Intelligence index. Sites have public metadata (location, type, capacity, POI voltage) and per-customer diligence state (shortlisted, in diligence, LOI'd, dropped).
Example calls
POST https://api.cliffcenter.com/v1/projects
Authorization: Bearer ${CLIFFCENTER_API_KEY}
Content-Type: application/json
{
"name": "Arlington North",
"load_mw": 420,
"capex_usd": 2100000000,
"target_cod": "2028-03-01",
"candidate_pois": [
{ "utility": "Oncor", "substation": "ABBOTT", "voltage_kv": 345 },
{ "utility": "Oncor", "substation": "BUFFALO", "voltage_kv": 345 }
],
"candidate_counties": ["Tarrant, TX", "Dallas, TX"]
}GET https://api.cliffcenter.com/v1/projects/{project_id}/queue_status
Authorization: Bearer ${CLIFFCENTER_API_KEY}
{
"project_id": "prj_2Nx8...",
"iso": "ERCOT",
"readiness_gate": "passed",
"batch_study_eligible": true,
"self_curtailment_required_pct": 18,
"upgrade_cost_envelope_usd": {
"p10": 12400000,
"p50": 34100000,
"p90": 61800000
},
"next_deadline": "2026-04-17T23:59:00Z",
"next_deadline_label": "PUCT 58481 comment round"
}POST https://api.cliffcenter.com/v1/webhooks
Authorization: Bearer ${CLIFFCENTER_API_KEY}
Content-Type: application/json
{
"url": "https://example.com/cliffcenter/webhooks",
"secret": "whsec_...",
"events": [
"regulatory.filing.published",
"project.queue_status.changed",
"deal.compliance.diff"
],
"filter": {
"workspace_id": "ws_8Fa..."
}
}Webhooks
Webhooks fire within seconds of an event and include HMAC signature verification. We guarantee at-least-once delivery with exponential backoff on non-200 responses.
regulatory.filing.publishedFires when a new filing is added to the regulatory graph. Includes the agency, docket, filer, filing type, and a link to the source document.
project.queue_status.changedFires when a Project's queue position, readiness gate, or upgrade cost envelope changes. Useful for keeping internal dashboards in sync.
deal.compliance.diffFires when a Deal's regulatory graph changes in a way that affects compliance. Payload includes the specific filings or rulings that triggered the diff.
filing.status.changedFires when an active Filing moves between statuses (draft, in review, submitted, deficiency letter, approved, rejected).
site.fit_score.updatedFires when a Site's fit score changes due to new public data (EIA retirement schedule update, ISO queue changes, remediation status changes).
Versioning and stability
The REST API is versioned in the URL path (v1, v2, etc.). Breaking changes are published with at least six months of advance notice. Non-breaking changes (new fields, new endpoints, new events) ship immediately and are documented in the changelog.
Webhook event schemas are versioned separately. Event consumers should treat unknown fields as forward-compatible and ignore them gracefully.
Rate limits are per-workspace and per-endpoint. We publish the limits in response headers and provide a dedicated rate-limit dashboard in the admin console. Customers with burst workloads can request lifted limits on enterprise plans.
Support
API keys come with a shared Slack or Teams channel for active customers. Our engineering team responds within one business day, same day for priority issues.
Integration help, debugging, custom connector requests, and webhook delivery issues all route to the same channel. We maintain a public status page at status.cliffcenter.com that shows platform health and any active incidents.
For more formal engagement, enterprise customers get a named technical account manager and a quarterly product review meeting.
Docs
The public API is in closed beta today — enterprise customers and technical partners can request a key. The API reference is published in OpenAPI format to token holders.