PJM Interconnection · Authentication Profile
Pjm Authentication
Authentication
PJM Interconnection secures its APIs with apiKey, custom-session-token, mutualTLS, and none across 5 declared security schemes, as derived from its OpenAPI definitions.
EnergyUnited StatesEnergy MarketsElectricityGridSystem OperatorWholesale ElectricityTransmissionMarket DataDemand Response
Methods: apiKey, custom-session-token, mutualTLS, none
Schemes: 5
OAuth flows:
API key in: header, query
Security Schemes
DataMinerSubscriptionKey apiKey
· in: header (Ocp-Apim-Subscription-Key)
DataMinerSubscriptionKeyQuery apiKey
· in: query (subscription-key)
PJMSingleSignOnToken custom-session-token
· in: cookie (pjmauth)
PJMClientCertificate mutualTLS
PublicAnonymous none
Source
Authentication Profile
generated: '2026-07-27'
method: searched
source: >-
PJM Data Miner API Guide (v15, 02/10/2026), PJM Browserless Authentication Guide,
PJM PKI-Based Authentication Guide, PJM OASIS API User Guide (Rev 04, 2023-01-27),
plus anonymous probes of api.pjm.com, sso.pjm.com, apiportal.pjm.com and
messages.pjm.com on 2026-07-27.
docs: https://www.pjm.com/markets-and-operations/etools/security.aspx
summary:
types: [apiKey, custom-session-token, mutualTLS, none]
api_key_in: [header, query]
oauth2_flows: []
openid_connect: false
note: >-
PJM publishes no OAuth 2.0 or OpenID Connect surface. GET
https://sso.pjm.com/.well-known/openid-configuration returned HTTP 404 and
https://www.pjm.com/.well-known/openid-configuration returned the pjm.com HTML
shell (soft 404). Authentication is split three ways: an Azure API Management
subscription key for Data Miner 2, a ForgeRock OpenAM session token (with an
optional/required PKI client certificate) for the eTools surfaces, and fully
anonymous access for the public Messages web service.
schemes:
- name: DataMinerSubscriptionKey
type: apiKey
in: header
parameter: Ocp-Apim-Subscription-Key
applies_to:
- PJM Data Miner 2 API (https://api.pjm.com/api/v1)
- PJM Data Miner 2 training API (https://api-train.pjm.com/api/v1)
platform: Azure API Management
cost: free
provisioning: >-
Requires a PJM Tools username provisioned for Data Miner. Member companies
request access via PJM Account Manager > Account Access > Request Access > Data
Miner API. Non-member companies email accountmanager@pjm.com with the statement
"I confirm that the PJM Data will be used for internal business purposes only",
their Account Manager user id and their subscribing email address. A Customer
Account Manager approves; the key is then read from View Profile > Your
Subscriptions.
constraint: >-
One subscription key is bound to one unique email address; unlike other PJM
tools, no other user accounts may be tied to that email address (Data Miner FAQ).
System accounts are allowed provided a valid email address is attached to the
user id and the company CAM provisions it for traceability.
source: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx
verified: 'GET https://api.pjm.com/api/v1/gen_by_fuel returned HTTP 401 anonymously on 2026-07-27'
- name: DataMinerSubscriptionKeyQuery
type: apiKey
in: query
parameter: subscription-key
applies_to:
- PJM Data Miner 2 API (https://api.pjm.com/api/v1)
note: >-
Same credential as the header form; the guide documents appending
&subscription-key=<yourkey> to a request URL for browser/Excel/data-connection
use.
source: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx
- name: PJMSingleSignOnToken
type: custom-session-token
in: cookie
parameter: pjmauth
training_parameter: pjmauthtrain
applies_to:
- PJM OASIS Template API
- PJM InSchedule Browserless API
- PJM eDART Browserless API
- other PJM eTools browserless interfaces
platform: ForgeRock OpenAM
flow: >-
POST https://sso.pjm.com/access/authenticate/ with the headers X-OpenAM-Username
and X-OpenAM-Password. The JSON response carries a tokenId, which is presented as
the pjmauth cookie on subsequent tool API calls and released with POST
https://sso.pjm.com/access/logout/.
token_endpoint: https://sso.pjm.com/access/authenticate/
revocation_endpoint: https://sso.pjm.com/access/logout/
source: https://www.pjm.com/-/media/DotCom/etools/pjm-browserless-authentication-guide.pdf
verified: 'GET https://sso.pjm.com/access/authenticate/ returned HTTP 405 Method Not Allowed on 2026-07-27, confirming the documented POST-only endpoint'
- name: PJMClientCertificate
type: mutualTLS
applies_to:
- Custom-code REST clients against PJM eTools
flow: >-
Two-way TLS with a PJM-issued client certificate against the
access/authenticate/pjmauthcert endpoint, presented alongside credentials to
obtain the SSO token.
source: https://www.pjm.com/-/media/DotCom/etools/security/pki-authentication-guide.pdf
- name: PublicAnonymous
type: none
applies_to:
- PJM Messages Public Web Service (https://messages.pjm.com/messages/rest/public)
- PJM OASIS public information page (https://pjmoasis.pjm.com/OASIS/PJM/INFO.HTM)
note: >-
The Messages public web service and the NAESB WEQ-002-4.5.2 mandated OASIS
Online Resources posting are served with no credential of any kind.
verified: 'GET https://messages.pjm.com/messages/rest/public/messages returned HTTP 200 anonymously on 2026-07-27'
transport:
tls_minimum: TLS 1.2
note: >-
"In general, Tls1.2 is required for all PJM tools, including Data Miner." PJM
retired TLS 1.0/1.1 from internet-facing applications in the April 2022 Data
Miner release, and its security appliance began enforcing strict HTTP protocol
rules on 2025-11-01 (an HTTP GET carrying a body is rejected).
source: https://www.pjm.com/-/media/DotCom/etools/data-miner-2/data-miner-2-api-guide.ashx