Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/cms-energy-outage-map-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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.1.0
info:
title: Consumers Energy Outage Map ArcGIS REST API
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`. It is the machine-readable surface behind
the public Consumers Energy Outage Map, and it answers anonymously — no API key, no token, no
registration.
This description was GENERATED by API Evangelist from the service's own live self-describing
metadata: every path, layer id, field name and capability below was read from a probed
`?f=json` response on 2026-09-06. It is not a specification Consumers Energy publishes; ArcGIS
Server does not emit OpenAPI. The authoritative contract remains the ArcGIS REST Services
Directory itself (and the SOAP WSDL under `wsdl/`).
OWNERSHIP: this API is served from `www.consumersenergy.com`, a host CMS Energy controls,
and its content (`Consumers Energy Outage Map`, `CE_County_Outages`, `CE_City_Outages`)
is Consumers Energy operational data. The software is Esri ArcGIS Server 11.5 running under
the utility's own domain.
NOT INCLUDED: `Utilities/RasterUtilities` (GPServer) and `Utilities/Symbols` (SymbolServer) are
stock Esri utility services carrying no Consumers Energy content, and the `PreProd` folder was
empty when probed.
contact:
name: Consumers Energy
url: https://www.consumersenergy.com/outagemap
license:
name: Terms of use not stated on the service
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
servers:
- url: https://www.consumersenergy.com/arcgispublic/rest
description: Consumers Energy public ArcGIS Server REST Services Directory (anonymous).
tags:
- name: Catalog
description: Service discovery — folders, services and server version information.
- name: Outage Map
description: The CEOutageMap map service behind the public Consumers Energy outage map.
- name: Service Dashboard
description: County- and city-level outage rollups published as map and feature layers.
paths:
/info:
get:
summary: Get ArcGIS Server information
description: Returns the server version, the SOAP endpoint URL and token-service metadata.
operationId: getServerInfo
tags: [Catalog]
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Server information.
content:
application/json:
schema: { $ref: '#/components/schemas/ServerInfo' }
/services:
get:
summary: List services and folders
description: Root of the REST Services Directory — the folders and services published anonymously.
operationId: listServices
tags: [Catalog]
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Service catalog.
content:
application/json:
schema: { $ref: '#/components/schemas/ServiceCatalog' }
/services/{folder}:
get:
summary: List services in a folder
operationId: listFolderServices
tags: [Catalog]
parameters:
- name: folder
in: path
required: true
description: Folder name as returned by listServices.
schema:
type: string
enum: [PreProd, Utilities]
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Folder catalog.
content:
application/json:
schema: { $ref: '#/components/schemas/ServiceCatalog' }
/services/CEOutageMap/MapServer:
get:
summary: Describe the CEOutageMap map service
description: |
Consumers Energy Outage Map. Capabilities `Map,Query,Data`; maxRecordCount 1000;
supported query formats JSON, geoJSON, PBF. Seven feature layers (0-6).
operationId: describeOutageMapService
tags: [Outage Map]
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Map service description.
content:
application/json:
schema: { $ref: '#/components/schemas/MapServiceInfo' }
/services/CEOutageMap/MapServer/{layerId}:
get:
summary: Describe an outage map layer
operationId: describeOutageMapLayer
tags: [Outage Map]
parameters:
- $ref: '#/components/parameters/OutageMapLayerId'
- $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/CEOutageMap/MapServer/{layerId}/query:
get:
summary: Query an outage map layer
description: |
Attribute/spatial query against a CEOutageMap layer. Layers 1, 2 and 5 carry live outage
job attributes (JOB_ID, CUSTOMER_COUNT, CAUSE_CD, CAUSE_DESC, OUTAGE_TIME,
EST_TIME_RESTORATION, EST_TIME_ETR, CREW_ASSIGNED).
operationId: queryOutageMapLayer
tags: [Outage Map]
parameters:
- $ref: '#/components/parameters/OutageMapLayerId'
- $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/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:
parameters:
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
OutageMapLayerId:
name: layerId
in: path
required: true
description: |
CEOutageMap layer id. 0 Service Territory; 1, 2 and 5 Number of Customers Affected;
3, 4 and 6 Percentage of Customers Affected.
schema:
type: integer
minimum: 0
maximum: 6
example: 1
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
Where:
name: where
in: query
description: SQL-style attribute filter, e.g. `1=1`.
required: false
schema: { type: string }
example: 1=1
OutFields:
name: outFields
in: query
description: Comma-separated field list, or `*` for all fields.
required: false
schema: { type: string }
example: '*'
ReturnGeometry:
name: returnGeometry
in: query
required: false
schema: { type: boolean, default: true }
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 }
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: []
schemas:
ServerInfo:
type: object
properties:
currentVersion: { type: number, examples: [11.5] }
fullVersion: { type: string, examples: ['11.5.0'] }
soapUrl:
type: string
format: uri
examples: ['https://www.consumersenergy.com/arcgispublic/services']
secureSoapUrl: { type: [string, 'null'] }
authInfo:
type: object
properties:
isTokenBasedSecurity: { type: boolean }
tokenServicesUrl:
type: string
format: uri
examples: ['https://www.consumersenergy.com/arcgispublic/tokens/']
shortLivedTokenValidity: { type: integer, examples: [60] }
ServiceCatalog:
type: object
properties:
currentVersion: { type: number }
folders:
type: array
items: { type: string }
services:
type: array
items:
type: object
properties:
name: { type: string }
type:
type: string
enum: [MapServer, FeatureServer, GPServer, SymbolServer]
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' }
LayerSummary:
type: object
properties:
id: { type: integer }
name: { type: string }
geometryType: { type: string }
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' }
Field:
type: object
properties:
name: { type: string }
type:
type: string
examples:
- esriFieldTypeOID
- esriFieldTypeString
- esriFieldTypeInteger
- esriFieldTypeSmallInteger
- esriFieldTypeDouble
- esriFieldTypeDate
- esriFieldTypeGeometry
alias: { type: string }
length: { type: integer }
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
ArcGisError:
type: object
properties:
error:
type: object
properties:
code: { type: integer }
message: { type: string }
details:
type: array
items: { type: string }