# EDF Energy — API surface > EDF Energy Ltd is the British integrated energy business owned by Electricite de France: > ~5 million customer accounts, Britain's largest generator of zero-carbon electricity, and > the operator of the GB nuclear fleet. Its API is Kraken's — EDF licensed the platform from > Octopus Energy Group in 2023 and migrated 5.8 million accounts onto it in fifteen months — > branded and hosted for EDF GB at developer.edfgb-kraken.energy. Great Britain mandates no > consumer energy data portability (no Consumer Data Right, no Green Button), so every > capability below exists because a supplier chose to ship it. Retail tariff data is open and > anonymous; consumer usage and billing data is gated behind a token the account holder issues > or an OAuth application they authorise. This file is generated by API Evangelist from the artifacts in the api-evangelist/edf-energy repository. EDF's own llms.txt — a consumer-marketing index, not an API index — is preserved verbatim alongside this file as edf-energy-llms.txt. ## APIs - [EDF Kraken GraphQL API](https://developer.edfgb-kraken.energy/graphql/): 2,492 types, 246 queries, 417 mutations. Endpoint https://api.edfgb-kraken.energy/v1/graphql/. Anonymous introspection enabled. The widest surface: smart-meter telemetry, SmartFlex/EV device control, heat pumps, prepay ledgers, loyalty, complaints, property portfolios. - [EDF Kraken REST API](https://developer.edfgb-kraken.energy/rest/reference/): OpenAPI 3.0.3, 27 paths, 57 schemas. Base URL https://api.edfgb-kraken.energy/v1/. Products, tariffs, unit rates, standing charges, grid supply points, meter points, consumption, accounts, quotes, payment intents. - [EDF Kraken Customer Migration (Data Import) API](https://developer.edfgb-kraken.energy/rest/guides/data-import/): OpenAPI 3.0.3, 16 paths, 139 schemas. Partner-facing. How a customer book moves between suppliers onto Kraken. ## Specs - OpenAPI (REST): https://api.edfgb-kraken.energy/v1/schema?namespaces=default - OpenAPI (data import): https://api.edfgb-kraken.energy/data-import/schema/ - GraphQL SDL: harvested by anonymous introspection — graphql/edf-energy-schema.graphql - OpenID Connect discovery: https://auth.edfgb-kraken.energy/.well-known/openid-configuration - JWKS: https://auth.edfgb-kraken.energy/.well-known/jwks.json ## Docs - Developer portal: https://developer.edfgb-kraken.energy/ - REST API basics: https://developer.edfgb-kraken.energy/rest/guides/api-basics/ - GraphQL API basics: https://developer.edfgb-kraken.energy/graphql/guides/basics/ - GraphQL reference: https://developer.edfgb-kraken.energy/graphql/reference/ - Error codes reference (1,370 KT-CT-* codes): https://developer.edfgb-kraken.energy/graphql/reference/error-codes/ - GraphQL schema changelog: https://developer.edfgb-kraken.energy/graphql/changelog/ - API announcements: https://developer.edfgb-kraken.energy/announcements/ - OAuth server: https://auth.edfgb-kraken.energy/ - EDF's own announcement of the open tariff APIs: https://www.edfenergy.com/energywise/edfs-open-tariff-apis ## Auth - Platform tokens: `Authorization: Token `, a Kraken JWT, or HTTP Basic with the token as the username. Six named schemes across the two OpenAPI documents. - OAuth 2.0 / OIDC at https://auth.edfgb-kraken.energy/ — authorization code with PKCE (S256), client credentials, device code (RFC 8628), token exchange (RFC 8693). 111 scopes, including request:consumption-data, view:smartflex-data, update:smart-meter-data-preferences, full-customer-access. - Not self-service: request an OAuth application from EDF/Kraken with your client type, grant type, redirect URIs and required resources. ## Open without a credential - `GET https://api.edfgb-kraken.energy/v1/products/` — live EDF retail products. - `GET https://api.edfgb-kraken.energy/v1/products/{product_code}/` — one product and its tariffs. - `GET https://api.edfgb-kraken.energy/v1/industry/grid-supply-points/?postcode=` — GSP group. - Per-tariff unit rates and standing charges under `/v1/products/{product_code}/…`. - `POST https://api.edfgb-kraken.energy/v1/graphql/` with `energyProducts(postcode: …, brand: "EDF")`. - GraphiQL IDE at https://api.edfgb-kraken.energy/v1/graphql/ (request with Accept: text/html). - Full GraphQL introspection. ## Conventions - Datetimes are ISO 8601; include the timezone or Europe/London is assumed (GMT/BST drift). - GraphQL pagination is Relay cursor connections; `first` is mandatory and must be under 100. - GraphQL always returns HTTP 200; errors carry errorType / errorCode / errorDescription. - Rate limiting is a three-layer budget: complexity 200 per request; hourly points (50,000 account user / 100,000 organisation / 300,000 OAuth application); per-field static or dynamic limits; 10,000 nodes per request. Errors KT-CT-1188, KT-CT-1199, KT-CT-1189. Read your own budget with the `rateLimitInfo` query. - Idempotency exists only on GraphQL money and ledger mutations, via an `idempotencyKey` input field (errors KT-CT-3928, KT-CT-9221). No REST operation accepts an idempotency key. - Versioning is in the REST path (/v1/, /v2/). The GraphQL schema is unversioned; every `@deprecated` field carries the date it was marked and a scheduled removal date. ## Not available - No AsyncAPI, no public webhooks, no GraphQL Subscription type. An external-events namespace exists at /external-events/schema/ but returns HTTP 403. - No official MCP server. - No first-party SDKs or CLI on any package registry. - No security.txt, no published status page, no SLA, no trust centre or certification list. - No RFC 9457 problem+json and no RFC 8594 Sunset headers.