CMS Energy Service Dashboard API
County- and city-level outage rollups published as map and feature layers.
County- and city-level outage rollups published as map and feature layers.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cms-energy-service-dashboard-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Consumers Energy Outage Map ArcGIS REST … Service Dashboard…
version: '11.5'
summary: Anonymous, first-party ArcGIS REST services publishing Consumers Energy outage and service-territory geodata.
description: 'Consumers Energy (the regulated Michigan electric and natural-gas utility of CMS Energy)
operates a public, unauthenticated ArcGIS Server REST Services Directory at
`https://www.consumersenergy.com/arcgispublic/rest`.'
contact:
name: Consumers Energy
url: https://www.consumersenergy.com/outagemap
license:
name: Terms of use not stated on the service
servers:
- url: https://www.consumersenergy.com/arcgispublic/rest
description: Consumers Energy public ArcGIS Server REST Services Directory (anonymous).
tags:
- name: Service Dashboard
description: County- and city-level outage rollups published as map and feature layers.
paths:
/services/ServiceDashboard/MapServer:
get:
summary: Describe the ServiceDashboard map service
description: 'Prod ServiceDashboard. Capabilities `Query,Map,Data`; supportedExtensions `FeatureServer`;
maxRecordCount 1000. Five feature layers (0-4).'
operationId: describeServiceDashboardMapService
tags:
- Service Dashboard
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Map service description.
content:
application/json:
schema:
$ref: '#/components/schemas/MapServiceInfo'
/services/ServiceDashboard/MapServer/{layerId}:
get:
summary: Describe a ServiceDashboard layer
operationId: describeServiceDashboardLayer
tags:
- Service Dashboard
parameters:
- $ref: '#/components/parameters/DashboardLayerId'
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Layer description including its field schema.
content:
application/json:
schema:
$ref: '#/components/schemas/LayerInfo'
'404':
$ref: '#/components/responses/ArcGisError'
/services/ServiceDashboard/MapServer/{layerId}/query:
get:
summary: Query a ServiceDashboard layer
description: 'Attribute query against the county/city outage rollups. Layer 3 (CE_County_Outages)
exposes COUNTY_NAME, COUNTY_ID, CUSTOMER_COUNT, OUTAGE_COUNT, PCT_CUSTOMERS_OUT,
CRITICAL_COUNT, PRIORITY_COUNT and LAST_UPDATED.'
operationId: queryServiceDashboardLayer
tags:
- Service Dashboard
parameters:
- $ref: '#/components/parameters/DashboardLayerId'
- $ref: '#/components/parameters/Where'
- $ref: '#/components/parameters/OutFields'
- $ref: '#/components/parameters/ReturnGeometry'
- $ref: '#/components/parameters/ReturnCountOnly'
- $ref: '#/components/parameters/ResultRecordCount'
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Query result — a feature set, or a count when returnCountOnly is true.
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
'400':
$ref: '#/components/responses/ArcGisError'
/services/ServiceDashboard/FeatureServer:
get:
summary: Describe the ServiceDashboard feature service
description: 'The FeatureServer projection of the same five layers. Advertised capabilities are
`Query,Create,Update,Delete,Uploads,Editing`; editing operations were NOT probed and are
expected to require the token service at /arcgispublic/tokens/.'
operationId: describeServiceDashboardFeatureService
tags:
- Service Dashboard
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Feature service description.
content:
application/json:
schema:
$ref: '#/components/schemas/MapServiceInfo'
/services/ServiceDashboard/FeatureServer/{layerId}/query:
get:
summary: Query a ServiceDashboard feature layer
operationId: queryServiceDashboardFeatureLayer
tags:
- Service Dashboard
parameters:
- $ref: '#/components/parameters/DashboardLayerId'
- $ref: '#/components/parameters/Where'
- $ref: '#/components/parameters/OutFields'
- $ref: '#/components/parameters/ReturnGeometry'
- $ref: '#/components/parameters/ReturnCountOnly'
- $ref: '#/components/parameters/ResultRecordCount'
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Query result.
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
'400':
$ref: '#/components/responses/ArcGisError'
components:
schemas:
Field:
type: object
properties:
name:
type: string
type:
type: string
examples:
- esriFieldTypeOID
- esriFieldTypeString
- esriFieldTypeInteger
- esriFieldTypeSmallInteger
- esriFieldTypeDouble
- esriFieldTypeDate
- esriFieldTypeGeometry
alias:
type: string
length:
type: integer
ArcGisError:
type: object
properties:
error:
type: object
properties:
code:
type: integer
message:
type: string
details:
type: array
items:
type: string
MapServiceInfo:
type: object
properties:
currentVersion:
type: number
cimVersion:
type: string
serviceDescription:
type: string
mapName:
type: string
capabilities:
type: string
supportedExtensions:
type: string
supportedQueryFormats:
type: string
maxRecordCount:
type: integer
layers:
type: array
items:
$ref: '#/components/schemas/LayerSummary'
tables:
type: array
items:
$ref: '#/components/schemas/LayerSummary'
LayerInfo:
type: object
properties:
id:
type: integer
name:
type: string
type:
type: string
examples:
- Feature Layer
geometryType:
type: string
examples:
- esriGeometryPolygon
capabilities:
type: string
maxRecordCount:
type: integer
fields:
type: array
items:
$ref: '#/components/schemas/Field'
QueryResult:
type: object
description: 'A feature set, or a count object of the form {"count": n} when returnCountOnly=true.'
properties:
count:
type: integer
displayFieldName:
type: string
fieldAliases:
type: object
additionalProperties:
type: string
fields:
type: array
items:
$ref: '#/components/schemas/Field'
features:
type: array
items:
type: object
properties:
attributes:
type: object
additionalProperties: true
geometry:
type: object
additionalProperties: true
LayerSummary:
type: object
properties:
id:
type: integer
name:
type: string
geometryType:
type: string
parameters:
ReturnGeometry:
name: returnGeometry
in: query
required: false
schema:
type: boolean
default: true
OutFields:
name: outFields
in: query
description: Comma-separated field list, or `*` for all fields.
required: false
schema:
type: string
example: '*'
Where:
name: where
in: query
description: SQL-style attribute filter, e.g. `1=1`.
required: false
schema:
type: string
example: 1=1
Format:
name: f
in: query
description: Response format. `json` and `pjson` were both observed returning 200.
required: false
schema:
type: string
enum:
- json
- pjson
- html
- geojson
- pbf
default: html
example: json
ReturnCountOnly:
name: returnCountOnly
in: query
description: Return only the matching feature count.
required: false
schema:
type: boolean
default: false
ResultRecordCount:
name: resultRecordCount
in: query
description: Page size. The service caps a single response at maxRecordCount 1000.
required: false
schema:
type: integer
minimum: 1
maximum: 1000
DashboardLayerId:
name: layerId
in: path
required: true
description: 'ServiceDashboard layer id. 0 CustomersInterruptedPercent; 1 NumberOfInterruptions;
2 NumberOfWireDowns; 3 CE_County_Outages; 4 CE_City_Outages.
'
schema:
type: integer
minimum: 0
maximum: 4
example: 3
responses:
ArcGisError:
description: ArcGIS error envelope.
content:
application/json:
schema:
$ref: '#/components/schemas/ArcGisError'
examples:
layerNotFound:
summary: Observed response for an unknown layer id
value:
error:
code: 404
message: Layer not found
details: []
x-generated-from: live ArcGIS REST Services Directory metadata probed 2026-09-06
x-provenance:
method: generated
generated: '2026-09-06'
source: https://www.consumersenergy.com/arcgispublic/rest/services?f=json
probes:
- url: https://www.consumersenergy.com/arcgispublic/rest/services?f=json
status: 200
- url: https://www.consumersenergy.com/arcgispublic/rest/info?f=json
status: 200
- url: https://www.consumersenergy.com/arcgispublic/rest/services/CEOutageMap/MapServer?f=json
status: 200
- url: https://www.consumersenergy.com/arcgispublic/rest/services/ServiceDashboard/MapServer?f=json
status: 200
- url: https://www.consumersenergy.com/arcgispublic/rest/services/ServiceDashboard/FeatureServer?f=json
status: 200
- url: https://www.consumersenergy.com/arcgispublic/rest/services/ServiceDashboard/MapServer/3/query?where=1%3D1&returnCountOnly=true&f=json
status: 200