Pacific Gas and Electric website screenshot

Pacific Gas and Electric

Pacific Gas and Electric Company is the investor-owned electric and natural gas utility for northern and central California — incorporated in California in 1905, headquartered in Oakland, roughly 23,000 employees, a 70,000-square- mile service area, about 5.5 million electric accounts and 4.5 million gas accounts, and a subsidiary of PG&E Corporation. It sits in the wires, pipes and metering layer of the United States value chain: a vertically integrated regulated distribution utility that owns the meter and the customer relationship, does not run the wholesale market (CAISO does), and is regulated by the California Public Utilities Commission. Its API posture is the outlier of the American utility sector and deserves to be recorded precisely, because the United States has no federal energy consumer-data mandate at all. PG&E runs Share My Data, its production Green Button Connect My Data implementation, on a live MuleSoft API gateway at https://api.pge.com — a NAESB REQ.21 ESPI 1.1 surface with roughly two dozen documented resources under /GreenButtonConnect/espi/1_1/resource/, an OAuth 2.0 authorization server at /datacustodian/oauth/v2/, and a separate published test environment at /datacustodian/test/oauth/v2/. Unlike almost every other US utility, PG&E publishes the whole contract anonymously: a complete supported-API reference, an OAuth/ESPI authorization guide, a relational data model, supported data elements, function-block scope-string mappings, the ESPI and Share My Data XSD schemas, sample MeterReadings XML, Python and JavaScript SDKs with development guides, published rate limits (one request per second per vendor, 2,000 calls per hour and 20,000 calls per 24 hours per client ID) and a SoapUI walkthrough — all reachable without a login at pge.com. What is not open is the data itself. Share My Data is application-approval gated: a third party needs a US EIN, eligible standing with the CPUC, a CA-issued TLS 1.2 X.509 certificate (self-signed rejected), acceptance of the CPUC-filed Customer Data Access Tariff, and successful connectivity and OAuth testing before approval, after which every production call runs over mutual TLS with bearer tokens scoped to an individual customer's authorization. The mandate story is equally specific and must not be flattened into "voluntary Green Button": California compels third-party access through state law and CPUC tariff — Public Utilities Code section 8380 (SB 1476, 2010), the Customer Information Service Request for Share My Data tariff form (Cal. P.U.C. Sheet 55826-E, Sample Form 79-1186, Advice 6900-E, effective 1 April 2023), and Electric Rule 24 / Gas Rule 25 for demand response providers — but no federal obligation and no Ontario-style Green Button regulation applies. The consumer-versus-market split is stark: consumer data is a real, verified, standards-conformant API behind consent and approval, while PG&E publishes no open market or grid API whatsoever. Its aggregated ZIP-code electric and gas usage datasets, released quarterly under CPUC Decision 14-05-016 through the Energy Data Request Program, are CSV-in- ZIP downloads behind an organization/name/email form and a data-use agreement, not an anonymous feed; California wholesale market data belongs to CAISO.

Pacific Gas and Electric publishes 1 API on the APIs.io network: PG&E Share My Data (Green Button Connect My Data) ESPI API. Tagged areas include Energy, United States, Utilities, Electricity, and Gas.

The Pacific Gas and Electric catalog on APIs.io includes 1 event-driven AsyncAPI specification.

Pacific Gas and Electric’s developer surface includes authentication, documentation, engineering blog, API reference, getting-started guide, support, signup flow, and 30 more developer resources.

53.4/100 developing ▬ flat Agent 46/100 agent native Full breakdown ↓
scored 2026-08-20 · rubric v0.12.0
2 APIs
EnergyUnited StatesUtilitiesElectricityGasCaliforniaSmart MeteringGreen ButtonESPIEnergy DataGridDemand ResponseInvestor-Owned Utility

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-08-20 · rubric v0.12.0
Composite quality — 53.4/100 · developing
Contract Quality 4.2 / 21
Developer Ergonomics 12.4 / 17
Access Clarity 5.8 / 17
Operational Transparency 7.6 / 11
Contract Governance 3.1 / 10
Discoverability 6.5 / 9
Regulatory Posture 9.7 / 15
Agent readiness — 46/100 · agent native
Machine-Readable Contract 18 / 18
Agentic Access Contract 10 / 10
Documented Reversibility 6 / 6
MCP Server 0 / 12
Machine-Readable Auth 10 / 10
Idempotency 9 / 9
Stable Error Semantics 8 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 6 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
A2A Agent Card 0 / 8
Dry-Run / Simulate Mode 4 / 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/pge: 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 2

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

PG&E Share My Data (Green Button Connect My Data) ESPI API

PG&E's production Green Button Connect My Data implementation, branded Share My Data. A NAESB REQ.21 Energy Services Provider Interface (ESPI) 1.1 REST API returning Green Butto...

PG&E Share My Data OAuth 2.0 Authorization API

The OAuth 2.0 authorization server behind Share My Data, implemented to meet the NAESB ESPI authorization profile. Two token classes are issued separately: a client access token...

Open Collections 1

Open, tool-agnostic API collections (OpenAPI-derived and Bruno).

Rate Limits 1

Documented rate limits and quota policies.

Pge Rate Limits

3 limits

RATE LIMITS

Event Specifications 1

AsyncAPI definitions for this provider's event-driven and streaming APIs.

Security Posture 3

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

Pge Authentication

oauth2/mutualTLS/http · 5 schemes

SECURITY

Pge Domain Security

TLSv1.3 · HSTS · DMARC

SECURITY

Pge Vulnerability Disclosure

Hackerone · contact published

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Pge Scopes

21 scopes · authorizationCode/clientCredentials

21 scopes

SCOPES

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Pge Agentic Access

7 operations

7 operations · 0 acting

AGENTIC

Resources

Get Started 4

Portal, sign-up, and the first successful call

Documentation 4

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

Operate 3

Status, limits, changes, and where to get help

Commercial 2

Pricing, plans, and the legal terms of use

Company 4

The organization behind the API

Other 2

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: pge
url: https://raw.githubusercontent.com/api-evangelist/pge/refs/heads/main/apis.yml
name: Pacific Gas and Electric
kind: company
image: https://kinlane-images.s3.amazonaws.com/shared/apis-json/apis-json-logo.jpg
tags:
- Energy
- United States
- Utilities
- Electricity
- Gas
- California
- Smart Metering
- Green Button
- ESPI
- Energy Data
- Grid
- Demand Response
- Investor-Owned Utility
created: '2026-07-27'
modified: '2026-07-27'
specificationVersion: '0.23'
description: 'Pacific Gas and Electric Company is the investor-owned electric and natural gas utility for northern and central
  California — incorporated in California in 1905, headquartered in Oakland, roughly 23,000 employees, a 70,000-square- mile
  service area, about 5.5 million electric accounts and 4.5 million gas accounts, and a subsidiary of PG&E Corporation. It
  sits in the wires, pipes and metering layer of the United States value chain: a vertically integrated regulated distribution
  utility that owns the meter and the customer relationship, does not run the wholesale market (CAISO does), and is regulated
  by the California Public Utilities Commission. Its API posture is the outlier of the American utility sector and deserves
  to be recorded precisely, because the United States has no federal energy consumer-data mandate at all. PG&E runs Share
  My Data, its production Green Button Connect My Data implementation, on a live MuleSoft API gateway at https://api.pge.com
  — a NAESB REQ.21 ESPI 1.1 surface with roughly two dozen documented resources under /GreenButtonConnect/espi/1_1/resource/,
  an OAuth 2.0 authorization server at /datacustodian/oauth/v2/, and a separate published test environment at /datacustodian/test/oauth/v2/.
  Unlike almost every other US utility, PG&E publishes the whole contract anonymously: a complete supported-API reference,
  an OAuth/ESPI authorization guide, a relational data model, supported data elements, function-block scope-string mappings,
  the ESPI and Share My Data XSD schemas, sample MeterReadings XML, Python and JavaScript SDKs with development guides, published
  rate limits (one request per second per vendor, 2,000 calls per hour and 20,000 calls per 24 hours per client ID) and a
  SoapUI walkthrough — all reachable without a login at pge.com. What is not open is the data itself. Share My Data is application-approval
  gated: a third party needs a US EIN, eligible standing with the CPUC, a CA-issued TLS 1.2 X.509 certificate (self-signed
  rejected), acceptance of the CPUC-filed Customer Data Access Tariff, and successful connectivity and OAuth testing before
  approval, after which every production call runs over mutual TLS with bearer tokens scoped to an individual customer''s
  authorization. The mandate story is equally specific and must not be flattened into "voluntary Green Button": California
  compels third-party access through state law and CPUC tariff — Public Utilities Code section 8380 (SB 1476, 2010), the Customer
  Information Service Request for Share My Data tariff form (Cal. P.U.C. Sheet 55826-E, Sample Form 79-1186, Advice 6900-E,
  effective 1 April 2023), and Electric Rule 24 / Gas Rule 25 for demand response providers — but no federal obligation and
  no Ontario-style Green Button regulation applies. The consumer-versus-market split is stark: consumer data is a real, verified,
  standards-conformant API behind consent and approval, while PG&E publishes no open market or grid API whatsoever. Its aggregated
  ZIP-code electric and gas usage datasets, released quarterly under CPUC Decision 14-05-016 through the Energy Data Request
  Program, are CSV-in- ZIP downloads behind an organization/name/email form and a data-use agreement, not an anonymous feed;
  California wholesale market data belongs to CAISO.'
apis:
- aid: pge:pge-share-my-data-espi-api
  name: PG&E Share My Data (Green Button Connect My Data) ESPI API
  description: 'PG&E''s production Green Button Connect My Data implementation, branded Share My Data. A NAESB REQ.21 Energy
    Services Provider Interface (ESPI) 1.1 REST API returning Green Button Atom/XML, serving customer-authorized electric
    and gas interval usage, usage summaries, reading types, billing and account information, service tariff and rate-plan
    detail, and demand response program enrollment. PG&E''s own Supported-APIs reference enumerates the resource set: DownloadSampleData,
    ReadServiceStatus, ApplicationInformation, Authorization (feed, single, and DELETE revocation), LocalTimeParameters, ReadingType,
    Subscription UsagePoint / MeterReading / IntervalBlock / UsageSummary trees, and the asynchronous Batch family — Batch/Bulk/{BulkID},
    Batch/Subscription/{SubscriptionID}, Batch/BulkRetailCustomerInfo/{BulkID}, Batch/RetailCustomer/{RetailCustomerID}, Batch/BulkRetailDRPrgInfo/{BulkID}
    and Batch/RetailDRPrgInfo/{RetailCustomerID}. Asynchronous results are announced to a third party''s registered notification
    URI. Every production request runs over mutual (two-way) TLS 1.2 with the third party''s X.509 client certificate attached,
    plus a bearer token — client_access_token for third-party-level resources, per-customer access_token for subscription
    resources, registration_access_token for ApplicationInformation. Verified live anonymously on 2026-07-27: the ESPI resource
    paths answer HTTP 400 "Invalid Certificate" from a Mulesoft-API-Gateway while invented sibling paths answer HTTP 404 "No
    listener for endpoint", which distinguishes a real mTLS-protected listener from a catch-all. Access is application-approval
    gated; not self-serve.'
  humanURL: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html
  baseURL: https://api.pge.com/GreenButtonConnect/espi/1_1/resource
  tags:
  - Green Button
  - ESPI
  - Energy Data
  - Smart Metering
  - Electricity
  - Gas
  - Demand Response
  properties:
  - type: Documentation
    url: https://www.pge.com/en/save-energy-and-money/energy-usage-and-tips/understand-my-usage/share-my-data.html
  - type: APIReference
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-APIs.pdf
  - type: APIReference
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-APIs-Click-Thru-2.0.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-Data-Elements.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-Relational-Data-Model.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Process-Flow.pdf
  - type: XSD
    url: schemas/pge-share-my-data-atom.xsd
  - type: XSD
    url: schemas/pge-share-my-data-espiDerived-20180821.xsd
  - type: XSD
    url: schemas/pge-share-my-data-retailcustomer-20180802.xsd
  - type: XSD
    url: schemas/pge-share-my-data-click-thru-2.0-espiDerived-20180315.xsd
  - type: XSD
    url: schemas/pge-share-my-data-click-thru-2.0-retailcustomer-20180315.xsd
  - type: OpenAPI
    url: openapi/green-button-alliance-espi-openapi.json
  - type: Overlay
    url: overlays/pge-green-button-alliance-espi-overlay.yaml
  - type: Webhooks
    url: asyncapi/pge-share-my-data-notifications.yml
  - type: RateLimits
    url: rate-limits/pge-rate-limits.yml
  - type: ErrorCatalog
    url: errors/pge-problem-types.yml
  - type: Conventions
    url: conventions/pge-conventions.yml
  - type: DataModel
    url: data-model/pge-data-model.yml
  - type: Sandbox
    url: sandbox/pge-sandbox.yml
  - type: AgentSkill
    url: skills/_index.yml
  - type: Example
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/MeterReadings_Example.zip
  - type: SDK
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/pythonsdk.zip
  - type: SDK
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/javascriptsdk.zip
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/smd-python-development-guide.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/smd-javascript-development-guide.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/soap-ui-steps.pdf
  - type: TermsOfService
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/ShareMyData_Platform_TermsofUse.pdf
  - type: Registration
    url: https://sharemydata.pge.com/
  - type: Reference
    url: https://www.pge.com/tariffs/assets/pdf/tariffbook/ELEC_FORMS_79-1186.pdf
- aid: pge:pge-share-my-data-oauth-api
  name: PG&E Share My Data OAuth 2.0 Authorization API
  description: 'The OAuth 2.0 authorization server behind Share My Data, implemented to meet the NAESB ESPI authorization
    profile. Two token classes are issued separately: a client access token via the client_credentials grant for third-party-level
    resources, and a per-customer access/refresh token pair via the authorization_code grant after a PG&E customer authenticates
    on PG&E''s site and selects what to share. Authorized scope is returned as an ESPI function-block string (for example
    FB=1_3_8_13_14_18_19_31_32_35_37_38_39_40_4_5_10_15_16_46_47 with AdditionalScope, IntervalDuration, BlockDuration, HistoryLength
    and AccountCollection parameters), documented in PG&E''s supported function-block scope-string mapping. PG&E publishes
    both a production authorization server at /datacustodian/oauth/v2/ and a separate test authorization server at /datacustodian/test/oauth/v2/
    used during mandatory registration testing. Verified live anonymously on 2026-07-27: GET on the token endpoint returns
    HTTP 405 {"error":"invalid_request","error_description":"GET not permitted"}, and an unparameterised request returns HTTP
    400 {"error":"invalid_request","error_description":"Missing grant_type"} — real RFC 6749 error responses from a Mulesoft-API-Gateway.
    Except for the browser redirects in the authorization-code flow, every call must carry the third party''s client SSL certificate
    over mutual TLS. No /.well-known/openid-configuration is served (HTTP 404 on both www.pge.com and api.pge.com); this is
    OAuth 2.0, not OpenID Connect.'
  humanURL: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html
  baseURL: https://api.pge.com/datacustodian/oauth/v2
  tags:
  - Authentication
  - Authorization
  - Green Button
  - ESPI
  - Security
  tags_raw:
  - OAuth
  - Authorization
  - Green Button
  - ESPI
  - Security
  properties:
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/OAuth_Authorization_ESPI.pdf
  - type: Documentation
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-Function-Block-Scope-String-Mapping-Click-Thru-2.0.pdf
  - type: APIReference
    url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-APIs.pdf
  - type: Documentation
    url: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html
  - type: Registration
    url: https://sharemydata.pge.com/
  - type: Authentication
    url: authentication/pge-authentication.yml
  - type: OAuthScopes
    url: scopes/pge-scopes.yml
  - type: Sandbox
    url: sandbox/pge-sandbox.yml
  - type: Reference
    url: http://naesb.org/espi
common:
- type: AgenticAccess
  url: agentic-access/pge-agentic-access.yml
- type: DomainSecurity
  url: security/pge-domain-security.yml
- type: OAuthScopes
  url: scopes/pge-scopes.yml
- type: Authentication
  url: authentication/pge-authentication.yml
- type: Website
  url: https://www.pge.com/
- type: Documentation
  url: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html
- type: Registration
  url: https://sharemydata.pge.com/
- type: GitHubOrganization
  url: https://github.com/pgetech
- type: LinkedIn
  url: https://www.linkedin.com/company/pacificgasandelectric
- type: Blog
  url: https://www.pge.com/en/newsroom/currents.html
- type: VulnerabilityDisclosure
  url: https://www.pge.com/en/about/company-information/vulnerability-disclosure-policy.html
- type: VulnerabilityDisclosure
  url: security/pge-vulnerability-disclosure.yml
- type: Security
  url: https://www.pge.com/en/about/company-information/vulnerability-disclosure-policy.html
- type: PrivacyPolicy
  url: https://www.pge.com/en/privacy-center.html
- type: About
  url: https://www.pge.com/en/about/company-information/company-profile.html
- type: DeveloperPortal
  url: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html
- type: APIReference
  url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/Supported-APIs.pdf
- type: GettingStarted
  url: https://www.pge.com/en/save-energy-and-money/energy-saving-programs/smartmeter/third-party-companies.html#getstarted
- type: Support
  url: mailto:ShareMyData@pge.com
- type: SignUp
  url: https://sharemydata.pge.com/
- type: TermsOfService
  url: https://www.pge.com/assets/pge/docs/save-energy-and-money/energy-savings-programs/ShareMyData_Platform_TermsofUse.pdf
- type: Packages
  url: packages/pge-packages.yml
- type: SDKs
  url: packages/pge-packages.yml
- type: LLMsTxt
  url: llms/pge-llms.txt
- type: Overlay
  url: overlays/pge-green-button-alliance-espi-overlay.yaml
- type: Conformance
  url: conformance/pge-conformance.yml
- type: ErrorCatalog
  url: errors/pge-problem-types.yml
- type: Lifecycle
  url: lifecycle/pge-lifecycle.yml
- type: ChangeLog
  url: changelog/pge-changelog.yml
- type: Conventions
  url: conventions/pge-conventions.yml
- type: DataModel
  url: data-model/pge-data-model.yml
- type: RateLimits
  url: rate-limits/pge-rate-limits.yml
- type: Sandbox
  url: sandbox/pge-sandbox.yml
- type: Webhooks
  url: asyncapi/pge-share-my-data-notifications.yml
- type: AgentSkill
  url: skills/_index.yml
- type: Reference
  url: https://pge-energydatarequest.com/
- type: Reference
  url: https://www.greenbuttondata.org/
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com