PJM Interconnection website screenshot

PJM Interconnection

PJM Interconnection is the regional transmission organization (RTO) that operates the largest competitive wholesale electricity market in the United States, coordinating the movement of electricity across all or parts of Delaware, Illinois, Indiana, Kentucky, Maryland, Michigan, New Jersey, North Carolina, Ohio, Pennsylvania, Tennessee, Virginia, West Virginia and the District of Columbia for roughly 67 million people. PJM sits at the wholesale layer of the energy value chain — it has no retail customers, so no Green Button, ESPI or consumer data-sharing obligation applies to it. Its API posture is honestly "rich data, universally gated": PJM publishes a large machine-readable market data catalogue through the Data Miner 2 API at https://api.pjm.com/api/v1 and an Azure API Management developer portal at https://apiportal.pjm.com, but every feed returns HTTP 401 anonymously and a free subscription key is only issued after a PJM Tools account is registered and approved by a Customer Account Manager. Its one genuinely mandated interface is the FERC Order 889 / NAESB WEQ OASIS node, which is verifiably live and standards-conformant at https://pjmoasis.pjm.com, though template submission also requires an authenticated PJM SSO session. One genuinely anonymous PJM REST API does exist and is easy to miss: the Messages public web service at https://messages.pjm.com/messages/rest/public/messages, linked as "Web Service" from the Upcoming Changes page, returns the planned-outage and impact notices for the whole PJM tool estate with no credential, in XML or JSON.

PJM Interconnection publishes 6 APIs on the APIs.io network. Tagged areas include Energy, United States, Energy Markets, Electricity, and Grid.

PJM Interconnection’s developer surface includes documentation, signup flow, authentication, engineering blog, support, legal docs, API reference, and 36 more developer resources.

51.6/100 developing ▬ flat Agent 20/100 agent aware Full breakdown ↓
scored 2026-08-20 · rubric v0.12.0
6 APIs
EnergyUnited StatesEnergy MarketsElectricityGridSystem OperatorWholesale ElectricityTransmissionMarket DataDemand Response

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-08-20 · rubric v0.12.0
Composite quality — 51.6/100 · developing
Contract Quality 2.1 / 21
Developer Ergonomics 12.0 / 17
Access Clarity 7.6 / 17
Operational Transparency 8.4 / 11
Contract Governance 3.4 / 10
Discoverability 7.9 / 9
Regulatory Posture 5.8 / 15
Agent readiness — 20/100 · agent aware
Machine-Readable Contract 0 / 18
Agentic Access Contract 0 / 10
Documented Reversibility 0 / 6
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 8 / 8
Request/Response Examples 7 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 0 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 3 / 3
A2A Agent Card 0 / 8
Dry-Run / Simulate Mode 0 / 4
Regulatory Posture applies to this provider. Its tags matched the Energy & Utilities regime, so Regulatory Posture carries 15 points of the composite. If this regime is wrong for your business, say so on your provider repo — the applicability map is public and we will correct it.
The six quality facets above are damped to 85 points between them, because the conditional facet above carries the other 15. That is why each facet's contribution is shown against a damped maximum: raising a quality facet moves the composite by 85% of its nominal weight, not 100%. The full arithmetic is at apis.io/rating/.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/pjm: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs 6

Individual APIs this provider publishes, each with its own machine-readable definition.

PJM Data Miner 2 API

PJM's public wholesale market and system data catalogue, exposed as a REST API behind Azure API Management. Feeds include day-ahead and real-time hourly and five-minute LMPs, an...

PJM Messages Public Web Service

The only fully anonymous PJM REST API found on the public surface. It backs the PJM Upcoming Changes page and returns the current planned-outage, delayed-data and impact notices...

PJM OASIS Template API

PJM's Open Access Same-Time Information System (OASIS) node, the FERC Order 889 obligation implemented against the NAESB Wholesale Electric Quadrant business practice standards....

PJM Browserless Authentication API

The REST authentication front door for every browserless/API integration with PJM eTools. A client POSTs to the PJM single sign-on service with X-OpenAM-Username and X-OpenAM-Pa...

PJM InSchedule Browserless API

The browserless REST interface to PJM InSchedule, the eTool market participants use to submit and retrieve bilateral internal energy transaction schedules and contracts. PJM's b...

PJM eDART Browserless API

The browserless XML-over-HTTP interface to eDART, PJM's Dispatcher Applications and Reporting Tool, used by transmission owners and generation owners to file and query transmiss...

Rate Limits 1

Documented rate limits and quota policies.

Pjm Rate Limits

1 limits

RATE LIMITS

JSON Schema 1

Standalone JSON Schema definitions for this provider's data models.

Examples 1

Example request and response payloads for these APIs.

Security Posture 3

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Pjm Authentication

apiKey/custom-session-token/mutualTLS/none · 5 schemes

SECURITY

Pjm Domain Security

TLSv1.3 · HSTS · DMARC

SECURITY

Pjm Vulnerability Disclosure

security.txt · contact published

SECURITY

Resources

Get Started 5

Portal, sign-up, and the first successful call

Documentation 3

Reference material describing how the API behaves

Agent Surfaces 3

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 6

Pagination, idempotency, versioning, errors, and events

Build 3

SDKs, sample code, and the tooling you integrate with

Access & Security 6

Authentication, authorization, and security posture

Learn 1

Tutorials, courses, talks, and written guidance

Operate 8

Status, limits, changes, and where to get help

Scroll for all 8

Commercial 4

Pricing, plans, and the legal terms of use

Company 3

The organization behind the API

Other 1

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: pjm
url: https://raw.githubusercontent.com/api-evangelist/pjm/refs/heads/main/apis.yml
name: PJM Interconnection
kind: company
description: 'PJM Interconnection is the regional transmission organization (RTO) that operates the largest competitive wholesale
  electricity market in the United States, coordinating the movement of electricity across all or parts of Delaware, Illinois,
  Indiana, Kentucky, Maryland, Michigan, New Jersey, North Carolina, Ohio, Pennsylvania, Tennessee, Virginia, West Virginia
  and the District of Columbia for roughly 67 million people. PJM sits at the wholesale layer of the energy value chain —
  it has no retail customers, so no Green Button, ESPI or consumer data-sharing obligation applies to it. Its API posture
  is honestly "rich data, universally gated": PJM publishes a large machine-readable market data catalogue through the Data
  Miner 2 API at https://api.pjm.com/api/v1 and an Azure API Management developer portal at https://apiportal.pjm.com, but
  every feed returns HTTP 401 anonymously and a free subscription key is only issued after a PJM Tools account is registered
  and approved by a Customer Account Manager. Its one genuinely mandated interface is the FERC Order 889 / NAESB WEQ OASIS
  node, which is verifiably live and standards-conformant at https://pjmoasis.pjm.com, though template submission also requires
  an authenticated PJM SSO session. One genuinely anonymous PJM REST API does exist and is easy to miss: the Messages public
  web service at https://messages.pjm.com/messages/rest/public/messages, linked as "Web Service" from the Upcoming Changes
  page, returns the planned-outage and impact notices for the whole PJM tool estate with no credential, in XML or JSON.'
image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
tags:
- Energy
- United States
- Energy Markets
- Electricity
- Grid
- System Operator
- Wholesale Electricity
- Transmission
- Market Data
- Demand Response
created: '2026-07-27'
modified: '2026-07-27'
specificationVersion: '0.23'
apis:
- aid: pjm:pjm-data-miner-2-api
  name: PJM Data Miner 2 API
  description: PJM's public wholesale market and system data catalogue, exposed as a REST API behind Azure API Management.
    Feeds include day-ahead and real-time hourly and five-minute LMPs, ancillary service prices and market results, generation
    by fuel type, hourly metered/estimated/preliminary load, load forecasts, generation and transmission outages, FTR auction
    bids and zonal LMPs, pnode and aggregate definitions, and uplift and billing determinants. Each feed supports a /metadata
    call and a search call with rowCount/startRow paging, field selection, sorting and date-range filters, and JSON or CSV
    output. The data is designated public by PJM and the key is free, but anonymous calls are rejected — verified HTTP 401
    on GET https://api.pjm.com/api/v1/gen_by_fuel on 2026-07-27 — and redistribution requires at minimum a PJM Associate Membership.
  humanURL: https://www.pjm.com/markets-and-operations/etools/data-miner-2
  baseURL: https://api.pjm.com/api/v1
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - Market Data
  - Electricity
  - Energy Markets
  - Locational Marginal Pricing
  - Load
  - Outages
  properties:
  - type: Documentation
    url: https://www.pjm.com/markets-and-operations/etools/data-miner-2
  - type: APIPortal
    url: https://apiportal.pjm.com/
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx
  - type: SwaggerUI
    url: https://services.pjm.com/PJMDataminerApi/swagger
  - type: Console
    url: https://dataminer2.pjm.com/list
  - type: SignUp
    url: https://accountmanager.pjm.com/accountmanager/pages/public/new-user.jsf
  - type: APIReference
    url: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx
  - type: GettingStarted
    url: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-getting-started-guide.pdf
  - type: ChangeLog
    url: https://www.pjm.com/markets-and-operations/etools/data-miner-2/data-miner-2-release-notes.aspx
  - type: FAQ
    url: https://learn.pjm.com/three-priorities/keeping-the-lights-on/data-miner-faqs.aspx
  - type: RateLimits
    url: rate-limits/pjm-rate-limits.yml
  - type: Conventions
    url: conventions/pjm-conventions.yml
  - type: ErrorCatalog
    url: errors/pjm-error-catalog.yml
  - type: DataModel
    url: data-model/pjm-data-model.yml
  - type: Sandbox
    url: https://api-train.pjm.com/api/v1
  - type: AgentSkill
    url: skills/pjm-query-data-miner-feed.md
- aid: pjm:pjm-messages-public-api
  name: PJM Messages Public Web Service
  description: 'The only fully anonymous PJM REST API found on the public surface. It backs the PJM Upcoming Changes page
    and returns the current planned-outage, delayed-data and impact notices for the whole PJM eTools estate — affected applications
    by name and numeric id, the change window as epoch milliseconds, required actions, and an access-blocking flag. GET https://messages.pjm.com/messages/rest/public/messages
    returned HTTP 200 with no credential on 2026-07-27, serving application/xml;charset=UTF-8 by default and JSON under Accept:
    application/json. There are no documented query parameters, no paging and no filtering — it returns the current notice
    set as one small document. It is poll-only; PJM registers no webhooks, and the alternative subscription channel is email.'
  humanURL: https://www.pjm.com/markets-and-operations/etools/upcoming-changes
  baseURL: https://messages.pjm.com/messages/rest/public
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - Status
  - Notification
  - Planned Outages
  - Grid Operations
  - Open Access
  tags_raw:
  - Status
  - Notifications
  - Planned Outages
  - Grid Operations
  - Open Access
  properties:
  - type: Documentation
    url: https://www.pjm.com/markets-and-operations/etools/upcoming-changes
  - type: Guide
    url: https://www.pjm.com/-/media/etools/upcoming-changes-how-to-guide.pdf
  - type: JSONSchema
    url: json-schema/pjm-message.json
  - type: Examples
    url: examples/_index.yml
  - type: AgentSkill
    url: skills/pjm-watch-tool-change-notices.md
  - type: StatusPage
    url: https://www.pjm.com/markets-and-operations/etools/upcoming-changes
- aid: pjm:pjm-oasis-template-api
  name: PJM OASIS Template API
  description: PJM's Open Access Same-Time Information System (OASIS) node, the FERC Order 889 obligation implemented against
    the NAESB Wholesale Electric Quadrant business practice standards. PJM states support for NAESB WEQ-002 (Standards and
    Communication Protocol) and WEQ-003 (Data Dictionary) versions 2.0, 2.1, 2.2 and 3.3, accepting query/response and input/response
    templates over HTTP GET (Content-type text/plain) and POST (application/x-www-form-urlencoded) against the template base
    URL, plus three PJM custom templates (pjmannulment, pjmtransreq, pjmtsrcomment). The NAESB WEQ-002-4.5.2 public information
    page at https://pjmoasis.pjm.com/OASIS/PJM/INFO.HTM is served anonymously (verified HTTP 200 on 2026-07-27); template
    submission itself requires a PJM SSO session token or the PJM Command Line Interface tool.
  humanURL: https://www.pjm.com/markets-and-operations/etools/oasis.aspx
  baseURL: https://pjmoasis.pjm.com/OASIS/PJM/data/
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - OASIS
  - Transmission
  - NAESB
  - FERC Order 889
  - Available Transfer Capability
  properties:
  - type: Documentation
    url: https://www.pjm.com/markets-and-operations/etools/oasis.aspx
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/oasis/pjm-oasis-api-user-guide.pdf
  - type: PublicInformation
    url: https://pjmoasis.pjm.com/OASIS/PJM/INFO.HTM
  - type: Sandbox
    url: https://oasistrain.pjm.com/
  - type: CLI
    url: https://www.pjm.com/-/media/DotCom/etools/pjm-command-line-interface-java-11.zip
  - type: Standard
    url: https://www.naesb.org/weq/default.asp
  - type: Conformance
    url: conformance/pjm-conformance.yml
- aid: pjm:pjm-browserless-authentication-api
  name: PJM Browserless Authentication API
  description: The REST authentication front door for every browserless/API integration with PJM eTools. A client POSTs to
    the PJM single sign-on service with X-OpenAM-Username and X-OpenAM-Password headers and receives a JSON tokenId, which
    is then presented as a pjmauth cookie on subsequent tool API calls, and released via a logout call. PJM has additionally
    moved custom-code REST clients onto PKI, requiring a two-way TLS client certificate against the access/authenticate/pjmauthcert
    endpoint alongside credentials. The service is ForgeRock OpenAM — verified live with HTTP 405 on GET https://sso.pjm.com/access/authenticate/
    on 2026-07-27, confirming the documented POST-only endpoint.
  humanURL: https://www.pjm.com/markets-and-operations/etools/security.aspx
  baseURL: https://sso.pjm.com/access
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - Authentication
  - Single Sign-On
  - Security
  - PKI
  properties:
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/pjm-browserless-authentication-guide.pdf
  - type: Documentation
    url: https://www.pjm.com/markets-and-operations/etools/security.aspx
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/security/pki-authentication-guide.pdf
  - type: Sandbox
    url: https://ssotrain.pjm.com/
  - type: Authentication
    url: authentication/pjm-authentication.yml
  - type: AgentSkill
    url: skills/pjm-authenticate-browserless-etools.md
- aid: pjm:pjm-inschedule-api
  name: PJM InSchedule Browserless API
  description: The browserless REST interface to PJM InSchedule, the eTool market participants use to submit and retrieve
    bilateral internal energy transaction schedules and contracts. PJM's browserless authentication guide documents CSV file
    upload under /inschedule/rest/secure/upload/file/{filename} and CSV retrieval under /inschedule/rest/secure/download/csv/contracts
    with start and stop date parameters, both authenticated with a pjmauth session cookie. Anonymous access is refused — an
    unauthenticated GET of the documented contracts endpoint on 2026-07-27 returned the ForgeRock OpenAM sign-in page rather
    than data. This is a member/participant surface, not an open data API.
  humanURL: https://www.pjm.com/markets-and-operations/etools/inschedule.aspx
  baseURL: https://insched.pjm.com/inschedule/rest
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - Scheduling
  - Bilateral Transactions
  - Energy Markets
  - Members Only
  properties:
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/pjm-browserless-authentication-guide.pdf
  - type: Sandbox
    url: https://inschedtrain.pjm.com/
  - type: Documentation
    url: https://www.pjm.com/markets-and-operations/etools/inschedule.aspx
  - type: Authentication
    url: authentication/pjm-authentication.yml
- aid: pjm:pjm-edart-api
  name: PJM eDART Browserless API
  description: The browserless XML-over-HTTP interface to eDART, PJM's Dispatcher Applications and Reporting Tool, used by
    transmission owners and generation owners to file and query transmission and generator outage tickets, voltage schedules
    and other reliability data. PJM publishes the XML document definitions for the general endpoints openly at https://www.pjm.com/pjmfiles/pub/etools/edart/xmldocs/xmldoc.html
    (verified HTTP 200, ~482KB, on 2026-07-27), while the endpoints themselves sit behind PJM SSO and PKI at https://edartsso.pjm.com/edart/.
    Documentation is public; the data is participant-only.
  humanURL: https://www.pjm.com/markets-and-operations/etools/edart.aspx
  baseURL: https://edartsso.pjm.com/edart/
  image: https://www.pjm.com/assets/MVC/responsive/img/pjm-logo.png
  tags:
  - Outages
  - Reliability
  - Transmission
  - XML
  - Members Only
  properties:
  - type: Documentation
    url: https://www.pjm.com/pjmfiles/pub/etools/edart/xmldocs/xmldoc.html
  - type: Guide
    url: https://www.pjm.com/-/media/DotCom/etools/edart/dart-browserless-user-guide.pdf
  - type: Sandbox
    url: https://edartssotrain.pjm.com/edartsso
  - type: Vocabulary
    url: https://www.pjm.com/pjmfiles/pub/etools/edart/xmldocs/xmldoc.html
common:
- type: VulnerabilityDisclosure
  url: security/pjm-vulnerability-disclosure.yml
- type: DomainSecurity
  url: security/pjm-domain-security.yml
- type: Website
  url: https://www.pjm.com/
- type: APIPortal
  url: https://apiportal.pjm.com/
- type: Documentation
  url: https://www.pjm.com/markets-and-operations/etools
- type: SignUp
  url: https://accountmanager.pjm.com/accountmanager/pages/public/new-user.jsf
- type: Authentication
  url: https://www.pjm.com/-/media/DotCom/etools/pjm-browserless-authentication-guide.pdf
- type: Security
  url: https://www.pjm.com/markets-and-operations/etools/security.aspx
- type: Blog
  url: https://insidelines.pjm.com/
- type: Learning
  url: https://learn.pjm.com/
- type: Support
  url: https://pjm.my.site.com/publicknowledge/s/
- type: LinkedIn
  url: https://www.linkedin.com/company/pjm-interconnection
- type: Legal
  url: https://www.pjm.com/about-pjm/legal
- type: DeveloperPortal
  url: https://apiportal.pjm.com/
- type: APIReference
  url: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx
- type: GettingStarted
  url: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-getting-started-guide.pdf
- type: FAQ
  url: https://learn.pjm.com/three-priorities/keeping-the-lights-on/data-miner-faqs.aspx
- type: ChangeLog
  url: https://www.pjm.com/markets-and-operations/etools/data-miner-2/data-miner-2-release-notes.aspx
- type: ChangeLog
  name: PJM Data Miner 2 structured changelog
  url: changelog/pjm-changelog.yml
- type: StatusPage
  url: https://www.pjm.com/markets-and-operations/etools/upcoming-changes
- type: Deprecation
  name: Data Miner feed retirement notices
  url: https://www.pjm.com/markets-and-operations/etools/data-miner-2/data-miner-2-release-notes.aspx
- type: Roadmap
  name: PJM Tech Change Forum
  url: https://www.pjm.com/committees-and-groups/forums/tech-change-forum.aspx
- type: Lifecycle
  url: lifecycle/pjm-lifecycle.yml
- type: Authentication
  name: PJM authentication profile
  url: authentication/pjm-authentication.yml
- type: Conventions
  url: conventions/pjm-conventions.yml
- type: ErrorCatalog
  url: errors/pjm-error-catalog.yml
- type: RateLimits
  url: rate-limits/pjm-rate-limits.yml
- type: Sandbox
  url: sandbox/pjm-sandbox.yml
- type: CLI
  url: cli/pjm-cli.yml
- type: Packages
  url: packages/pjm-packages.yml
- type: Conformance
  url: conformance/pjm-conformance.yml
- type: DataModel
  url: data-model/pjm-data-model.yml
- type: Vocabulary
  url: vocabulary/pjm-vocabulary.yml
- type: Examples
  url: examples/_index.yml
- type: JSONSchema
  url: json-schema/pjm-message.json
- type: WellKnown
  url: well-known/pjm-well-known.yml
- type: SecurityTxt
  url: well-known/pjm-security.txt
- type: LLMsTxt
  url: llms/pjm-llms.txt
- type: AgentSkill
  url: skills/_index.yml
- type: Pricing
  name: PJM membership enrollment (fees for commercial data rights)
  url: https://www.pjm.com/about-pjm/member-services/membership-enrollment
- type: TermsOfService
  url: https://www.pjm.com/about-pjm/legal
- type: PrivacyPolicy
  url: https://www.pjm.com/-/media/DotCom/about-pjm/privacy-policy-and-notice.pdf
- type: Glossary
  url: https://www.pjm.com/glossary
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com