About Queries
Every GraphQL schema has a root type for both queries and mutations. The query type defines GraphQL operations that retrieve data from the server.
The example data in the variables and responses below are autogenerated values designed to resemble real inputs. They do not represent actual customer data, and in some cases may require additional validation.
API Site
account
Type: AccountType
URL: https://api.octopus.energy/v1/graphql/
Get details about an account.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query Account($accountNumber: String!) {
account(accountNumber: $accountNumber) {
accountType
activeHardshipAgreements {
...HardshipAgreementTypeFragment
}
activeReferralSchemes {
...ReferralSchemeTypesFragment
}
address {
...RichAddressTypeFragment
}
annualStatements {
...AnnualStatementConnectionTypeConnectionFragment
}
applications {
...AccountApplicationConnectionTypeConnectionFragment
}
assistanceAgreements {
...AssistanceAgreementTypeFragment
}
balance
bill {
...BillInterfaceFragment
}
billingAddress
billingAddressLine1
billingAddressLine2
billingAddressLine3
billingAddressLine4
billingAddressLine5
billingAddressPostcode
billingCountryCode
billingDeliveryPointIdentifier
billingEmail
billingName
billingOptions {
...BillingOptionsTypeFragment
}
billingPostcode
billingSubName
bills {
...BillConnectionTypeConnectionFragment
}
brand
business {
...BusinessTypeFragment
}
campaigns {
...AccountCampaignTypeFragment
}
canBeWithdrawn
canChangePayments
canInputMeterReadingsViaIvr
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
canRenewTariff
canRequestRefund
commsDeliveryPreference
complaints {
...ComplaintConnectionTypeConnectionFragment
}
consents {
...ConsentTypeFragment
}
contributionAgreements {
...ContributionAgreementTypeFragment
}
cotReadingWindowDays
createdAt
currentEstimatedSsd
debtCollectionProceedings {
...DebtCollectionProceedingTypeFragment
}
directDebitInstructions {
...DirectDebitInstructionConnectionTypeConnectionFragment
}
documentAccessibility
earliestPossibleSsd
electricityAgreements {
...ElectricityAgreementTypeFragment
}
eligibilityForWarmHomeDiscount {
...WarmHomeDiscountEligibilityFragment
}
events {
...AccountEventConnectionTypeConnectionFragment
}
fileAttachments {
...AccountFileAttachmentFragment
}
gasAgreements {
...GasAgreementTypeFragment
}
greenAccomplishments {
...GreenAccomplishmentsTypeFragment
}
hasActiveCollectionsProceedings
hasActiveDunningProcess
id
isInBlockingMigration
isInHardship
latestPossibleSsd
ledgers {
...LedgerTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
maximumRefund {
...MaximumRefundTypeFragment
}
metadata {
...MetadataFragment
}
notes {
...AccountNoteTypeFragment
}
number
operationsTeam {
...OperationsTeamTypeFragment
}
overdueBalance
paginatedFileAttachments {
...AccountFileAttachmentConnectionTypeConnectionFragment
}
paginatedPaymentForecast {
...PaymentForecastConnectionTypeConnectionFragment
}
paymentAdequacy {
...PaymentAdequacyTypeFragment
}
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
paymentPlans {
...PaymentPlanConnectionTypeConnectionFragment
}
paymentSchedules {
...PaymentScheduleConnectionTypeConnectionFragment
}
payments {
...AccountPaymentConnectionTypeConnectionFragment
}
portfolio {
...PortfolioTypeFragment
}
preferredLanguageForComms
projectedBalance
properties {
...PropertyTypeFragment
}
provisionalTransactions {
...ProvisionalTransactionConnectionTypeConnectionFragment
}
recommendedBalanceAdjustment
references {
...AccountReferenceTypeFragment
}
referrals {
...ReferralConnectionTypeConnectionFragment
}
referralsCreated
refundApproval {
...RefundApprovalTypeFragment
}
reminders {
...AccountReminderConnectionTypeConnectionFragment
}
repayments {
...AccountRepaymentConnectionTypeConnectionFragment
}
requestRefundEligibility {
...RequestRefundEligibilityTypeFragment
}
rewards {
...RewardTypeFragment
}
shouldReviewPayments
smets2Interest
smets2RefusalReason
splitBillingAddress
status
trackerTariffDailyPricing {
...TrackerTariffDailyPricingFragment
}
transactions {
...TransactionConnectionTypeConnectionFragment
}
urn
users {
...AccountUserTypeFragment
}
warmHomeDiscount {
...WarmHomeDiscountFragment
}
}
}
Variables
{
"accountNumber": "A-63FF20A4"
}
Response
{
"data": {
"account": {
"accountType": "BUSINESS",
"activeHardshipAgreements": [HardshipAgreementType],
"activeReferralSchemes": ReferralSchemeTypes,
"address": RichAddressType,
"annualStatements": AnnualStatementConnectionTypeConnection,
"applications": AccountApplicationConnectionTypeConnection,
"assistanceAgreements": [AssistanceAgreementType],
"balance": 76,
"bill": BillInterface,
"billingAddress": "beyond-something-six-require-decide",
"billingAddressLine1": "happy-thing-improve-wear-daughter",
"billingAddressLine2": "gas-somebody-half-reduce-next",
"billingAddressLine3": "heart-tend-particularly-surface-if",
"billingAddressLine4": "answer-report-us-go-suffer",
"billingAddressLine5": "forward-down-will-writer-international",
"billingAddressPostcode": "expert-guy-you-out-own",
"billingCountryCode": "population-spring-yeah-real-almost",
"billingDeliveryPointIdentifier": "87906509",
"billingEmail": "a-skin-than-old-bring",
"billingName": "daughter-from-edge-when-whose",
"billingOptions": BillingOptionsType,
"billingPostcode": "fire-away-young-federal-buy",
"billingSubName": "least-although-may-compare-eat",
"bills": BillConnectionTypeConnection,
"brand": "protect-road-force-return-fast",
"business": BusinessType,
"campaigns": [AccountCampaignType],
"canBeWithdrawn": true,
"canChangePayments": true,
"canInputMeterReadingsViaIvr": true,
"canModifyPayments": CanModifyPaymentsType,
"canRenewTariff": true,
"canRequestRefund": true,
"commsDeliveryPreference": "EMAIL",
"complaints": ComplaintConnectionTypeConnection,
"consents": ConsentType,
"contributionAgreements": [ContributionAgreementType],
"cotReadingWindowDays": 34,
"createdAt": "2006-03-18T14:16:13.787869+00:00",
"currentEstimatedSsd": "2025-04-03",
"debtCollectionProceedings": [DebtCollectionProceedingType],
"directDebitInstructions": DirectDebitInstructionConnectionTypeConnection,
"documentAccessibility": "LARGE_PRINT",
"earliestPossibleSsd": "2024-10-17",
"electricityAgreements": [ElectricityAgreementType],
"eligibilityForWarmHomeDiscount": WarmHomeDiscountEligibility,
"events": AccountEventConnectionTypeConnection,
"fileAttachments": [AccountFileAttachment],
"gasAgreements": [GasAgreementType],
"greenAccomplishments": GreenAccomplishmentsType,
"hasActiveCollectionsProceedings": true,
"hasActiveDunningProcess": true,
"id": "36592101",
"isInBlockingMigration": true,
"isInHardship": true,
"latestPossibleSsd": "2001-04-06",
"ledgers": [LedgerType],
"marketSupplyAgreements": AgreementConnection,
"maximumRefund": MaximumRefundType,
"metadata": [Metadata],
"notes": [AccountNoteType],
"number": "total-detail-child-ability-painting",
"operationsTeam": OperationsTeamType,
"overdueBalance": 59,
"paginatedFileAttachments": AccountFileAttachmentConnectionTypeConnection,
"paginatedPaymentForecast": PaymentForecastConnectionTypeConnection,
"paymentAdequacy": PaymentAdequacyType,
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"paymentPlans": PaymentPlanConnectionTypeConnection,
"paymentSchedules": PaymentScheduleConnectionTypeConnection,
"payments": AccountPaymentConnectionTypeConnection,
"portfolio": PortfolioType,
"preferredLanguageForComms": "under-partner-but-fill-involve",
"projectedBalance": 18,
"properties": [PropertyType],
"provisionalTransactions": ProvisionalTransactionConnectionTypeConnection,
"recommendedBalanceAdjustment": 35,
"references": [AccountReferenceType],
"referrals": ReferralConnectionTypeConnection,
"referralsCreated": 63,
"refundApproval": RefundApprovalType,
"reminders": AccountReminderConnectionTypeConnection,
"repayments": AccountRepaymentConnectionTypeConnection,
"requestRefundEligibility": RequestRefundEligibilityType,
"rewards": [RewardType],
"shouldReviewPayments": true,
"smets2Interest": "PRIORITY",
"smets2RefusalReason": "SMETS2_INTEREST_REASON_DO_NOT_OWN_HOME",
"splitBillingAddress": ["certain-recent-without-main-home"],
"status": "PENDING",
"trackerTariffDailyPricing": TrackerTariffDailyPricing,
"transactions": TransactionConnectionTypeConnection,
"urn": "not-arrive-popular-tonight-open",
"users": AccountUserType,
"warmHomeDiscount": WarmHomeDiscount
}
}
}
accountChargeReasons
Type: [ChargeReasonType]
URL: https://api.octopus.energy/v1/graphql/
Available reasons for use in account charge mutations.
Query
query AccountChargeReasons {
accountChargeReasons {
code
display
group
isDeprecated
isHidden
isTaxExempt
}
}
Response
{
"data": {
"accountChargeReasons": [
{
"code": "mention-seat-rise-top-floor",
"display": "recently-but-project-more-spend",
"group": "moment-experience-Mr-exist-feel",
"isDeprecated": true,
"isHidden": true,
"isTaxExempt": true
}
]
}
}
accountContract
Type: Contract
URL: https://api.octopus.energy/v1/graphql/
Get details about an account contract.
The possible errors that can be raised are:
- KT-CT-10003: Contract not found.
- KT-CT-10005: Missing required parameter: either identifier or accountNumber must be provided.
- KT-CT-10006: Account not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to find the contract for. |
|
The identifier of the contract. |
|
The version of the contract. |
Query
query AccountContract(
$accountNumber: String,
$identifier: String,
$version: Int
) {
accountContract(
accountNumber: $accountNumber,
identifier: $identifier,
version: $version
) {
cancelledAt
identifier
lifecycle {
...ContractVersionFragment
}
notes {
...ContractNoteTypeFragment
}
party {
... on AccountType {
...AccountTypeFragment
}
... on BusinessType {
...BusinessTypeFragment
}
}
signedAt
status
subject {
...AccountTypeFragment
}
terms {
...TermInterfaceFragment
}
title
validFrom
validTo
}
}
Variables
{
"accountNumber": "A-1F607CB3",
"identifier": "17634167",
"version": 46
}
Response
{
"data": {
"accountContract": {
"cancelledAt": "1970-05-31T20:07:23.524911+00:00",
"identifier": "79256524",
"lifecycle": ContractVersion,
"notes": [ContractNoteType],
"party": AccountType,
"signedAt": "1992-11-01T18:59:20.945052+00:00",
"status": "REVOKED",
"subject": [AccountType],
"terms": TermInterface,
"title": "general-ground-wonder-religious-civil",
"validFrom": "1971-08-27T01:27:32.598705+00:00",
"validTo": "1989-05-01T11:42:39.457534+00:00"
}
}
}
accountCreditReasons
Type: [CreditReasonType]
URL: https://api.octopus.energy/v1/graphql/
Available reasons for use in account credit mutations.
Query
query AccountCreditReasons {
accountCreditReasons {
code
display
group
isDeprecated
isHidden
isTaxExempt
}
}
Response
{
"data": {
"accountCreditReasons": [
{
"code": "prepare-push-result-than-can",
"display": "accept-yes-before-movie-go",
"group": "value-risk-it-ago-member",
"isDeprecated": true,
"isHidden": true,
"isTaxExempt": true
}
]
}
}
accountIoEligibility
Type: AccountIoEligibility
URL: https://api.octopus.energy/v1/graphql/
Determines whether an account is eligible to register devices with SmartFlex.
Arguments
| Name | Description |
|---|---|
|
Account number. |
|
|
Query
query AccountIoEligibility(
$accountNumber: String!,
$propertyId: Int
) {
accountIoEligibility(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
isEligibleForIo
}
}
Variables
{
"accountNumber": "A-F96F39AF",
"propertyId": 94259293
}
Response
{
"data": {
"accountIoEligibility": {
"isEligibleForIo": true
}
}
}
accountPaymentById
Type: OEGBAccountPaymentType
URL: https://api.octopus.energy/v1/graphql/
Query a payment for an account by id.
The possible errors that can be raised are:
- KT-CT-3924: Unauthorized.
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
|
The id of the payment. |
Query
query AccountPaymentById(
$accountNumber: String!,
$paymentId: ID!
) {
accountPaymentById(
accountNumber: $accountNumber,
paymentId: $paymentId
) {
amount
id
isAmendable
isCancelled
paymentDate
}
}
Variables
{
"accountNumber": "A-2234BB28",
"paymentId": "12070957"
}
Response
{
"data": {
"accountPaymentById": {
"amount": 64,
"id": "35123654",
"isAmendable": true,
"isCancelled": true,
"paymentDate": "2001-03-15"
}
}
}
accountReference
Type: [AccountReferenceType]
URL: https://api.octopus.energy/v1/graphql/
List of matching account references.
The possible errors that can be raised are:
- KT-CT-8310: Invalid data.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Filter account references by this value. |
Query
query AccountReference($value: String) {
accountReference(value: $value) {
account {
...AccountTypeFragment
}
createdAt
namespace
updatedAt
value
}
}
Variables
{
"value": "produce-morning-among-type-southern"
}
Response
{
"data": {
"accountReference": [
{
"account": AccountType,
"createdAt": "2013-02-11T15:27:22.465759+00:00",
"namespace": "play-day-light-guess-any",
"updatedAt": "1987-09-10T17:30:33.696759+00:00",
"value": "hair-commercial-still-policy-challenge"
}
]
}
}
accountStatusSearchByNumber
Type: AccountWithStatusInfoType
URL: https://api.octopus.energy/v1/graphql/
Get account status information given its number.
The possible errors that can be raised are:
- KT-CT-7523: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to search for. |
Query
query AccountStatusSearchByNumber($accountNumber: String!) {
accountStatusSearchByNumber(accountNumber: $accountNumber) {
activePaymentMethod
balance
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
number
properties {
...PropertyTypeFragment
}
status
}
}
Variables
{
"accountNumber": "A-57E5C806"
}
Response
{
"data": {
"accountStatusSearchByNumber": {
"activePaymentMethod": "long-expert-organization-ask-Republican",
"balance": 43,
"canModifyPayments": CanModifyPaymentsType,
"marketSupplyAgreements": AgreementConnection,
"number": "matter-too-own-international-become",
"properties": [PropertyType],
"status": "PENDING"
}
}
}
accountUser
Type: AccountUserType
URL: https://api.octopus.energy/v1/graphql/
Retrieve an account user.
The possible errors that can be raised are:
- KT-CT-5418: Account user not found.
- KT-CT-5415: Account user not found.
- KT-CT-5423: Account user not found.
- KT-CT-5424: Invalid data.
- KT-CT-5421: Account user not found.
- KT-CT-5425: Account user not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Email associated with an account user. |
|
External ID associated with an account user. |
|
Kraken number associated with an account user. |
Query
query AccountUser(
$email: String,
$externalId: ID,
$number: ID
) {
accountUser(
email: $email,
externalId: $externalId,
number: $number
) {
accountUserRoles {
...AccountUserRoleTypeFragment
}
accounts {
...AccountInterfaceFragment
}
address {
...RichAddressTypeFragment
}
alternativePhoneNumbers
businesses {
...BusinessConnectionTypeConnectionFragment
}
consents {
...ConsentTypeFragment
}
createdAt
dateOfBirth
details {
...AccountUserDetailTypeFragment
}
email
familyName
fullName
givenName
hasFamilyIssues
holdMusicChoices {
...TrackOptionTypeFragment
}
id
isActive
isDeceased
isInHardship
isOptedInToWof
label
landline
liveSecretKey
mobile
number
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
permissions {
...AccountUserPermissionFragment
}
portfolioIds
portfolioUserRoles {
...PortfolioUserRoleTypeFragment
}
portfolios {
...PortfolioConnectionTypeConnectionFragment
}
preferences {
...AccountUserCommsPreferencesFragment
}
preferredName
pronouns
specialCircumstances {
...SpecialCircumstancesTypeFragment
}
title
}
}
Variables
{
"email": "company-who-fight-institution-easy",
"externalId": "17248444",
"number": "31932176"
}
Response
{
"data": {
"accountUser": {
"accountUserRoles": [AccountUserRoleType],
"accounts": AccountInterface,
"address": RichAddressType,
"alternativePhoneNumbers": ["yes-seek-major-alone-model"],
"businesses": BusinessConnectionTypeConnection,
"consents": ConsentType,
"createdAt": "2016-09-10T11:24:59.881709+00:00",
"dateOfBirth": "1972-05-15",
"details": [AccountUserDetailType],
"email": "movement-sort-certain-miss-prepare",
"familyName": "Turner",
"fullName": "century-detail-ball-off-any",
"givenName": "Shannon",
"hasFamilyIssues": true,
"holdMusicChoices": [TrackOptionType],
"id": "61502563",
"isActive": true,
"isDeceased": true,
"isInHardship": true,
"isOptedInToWof": true,
"label": "official-design-parent-forward-almost",
"landline": "than-father-onto-nothing-federal",
"liveSecretKey": "and-Democrat-possible-must-game",
"mobile": "my-theory-ready-site-firm",
"number": "fall-red-article-new-audience",
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"permissions": [AccountUserPermission],
"portfolioIds": ["37432311"],
"portfolioUserRoles": [PortfolioUserRoleType],
"portfolios": PortfolioConnectionTypeConnection,
"preferences": AccountUserCommsPreferences,
"preferredName": "ever-beautiful-begin-two-entire",
"pronouns": "really-color-decide-crime-computer",
"specialCircumstances": SpecialCircumstancesType,
"title": "decision-sell-citizen-growth-build"
}
}
}
accountUserSearch
Type: AccountUserType!
URL: https://api.octopus.energy/v1/graphql/
Account User Search
This query returns an AccountUserType attempting to match against the request.
We attempt to find a user with a close or exact match to the fields provided
with a confidence score >= that of the threshold argument, if threshold
isn't provided we use a internal base threshold of 1.0
tweak this parameter if you are not getting results as you'd expect.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
Query
query AccountUserSearch($input: AccountUserSearchInputType) {
accountUserSearch(input: $input) {
accountUserRoles {
...AccountUserRoleTypeFragment
}
accounts {
...AccountInterfaceFragment
}
address {
...RichAddressTypeFragment
}
alternativePhoneNumbers
businesses {
...BusinessConnectionTypeConnectionFragment
}
consents {
...ConsentTypeFragment
}
createdAt
dateOfBirth
details {
...AccountUserDetailTypeFragment
}
email
familyName
fullName
givenName
hasFamilyIssues
holdMusicChoices {
...TrackOptionTypeFragment
}
id
isActive
isDeceased
isInHardship
isOptedInToWof
label
landline
liveSecretKey
mobile
number
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
permissions {
...AccountUserPermissionFragment
}
portfolioIds
portfolioUserRoles {
...PortfolioUserRoleTypeFragment
}
portfolios {
...PortfolioConnectionTypeConnectionFragment
}
preferences {
...AccountUserCommsPreferencesFragment
}
preferredName
pronouns
specialCircumstances {
...SpecialCircumstancesTypeFragment
}
title
}
}
Variables
{
"input": AccountUserSearchInputType
}
Response
{
"data": {
"accountUserSearch": {
"accountUserRoles": [AccountUserRoleType],
"accounts": AccountInterface,
"address": RichAddressType,
"alternativePhoneNumbers": ["seven-so-to-Mr-line"],
"businesses": BusinessConnectionTypeConnection,
"consents": ConsentType,
"createdAt": "2020-07-22T06:28:08.841814+00:00",
"dateOfBirth": "2005-08-09",
"details": [AccountUserDetailType],
"email": "family-through-like-argue-pick",
"familyName": "Phillips",
"fullName": "student-visit-bring-opportunity-indeed",
"givenName": "Tamara",
"hasFamilyIssues": true,
"holdMusicChoices": [TrackOptionType],
"id": "88806012",
"isActive": true,
"isDeceased": true,
"isInHardship": true,
"isOptedInToWof": true,
"label": "would-travel-official-own-mother",
"landline": "three-least-moment-your-sometimes",
"liveSecretKey": "environment-policy-opportunity-director-hope",
"mobile": "by-college-dog-floor-from",
"number": "skin-difficult-bar-enter-daughter",
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"permissions": [AccountUserPermission],
"portfolioIds": ["46232104"],
"portfolioUserRoles": [PortfolioUserRoleType],
"portfolios": PortfolioConnectionTypeConnection,
"preferences": AccountUserCommsPreferences,
"preferredName": "unit-operation-open-white-TV",
"pronouns": "question-gas-far-conference-education",
"specialCircumstances": SpecialCircumstancesType,
"title": "among-adult-history-generation-final"
}
}
}
accounts
Type: [AccountType]
URL: https://api.octopus.energy/v1/graphql/
Get details about multiple accounts.
The possible errors that can be raised are:
- KT-CT-4184: Exactly one of phoneNumber or portfolioNumber must be provided.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
A phone number to find accounts associated with. |
|
A portfolio number to find accounts associated with. |
Query
query Accounts(
$phoneNumber: String,
$portfolioNumber: String
) {
accounts(
phoneNumber: $phoneNumber,
portfolioNumber: $portfolioNumber
) {
accountType
activeHardshipAgreements {
...HardshipAgreementTypeFragment
}
activeReferralSchemes {
...ReferralSchemeTypesFragment
}
address {
...RichAddressTypeFragment
}
annualStatements {
...AnnualStatementConnectionTypeConnectionFragment
}
applications {
...AccountApplicationConnectionTypeConnectionFragment
}
assistanceAgreements {
...AssistanceAgreementTypeFragment
}
balance
bill {
...BillInterfaceFragment
}
billingAddress
billingAddressLine1
billingAddressLine2
billingAddressLine3
billingAddressLine4
billingAddressLine5
billingAddressPostcode
billingCountryCode
billingDeliveryPointIdentifier
billingEmail
billingName
billingOptions {
...BillingOptionsTypeFragment
}
billingPostcode
billingSubName
bills {
...BillConnectionTypeConnectionFragment
}
brand
business {
...BusinessTypeFragment
}
campaigns {
...AccountCampaignTypeFragment
}
canBeWithdrawn
canChangePayments
canInputMeterReadingsViaIvr
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
canRenewTariff
canRequestRefund
commsDeliveryPreference
complaints {
...ComplaintConnectionTypeConnectionFragment
}
consents {
...ConsentTypeFragment
}
contributionAgreements {
...ContributionAgreementTypeFragment
}
cotReadingWindowDays
createdAt
currentEstimatedSsd
debtCollectionProceedings {
...DebtCollectionProceedingTypeFragment
}
directDebitInstructions {
...DirectDebitInstructionConnectionTypeConnectionFragment
}
documentAccessibility
earliestPossibleSsd
electricityAgreements {
...ElectricityAgreementTypeFragment
}
eligibilityForWarmHomeDiscount {
...WarmHomeDiscountEligibilityFragment
}
events {
...AccountEventConnectionTypeConnectionFragment
}
fileAttachments {
...AccountFileAttachmentFragment
}
gasAgreements {
...GasAgreementTypeFragment
}
greenAccomplishments {
...GreenAccomplishmentsTypeFragment
}
hasActiveCollectionsProceedings
hasActiveDunningProcess
id
isInBlockingMigration
isInHardship
latestPossibleSsd
ledgers {
...LedgerTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
maximumRefund {
...MaximumRefundTypeFragment
}
metadata {
...MetadataFragment
}
notes {
...AccountNoteTypeFragment
}
number
operationsTeam {
...OperationsTeamTypeFragment
}
overdueBalance
paginatedFileAttachments {
...AccountFileAttachmentConnectionTypeConnectionFragment
}
paginatedPaymentForecast {
...PaymentForecastConnectionTypeConnectionFragment
}
paymentAdequacy {
...PaymentAdequacyTypeFragment
}
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
paymentPlans {
...PaymentPlanConnectionTypeConnectionFragment
}
paymentSchedules {
...PaymentScheduleConnectionTypeConnectionFragment
}
payments {
...AccountPaymentConnectionTypeConnectionFragment
}
portfolio {
...PortfolioTypeFragment
}
preferredLanguageForComms
projectedBalance
properties {
...PropertyTypeFragment
}
provisionalTransactions {
...ProvisionalTransactionConnectionTypeConnectionFragment
}
recommendedBalanceAdjustment
references {
...AccountReferenceTypeFragment
}
referrals {
...ReferralConnectionTypeConnectionFragment
}
referralsCreated
refundApproval {
...RefundApprovalTypeFragment
}
reminders {
...AccountReminderConnectionTypeConnectionFragment
}
repayments {
...AccountRepaymentConnectionTypeConnectionFragment
}
requestRefundEligibility {
...RequestRefundEligibilityTypeFragment
}
rewards {
...RewardTypeFragment
}
shouldReviewPayments
smets2Interest
smets2RefusalReason
splitBillingAddress
status
trackerTariffDailyPricing {
...TrackerTariffDailyPricingFragment
}
transactions {
...TransactionConnectionTypeConnectionFragment
}
urn
users {
...AccountUserTypeFragment
}
warmHomeDiscount {
...WarmHomeDiscountFragment
}
}
}
Variables
{
"phoneNumber": "wide-fine-spring-foreign-show",
"portfolioNumber": "P-D02DAC2B"
}
Response
{
"data": {
"accounts": [
{
"accountType": "BUSINESS",
"activeHardshipAgreements": [HardshipAgreementType],
"activeReferralSchemes": ReferralSchemeTypes,
"address": RichAddressType,
"annualStatements": AnnualStatementConnectionTypeConnection,
"applications": AccountApplicationConnectionTypeConnection,
"assistanceAgreements": [AssistanceAgreementType],
"balance": 8,
"bill": BillInterface,
"billingAddress": "theory-senior-wrong-American-clearly",
"billingAddressLine1": "read-herself-least-alone-what",
"billingAddressLine2": "prevent-day-individual-election-happy",
"billingAddressLine3": "president-help-charge-success-himself",
"billingAddressLine4": "future-happen-among-body-piece",
"billingAddressLine5": "dinner-pull-collection-paper-age",
"billingAddressPostcode": "happen-month-great-magazine-walk",
"billingCountryCode": "between-important-know-show-well",
"billingDeliveryPointIdentifier": "12993583",
"billingEmail": "whole-form-set-already-wonder",
"billingName": "produce-whatever-career-direction-check",
"billingOptions": BillingOptionsType,
"billingPostcode": "after-first-yard-drug-huge",
"billingSubName": "seek-page-force-receive-lot",
"bills": BillConnectionTypeConnection,
"brand": "score-include-attention-piece-artist",
"business": BusinessType,
"campaigns": [AccountCampaignType],
"canBeWithdrawn": true,
"canChangePayments": true,
"canInputMeterReadingsViaIvr": true,
"canModifyPayments": CanModifyPaymentsType,
"canRenewTariff": true,
"canRequestRefund": true,
"commsDeliveryPreference": "EMAIL",
"complaints": ComplaintConnectionTypeConnection,
"consents": ConsentType,
"contributionAgreements": [ContributionAgreementType],
"cotReadingWindowDays": 49,
"createdAt": "2014-03-16T11:24:05.517306+00:00",
"currentEstimatedSsd": "1991-07-24",
"debtCollectionProceedings": [DebtCollectionProceedingType],
"directDebitInstructions": DirectDebitInstructionConnectionTypeConnection,
"documentAccessibility": "LARGE_PRINT",
"earliestPossibleSsd": "2018-11-15",
"electricityAgreements": [ElectricityAgreementType],
"eligibilityForWarmHomeDiscount": WarmHomeDiscountEligibility,
"events": AccountEventConnectionTypeConnection,
"fileAttachments": [AccountFileAttachment],
"gasAgreements": [GasAgreementType],
"greenAccomplishments": GreenAccomplishmentsType,
"hasActiveCollectionsProceedings": true,
"hasActiveDunningProcess": true,
"id": "49709785",
"isInBlockingMigration": true,
"isInHardship": true,
"latestPossibleSsd": "2015-06-16",
"ledgers": [LedgerType],
"marketSupplyAgreements": AgreementConnection,
"maximumRefund": MaximumRefundType,
"metadata": [Metadata],
"notes": [AccountNoteType],
"number": "civil-knowledge-summer-strategy-soon",
"operationsTeam": OperationsTeamType,
"overdueBalance": 59,
"paginatedFileAttachments": AccountFileAttachmentConnectionTypeConnection,
"paginatedPaymentForecast": PaymentForecastConnectionTypeConnection,
"paymentAdequacy": PaymentAdequacyType,
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"paymentPlans": PaymentPlanConnectionTypeConnection,
"paymentSchedules": PaymentScheduleConnectionTypeConnection,
"payments": AccountPaymentConnectionTypeConnection,
"portfolio": PortfolioType,
"preferredLanguageForComms": "heart-seat-best-play-its",
"projectedBalance": 24,
"properties": [PropertyType],
"provisionalTransactions": ProvisionalTransactionConnectionTypeConnection,
"recommendedBalanceAdjustment": 81,
"references": [AccountReferenceType],
"referrals": ReferralConnectionTypeConnection,
"referralsCreated": 1,
"refundApproval": RefundApprovalType,
"reminders": AccountReminderConnectionTypeConnection,
"repayments": AccountRepaymentConnectionTypeConnection,
"requestRefundEligibility": RequestRefundEligibilityType,
"rewards": [RewardType],
"shouldReviewPayments": true,
"smets2Interest": "PRIORITY",
"smets2RefusalReason": "SMETS2_INTEREST_REASON_DO_NOT_OWN_HOME",
"splitBillingAddress": ["face-may-raise-event-kind"],
"status": "PENDING",
"trackerTariffDailyPricing": TrackerTariffDailyPricing,
"transactions": TransactionConnectionTypeConnection,
"urn": "nor-between-and-available-about",
"users": AccountUserType,
"warmHomeDiscount": WarmHomeDiscount
}
]
}
}
accountsSearch
Type: [AccountSearchItemType]
URL: https://api.octopus.energy/v1/graphql/
Search for account that are already in Kraken and match the search terms.
The possible errors that can be raised are:
- KT-CT-4183: One of more search terms failed validations.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The maximum number of results to return. |
|
Search operators. |
Query
query AccountsSearch(
$maxResults: Int,
$searchTerms: AccountSearchInputType
) {
accountsSearch(
maxResults: $maxResults,
searchTerms: $searchTerms
) {
account {
...AccountTypeFragment
}
score
}
}
Variables
{
"maxResults": 39,
"searchTerms": AccountSearchInputType
}
Response
{
"data": {
"accountsSearch": [
{
"account": AccountType,
"score": "1.0"
}
]
}
}
activeAffiliateReferralScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return the current active referral reward scheme of a given affiliate organisation, if any exists.
Arguments
| Name | Description |
|---|---|
|
The account type for which to get the referral scheme. |
|
The affiliate link subdomain. |
Query
query ActiveAffiliateReferralScheme(
$accountType: ReferralSchemeAccountTypeOptions,
$subdomain: String!
) {
activeAffiliateReferralScheme(
accountType: $accountType,
subdomain: $subdomain
) {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Variables
{
"accountType": "DOMESTIC",
"subdomain": "listen-several-station-every-report"
}
Response
{
"data": {
"activeAffiliateReferralScheme": {
"canBeReferred": true,
"code": "over-themselves-eat-trip-enter",
"combinedRewardAmount": 43,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 35,
"maxRecurrence": 63,
"referralDisplayUrl": "particularly-find-certainly-seem-price",
"referralUrl": "friend-happen-without-night-reveal",
"referredRewardAmount": 47,
"referrerGivenName": "Veronica",
"referrerRewardAmount": 100,
"schemeType": "sing-computer-movement-sometimes-throughout"
}
}
}
activeCampaignOffers
Type: [CampaignType]
URL: https://api.octopus.energy/v1/graphql/
All active campaigns with offers for the given account.
The possible errors that can be raised are:
- KT-CT-7423: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query ActiveCampaignOffers($accountNumber: String!) {
activeCampaignOffers(accountNumber: $accountNumber) {
expiryDate
name
slug
}
}
Variables
{
"accountNumber": "A-708EF72F"
}
Response
{
"data": {
"activeCampaignOffers": [
{
"expiryDate": "1987-10-23",
"name": "expect-shake-as-history-imagine",
"slug": "media-market-inside-old-this"
}
]
}
}
activeDomesticSignupRewardScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return the current active signup referral reward scheme with the given code, if any exists.
Query
query ActiveDomesticSignupRewardScheme {
activeDomesticSignupRewardScheme {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Response
{
"data": {
"activeDomesticSignupRewardScheme": {
"canBeReferred": true,
"code": "its-scene-study-win-wall",
"combinedRewardAmount": 92,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 12,
"maxRecurrence": 91,
"referralDisplayUrl": "seem-center-pass-management-others",
"referralUrl": "natural-major-he-institution-white",
"referredRewardAmount": 89,
"referrerGivenName": "Kimberly",
"referrerRewardAmount": 53,
"schemeType": "economy-girl-light-staff-central"
}
}
}
activeSalesChannels
Type: [SalesChannelType]
URL: https://api.octopus.energy/v1/graphql/
A list of active sales channels.
The possible errors that can be raised are:
- KT-CT-12702: Invalid datetime range.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The datetime from which to filter active sales channels. |
|
The datetime up to which to filter active sales channels. |
Query
query ActiveSalesChannels(
$activeFrom: DateTime,
$activeTo: DateTime
) {
activeSalesChannels(
activeFrom: $activeFrom,
activeTo: $activeTo
) {
code
description
hierarchicalName
name
}
}
Variables
{
"activeFrom": "2007-03-05T10:07:35.633351+00:00",
"activeTo": "2017-09-25T09:50:49.390386+00:00"
}
Response
{
"data": {
"activeSalesChannels": [
{
"code": "politics-charge-significant-sister-deal",
"description": "why-store-evidence-program-sign",
"hierarchicalName": "morning-whom-five-tax-his",
"name": "senior-positive-star-possible-threat"
}
]
}
}
addressMeterpoints
Type: AddressMeterPointsType
URL: https://api.octopus.energy/v1/graphql/
Search for all energised meterpoint's belonging to the given UPRN using ECOES & Xoserve APIs.
The possible errors that can be raised are:
- KT-GB-6620: Invalid data.
- KT-GB-6631: Invalid data.
- KT-GB-6630: We can't communicate with our address database right now to look up your address. Please try again.
- KT-GB-6632: UPRN not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The postcode of the property to search for meterpoints. |
|
The UPRN of the property to search for meterpoints. |
Query
query AddressMeterpoints(
$postcode: String!,
$uprn: String!
) {
addressMeterpoints(
postcode: $postcode,
uprn: $uprn
) {
electricityMeterPoints {
...ElectricMeterTechnicalDetailsFragment
}
electricityNetworkRates {
...ElectricityNetworkRatesFragment
}
gasMeterPoints {
...GasMeterTechnicalDetailsFragment
}
}
}
Variables
{
"postcode": "him-finish-change-year-letter",
"uprn": "third-exist-the-approach-common"
}
Response
{
"data": {
"addressMeterpoints": {
"electricityMeterPoints": [ElectricMeterTechnicalDetails],
"electricityNetworkRates": [ElectricityNetworkRates],
"gasMeterPoints": [GasMeterTechnicalDetails]
}
}
}
addressUprns
Type: AddressUPRNTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Search for addresses belonging to the given postcode using ECOES & Xoserve APIs, with the results grouped by UPRN.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
If it should only return addresses from the ECOES EES data source. |
|
|
|
|
|
The postcode to search for. |
Query
query AddressUprns(
$after: String,
$before: String,
$electricityOnly: Boolean,
$first: Int,
$last: Int,
$postcode: String!
) {
addressUprns(
after: $after,
before: $before,
electricityOnly: $electricityOnly,
first: $first,
last: $last,
postcode: $postcode
) {
edgeCount
edges {
...AddressUPRNTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"electricityOnly": true,
"first": 10,
"last": 10,
"postcode": "rich-read-material-factor-beat"
}
Response
{
"data": {
"addressUprns": {
"edgeCount": 93,
"edges": AddressUPRNTypeEdge,
"pageInfo": PageInfo,
"totalCount": 9
}
}
}
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query
query Addresses(
$after: String,
$before: String,
$dataSource: DataSource,
$first: Int,
$last: Int,
$postcode: String!,
$searchDomesticOnly: Boolean,
$useDes: Boolean
) {
addresses(
after: $after,
before: $before,
dataSource: $dataSource,
first: $first,
last: $last,
postcode: $postcode,
searchDomesticOnly: $searchDomesticOnly,
useDes: $useDes
) {
edgeCount
edges {
...AddressConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"dataSource": "CACHE",
"first": 10,
"last": 10,
"postcode": "present-least-become-my-sign",
"searchDomesticOnly": true,
"useDes": true
}
Response
{
"data": {
"addresses": {
"edgeCount": 87,
"edges": AddressConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 41
}
}
}
affiliateLink
Type: AffiliateLinkType!
URL: https://api.octopus.energy/v1/graphql/
Link object for an affiliate organization.
The possible errors that can be raised are:
- KT-CT-7713: Invalid data.
- KT-CT-7718: Affiliate link is expired.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The affiliate link subdomain. |
Query
query AffiliateLink($subdomain: String!) {
affiliateLink(subdomain: $subdomain) {
contactEmail
contactName
id
isBusiness
landingUrl
organisation {
...AffiliateOrganisationTypeFragment
}
subdomain
trainingStatus
}
}
Variables
{
"subdomain": "summer-hotel-across-strategy-crime"
}
Response
{
"data": {
"affiliateLink": {
"contactEmail": "religious-kid-parent-degree-difficult",
"contactName": "civil-use-our-two-write",
"id": "58015991",
"isBusiness": true,
"landingUrl": "easy-free-behavior-federal-finish",
"organisation": AffiliateOrganisationType,
"subdomain": "couple-instead-several-build-job",
"trainingStatus": "NOT_APPLICABLE"
}
}
}
affiliateLinks
Type: [AffiliateLinkType!]!
URL: https://api.octopus.energy/v1/graphql/
Links (urls) for the affiliate organizations.
Arguments
| Name | Description |
|---|---|
|
Email address of the affiliate agent. |
Query
query AffiliateLinks($agentContactEmail: String!) {
affiliateLinks(agentContactEmail: $agentContactEmail) {
contactEmail
contactName
id
isBusiness
landingUrl
organisation {
...AffiliateOrganisationTypeFragment
}
subdomain
trainingStatus
}
}
Variables
{
"agentContactEmail": "approach-third-place-of-growth"
}
Response
{
"data": {
"affiliateLinks": [
{
"contactEmail": "wait-raise-condition-natural-vote",
"contactName": "quality-set-scene-raise-sea",
"id": "60221138",
"isBusiness": true,
"landingUrl": "I-rather-fish-table-your",
"organisation": AffiliateOrganisationType,
"subdomain": "arrive-television-stay-address-away",
"trainingStatus": "NOT_APPLICABLE"
}
]
}
}
affiliateOrganisation
Type: AffiliateOrganisationType
URL: https://api.octopus.energy/v1/graphql/
Return the details of a given affiliate organization, if any exists.
The possible errors that can be raised are:
- KT-CT-7701: The affiliate organisation was not found.
- KT-CT-7702: Either id or number must be provided.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The affiliate organisation ID. |
|
The affiliate organisation number. |
Query
query AffiliateOrganisation(
$id: Int,
$number: String
) {
affiliateOrganisation(
id: $id,
number: $number
) {
allowAlternativePaymentMethods
canRegisterBusinessMeterPoints
canRegisterCustomersWithoutEmailAddress
canRegisterPortfolioAccounts
canRenewTariffs
canUseIvrSupportApi
contactEmail
defaultAccountType
id
isFieldSalesOnlyProduct
name
number
salesChannelCode
skipMeterPointAddressValidation
}
}
Variables
{
"id": 53763774,
"number": "your-better-whether-tend-decade"
}
Response
{
"data": {
"affiliateOrganisation": {
"allowAlternativePaymentMethods": true,
"canRegisterBusinessMeterPoints": true,
"canRegisterCustomersWithoutEmailAddress": true,
"canRegisterPortfolioAccounts": true,
"canRenewTariffs": true,
"canUseIvrSupportApi": true,
"contactEmail": "perhaps-stay-forget-trade-student",
"defaultAccountType": "BUSINESS",
"id": "86594541",
"isFieldSalesOnlyProduct": true,
"name": "wish-which-project-though-music",
"number": "hand-sound-page-computer-any",
"salesChannelCode": "perhaps-next-international-peace-media",
"skipMeterPointAddressValidation": true
}
}
}
agentCallCenterStatus
Type: AgentCallCenterStatusType!
URL: https://api.octopus.energy/v1/graphql/
Get the call center status for a given agent.
The possible errors that can be raised are:
- KT-CT-7813: Support user not found with that username.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The support user name. |
Query
query AgentCallCenterStatus($supportUserName: String!) {
agentCallCenterStatus(supportUserName: $supportUserName) {
id
mostRecentCallId
status
updatedAt
}
}
Variables
{
"supportUserName": "rock-remain-can-long-international"
}
Response
{
"data": {
"agentCallCenterStatus": {
"id": "13746455",
"mostRecentCallId": 30211820,
"status": "yard-likely-raise-always-edge",
"updatedAt": "1971-08-04T07:22:59.150993+00:00"
}
}
}
agreement
Type: CommonAgreementType
URL: https://api.octopus.energy/v1/graphql/
Get an agreement by its ID.
The possible errors that can be raised are:
- KT-CT-1501: Agreement not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Agreement identifier. |
Query
query Agreement($id: ID!) {
agreement(id: $id) {
account {
...AccountTypeFragment
}
agreedAt
agreedFrom
agreedTo
characteristicValues {
...CharacteristicValueInterfaceFragment
}
id
isActive
isRevoked
params
product {
...SupplyProductTypeFragment
}
rescissionDeadlineAt
supplyPoint {
...SupplyPointTypeFragment
}
terminatedAt
validFrom
validTo
}
}
Variables
{
"id": "58844815"
}
Response
{
"data": {
"agreement": {
"account": AccountType,
"agreedAt": "2025-11-25T09:18:45.628998+00:00",
"agreedFrom": "2016-10-29T10:13:54.131249+00:00",
"agreedTo": "1983-03-24T21:21:54.909142+00:00",
"characteristicValues": CharacteristicValueInterface,
"id": "57136915",
"isActive": true,
"isRevoked": true,
"params": {"key": "value"},
"product": SupplyProductType,
"rescissionDeadlineAt": "1986-09-23T12:38:22.748297+00:00",
"supplyPoint": SupplyPointType,
"terminatedAt": "2007-07-15T15:53:22.468839+00:00",
"validFrom": "1973-11-29T05:59:18.176841+00:00",
"validTo": "1989-07-23T00:55:21.354594+00:00"
}
}
}
agreementRollover
Type: AgreementRolloverType
URL: https://api.octopus.energy/v1/graphql/
Get an agreement rollover by its number.
The possible errors that can be raised are:
- KT-CT-13705: Agreement rollover not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Number of the agreement rollover. |
Query
query AgreementRollover($number: String!) {
agreementRollover(number: $number) {
actualSendDate
agreement {
...CommonAgreementTypeFragment
}
createdAt
expectedSendDate
failureReason
id
number
params
quoteRequests {
...MarketSupplyQuoteRequestTypeFragment
}
rolledOnTo {
...CommonAgreementTypeFragment
}
rolloverType
status
suppressComms
tags
updatedAt
}
}
Variables
{
"number": "play-always-admit-force-black"
}
Response
{
"data": {
"agreementRollover": {
"actualSendDate": "2002-12-08",
"agreement": CommonAgreementType,
"createdAt": "1970-02-18T11:55:48.605306+00:00",
"expectedSendDate": "2001-06-17",
"failureReason": "agree-now-station-expect-stage",
"id": "49016580",
"number": "answer-win-region-statement-easy",
"params": {"key": "value"},
"quoteRequests": MarketSupplyQuoteRequestType,
"rolledOnTo": CommonAgreementType,
"rolloverType": "DEFAULT",
"status": "PENDING",
"suppressComms": true,
"tags": ["with-possible-bar-respond-reveal"],
"updatedAt": "2017-08-28T04:24:55.775676+00:00"
}
}
}
agreementsForRollover
Type: [CommonAgreementType]
URL: https://api.octopus.energy/v1/graphql/
Get agreements eligible for the rollover process.
Arguments
| Name | Description |
|---|---|
|
Days before the agreement expiration. |
|
Window size in days. |
Query
query AgreementsForRollover(
$daysBeforeExpiration: Int!,
$windowSize: Int!
) {
agreementsForRollover(
daysBeforeExpiration: $daysBeforeExpiration,
windowSize: $windowSize
) {
account {
...AccountTypeFragment
}
agreedAt
agreedFrom
agreedTo
characteristicValues {
...CharacteristicValueInterfaceFragment
}
id
isActive
isRevoked
params
product {
...SupplyProductTypeFragment
}
rescissionDeadlineAt
supplyPoint {
...SupplyPointTypeFragment
}
terminatedAt
validFrom
validTo
}
}
Variables
{
"daysBeforeExpiration": 30,
"windowSize": 97
}
Response
{
"data": {
"agreementsForRollover": [
{
"account": AccountType,
"agreedAt": "1977-04-16T08:42:43.955075+00:00",
"agreedFrom": "1999-03-11T12:33:02.916967+00:00",
"agreedTo": "1994-10-29T14:29:26.942975+00:00",
"characteristicValues": CharacteristicValueInterface,
"id": "32362015",
"isActive": true,
"isRevoked": true,
"params": {"key": "value"},
"product": SupplyProductType,
"rescissionDeadlineAt": "2018-11-10T12:36:13.739398+00:00",
"supplyPoint": SupplyPointType,
"terminatedAt": "2003-12-01T21:32:13.822969+00:00",
"validFrom": "1992-06-25T00:14:26.755018+00:00",
"validTo": "2006-06-26T08:27:45.806004+00:00"
}
]
}
}
allowedSupplyStartDates
Type: [Date]
URL: https://api.octopus.energy/v1/graphql/
A list of dates on which quoted products can start supply.
Arguments
| Name | Description |
|---|---|
|
Whether the quote is for a domestic or business account. Defaults to domestic. |
Query
query AllowedSupplyStartDates($isDomestic: Boolean) {
allowedSupplyStartDates(isDomestic: $isDomestic)
}
Variables
{
"isDomestic": true
}
Response
{
"data": {
"allowedSupplyStartDates": ["2019-10-13"]
}
}
annualElectricityConsumption
Type: ElectricityConsumptionType!
URL: https://api.octopus.energy/v1/graphql/
The annual electricity consumption data for an MPAN.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meterpoint to return. |
Query
query AnnualElectricityConsumption($mpan: String!) {
annualElectricityConsumption(mpan: $mpan) {
eac
eacEffectiveFromDate
hasErroneousTransfer
supplierEffectiveFromDate
supplierName
}
}
Variables
{
"mpan": "draw-deep-social-participant-cause"
}
Response
{
"data": {
"annualElectricityConsumption": {
"eac": 962.53,
"eacEffectiveFromDate": "1986-10-01",
"hasErroneousTransfer": true,
"supplierEffectiveFromDate": "2003-04-22",
"supplierName": "day-feel-environmental-tree-themselves"
}
}
}
annualGasConsumption
Type: GasConsumptionType!
URL: https://api.octopus.energy/v1/graphql/
The annual gas consumption data for an MPRN.
Arguments
| Name | Description |
|---|---|
|
The MPRN of the meterpoint to return. |
Query
query AnnualGasConsumption($mprn: String!) {
annualGasConsumption(mprn: $mprn) {
aq
aqEffectiveFromDate
supplierEffectiveFromDate
supplierName
}
}
Variables
{
"mprn": "create-believe-walk-especially-seek"
}
Response
{
"data": {
"annualGasConsumption": {
"aq": 27,
"aqEffectiveFromDate": "1994-01-27",
"supplierEffectiveFromDate": "1976-08-02",
"supplierName": "another-by-try-then-friend"
}
}
}
apiBrownouts
Type: APIBrownoutConnection
URL: https://api.octopus.energy/v1/graphql/
Get brownouts by status.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Statuses to filter for. Otherwise return active and upcoming brownouts. |
|
Query
query ApiBrownouts(
$after: String,
$before: String,
$first: Int,
$input: APIBrownoutInput,
$last: Int
) {
apiBrownouts(
after: $after,
before: $before,
first: $first,
input: $input,
last: $last
) {
edgeCount
edges {
...APIBrownoutEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"input": APIBrownoutInput,
"last": 10
}
Response
{
"data": {
"apiBrownouts": {
"edgeCount": 57,
"edges": APIBrownoutEdge,
"pageInfo": PageInfo,
"totalCount": 90
}
}
}
apiExceptions
Type: APIExceptionConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get a connection containing API Exceptions.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Fields to filter for. Otherwise don't filter at all. |
|
Query
query ApiExceptions(
$after: String,
$before: String,
$first: Int,
$input: APIExceptionQueryInput,
$last: Int
) {
apiExceptions(
after: $after,
before: $before,
first: $first,
input: $input,
last: $last
) {
edgeCount
edges {
...APIExceptionConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"input": APIExceptionQueryInput,
"last": 10
}
Response
{
"data": {
"apiExceptions": {
"edgeCount": 77,
"edges": APIExceptionConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 50
}
}
}
appSessions
Type: AppSessionConnectionTypeConnection!
URL: https://api.octopus.energy/v1/graphql/
App sessions recorded at the specified postcode or for the specified affiliate link subdomain.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
The postcode of the address at which the app session was recorded. |
|
The affiliate link subdomain to filter app sessions by. |
Query
query AppSessions(
$after: String,
$before: String,
$first: Int,
$last: Int,
$postcode: String,
$subdomain: String
) {
appSessions(
after: $after,
before: $before,
first: $first,
last: $last,
postcode: $postcode,
subdomain: $subdomain
) {
edgeCount
edges {
...AppSessionConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"postcode": "four-difficult-force-the-trade",
"subdomain": "here-yes-last-father-TV"
}
Response
{
"data": {
"appSessions": {
"edgeCount": 85,
"edges": AppSessionConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 16
}
}
}
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Query
query ApplicableRates(
$accountNumber: String!,
$after: String,
$before: String,
$endAt: DateTime!,
$first: Int,
$last: Int,
$mpxn: String!,
$startAt: DateTime!
) {
applicableRates(
accountNumber: $accountNumber,
after: $after,
before: $before,
endAt: $endAt,
first: $first,
last: $last,
mpxn: $mpxn,
startAt: $startAt
) {
edgeCount
edges {
...ApplicableRateConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-2879A29E",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"endAt": "1985-02-20T04:21:33.628353+00:00",
"first": 10,
"last": 10,
"mpxn": "much-factor-woman-one-source",
"startAt": "2018-04-21T09:00:51.384349+00:00"
}
Response
{
"data": {
"applicableRates": {
"edgeCount": 95,
"edges": ApplicableRateConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 65
}
}
}
authorizedApplications
Type: [AuthorizedApplication]
URL: https://api.octopus.energy/v1/graphql/
Get all the confidential-client applications the current user has authorized.
Query
query AuthorizedApplications {
authorizedApplications {
clientId
name
}
}
Response
{
"data": {
"authorizedApplications": [
{
"clientId": "96073484",
"name": "technology-agree-right-along-audience"
}
]
}
}
autoTopupConfigs
Type: AutoTopupConfigConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get the auto top-up configs for a device. Ordered by effective from date, latest first.
Arguments
| Name | Description |
|---|---|
|
Target account number, e.g. 'A-A1B2C3D4'. |
|
|
|
|
|
Target device ID, e.g. 'A1-BC-D2-00-01-23-EF-4G'. |
|
The datetime from which the auto top-up is effective, e.g. '2024-01-01T00:00:00+00:00'. |
|
|
|
Query
query AutoTopupConfigs(
$accountNumber: String!,
$after: String,
$before: String,
$deviceId: String!,
$effectiveFrom: DateTime,
$first: Int,
$last: Int
) {
autoTopupConfigs(
accountNumber: $accountNumber,
after: $after,
before: $before,
deviceId: $deviceId,
effectiveFrom: $effectiveFrom,
first: $first,
last: $last
) {
edges {
...AutoTopupConfigConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"accountNumber": "A-25D7A9AD",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"deviceId": "71997023",
"effectiveFrom": "2000-01-08T05:18:21.931525+00:00",
"first": 10,
"last": 10
}
Response
{
"data": {
"autoTopupConfigs": {
"edges": AutoTopupConfigConnectionTypeEdge,
"pageInfo": PageInfo
}
}
}
autoTopupTriggers
Type: AutoTopupTriggerConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get auto top-up trigger events for an auto topup config. Ordered by triggered_at datetime, latest first.
Arguments
| Name | Description |
|---|---|
|
|
|
Target auto top-up config ID, e.g. '123'. |
|
|
|
Filter by failure reason of the auto top-up trigger event. |
|
|
|
|
|
Filter by source of the auto top-up trigger event. |
|
Filter by status of the auto top-up trigger event. |
|
Filter by datetime (inclusive) from which trigger events have occurred, e.g. '2024-01-01T00:00:00+00:00'. |
Query
query AutoTopupTriggers(
$after: String,
$autoTopupConfigId: ID!,
$before: String,
$failureReason: SmartDeviceAutoTopupTriggerFailureReasons,
$first: Int,
$last: Int,
$source: SmartDeviceAutoTopupTriggerSources,
$status: SmartDeviceAutoTopupTriggerStatus,
$triggersFrom: DateTime
) {
autoTopupTriggers(
after: $after,
autoTopupConfigId: $autoTopupConfigId,
before: $before,
failureReason: $failureReason,
first: $first,
last: $last,
source: $source,
status: $status,
triggersFrom: $triggersFrom
) {
edges {
...AutoTopupTriggerConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"autoTopupConfigId": "82464705",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"failureReason": "NO_IMPORT_METER",
"first": 10,
"last": 10,
"source": "LOW_CREDIT_BALANCE",
"status": "INITIATED",
"triggersFrom": "1992-01-18T23:44:09.185951+00:00"
}
Response
{
"data": {
"autoTopupTriggers": {
"edges": AutoTopupTriggerConnectionTypeEdge,
"pageInfo": PageInfo
}
}
}
availableOfferings
Type: [OfferingType]
URL: https://api.octopus.energy/v1/graphql/
Get a list of actively available offerings from the catalog.
Query
query AvailableOfferings {
availableOfferings {
customerDescription
customerName
groups {
...GroupTypeFragment
}
identifier
internalName
isActive
isAmendable
isDraft
isExpired
isFirstDraft
isLatestVersion
isSellable
lifecycle {
...LifecycleTypeFragment
}
offeringComponents {
...OfferingComponentTypeFragment
}
productComponents {
...ProductComponentTypeFragment
}
tags {
...TagTypeFragment
}
termTemplateComponents {
...TermTemplateComponentTypeFragment
}
}
}
Response
{
"data": {
"availableOfferings": [
{
"customerDescription": "according-kitchen-move-about-will",
"customerName": "would-there-wide-course-cover",
"groups": [GroupType],
"identifier": "82634884",
"internalName": "ago-really-law-exist-single",
"isActive": true,
"isAmendable": true,
"isDraft": true,
"isExpired": true,
"isFirstDraft": true,
"isLatestVersion": true,
"isSellable": true,
"lifecycle": LifecycleType,
"offeringComponents": [OfferingComponentType],
"productComponents": [ProductComponentType],
"tags": [TagType],
"termTemplateComponents": [TermTemplateComponentType]
}
]
}
}
availableProductFromDisplayName
Type: EnergyProductType
URL: https://api.octopus.energy/v1/graphql/
Available energy product, whose display name has the given prefix.
The possible errors that can be raised are:
- KT-GB-9514: No available product found.
- KT-GB-9515: Multiple available products found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Display name of the product. |
Query
query AvailableProductFromDisplayName($displayName: String!) {
availableProductFromDisplayName(displayName: $displayName) {
availableFrom
availableTo
code
description
direction
displayName
endsAt
exitFees
exitFeesType
fullName
id
includesEpgReduction
isAvailable
isBusiness
isChargedHalfHourly
isDefault
isDomestic
isFixed
isGreen
isHidden
isOccupier
isPrepay
isUnavailable
isVariable
notes
tags
tariffs {
...EnergyTariffConnectionTypeConnectionFragment
}
term
}
}
Variables
{
"displayName": "page-official-shake-and-economy"
}
Response
{
"data": {
"availableProductFromDisplayName": {
"availableFrom": "2016-07-25T13:52:04.619390+00:00",
"availableTo": "1977-02-02T04:31:49.694075+00:00",
"code": "discussion-that-event-body-stand",
"description": "little-wall-both-break-identify",
"direction": "IMPORT",
"displayName": "court-hundred-another-within-it",
"endsAt": "1972-07-09T14:41:46.044118+00:00",
"exitFees": 91,
"exitFeesType": "more-allow-no-moment-late",
"fullName": "list-drive-firm-game-moment",
"id": "43492883",
"includesEpgReduction": true,
"isAvailable": true,
"isBusiness": true,
"isChargedHalfHourly": true,
"isDefault": true,
"isDomestic": true,
"isFixed": true,
"isGreen": true,
"isHidden": true,
"isOccupier": true,
"isPrepay": true,
"isUnavailable": true,
"isVariable": true,
"notes": "single-local-lawyer-east-year",
"tags": ["find-national-Democrat-lead-stage"],
"tariffs": EnergyTariffConnectionTypeConnection,
"term": 76
}
}
}
availableProductSwitchDates
Type: [Date]
URL: https://api.octopus.energy/v1/graphql/
Get available dates for product switch.
The possible errors that can be raised are:
- KT-CT-1501: Agreement not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Agreement ID. |
|
The maximum number of days to look for available dates. |
Query
query AvailableProductSwitchDates(
$agreementId: Int!,
$maxRange: Int
) {
availableProductSwitchDates(
agreementId: $agreementId,
maxRange: $maxRange
)
}
Variables
{
"agreementId": 93476524,
"maxRange": 92
}
Response
{
"data": {
"availableProductSwitchDates": ["1987-11-22"]
}
}
availableProducts
Type: [SupplyProductType]
URL: https://api.octopus.energy/v1/graphql/
Get available products for the given market.
The possible errors that can be raised are:
- KT-CT-4930: Unsupported market.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Products available for the target market. |
Query
query AvailableProducts($marketName: String!) {
availableProducts(marketName: $marketName) {
availabilityStatus
availableFrom
availableTo
brandCode
code
description
displayName
endsAt
fullName
id
isHidden
marketName
notes
params
tags {
...SupplyProductTagTypeFragment
}
term
termsAndConditionsTypes {
...TermsAndConditionsTypeFragment
}
termsContractType
}
}
Variables
{
"marketName": "really-wear-medical-cultural-upon"
}
Response
{
"data": {
"availableProducts": [
{
"availabilityStatus": "EVERYONE",
"availableFrom": "1990-07-17T09:48:23.544270+00:00",
"availableTo": "2014-11-08T04:47:27.835128+00:00",
"brandCode": "then-environment-plan-religious-bad",
"code": "difficult-fill-arm-interest-design",
"description": "focus-charge-raise-item-standard",
"displayName": "present-phone-bank-question-little",
"endsAt": "2006-04-30T02:02:02.018957+00:00",
"fullName": "want-total-do-detail-always",
"id": "93621010",
"isHidden": true,
"marketName": "scene-else-evening-point-only",
"notes": "agent-skill-college-face-Republican",
"params": {"key": "value"},
"tags": SupplyProductTagType,
"term": 16,
"termsAndConditionsTypes": TermsAndConditionsType,
"termsContractType": "both-difference-listen-report-image"
}
]
}
}
availableProductsForMeterPoint
Type: [MPxNProductType]
URL: https://api.octopus.energy/v1/graphql/
A list of product codes that are the currently available products for a meter point.
The possible errors that can be raised are:
- KT-GB-4118: Invalid MPxN.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
|
|
|
Include products with a restricted availability in the results. |
|
A list of MPxNs. |
Query
query AvailableProductsForMeterPoint(
$accountNumber: String!,
$availableAt: DateTime!,
$includeRestrictedProducts: Boolean,
$mpxns: [String]!
) {
availableProductsForMeterPoint(
accountNumber: $accountNumber,
availableAt: $availableAt,
includeRestrictedProducts: $includeRestrictedProducts,
mpxns: $mpxns
) {
mpxn
products {
...EnergyProductTypeFragment
}
}
}
Variables
{
"accountNumber": "A-8330C5CC",
"availableAt": "1987-03-26T21:26:18.075827+00:00",
"includeRestrictedProducts": true,
"mpxns": "not-might-into-late-interesting"
}
Response
{
"data": {
"availableProductsForMeterPoint": [
{
"mpxn": "national-north-police-attack-wife",
"products": [EnergyProductType]
}
]
}
}
backendScreen
Type: BackendScreenType
URL: https://api.octopus.energy/v1/graphql/
Get mobile screen details to render.
The possible errors that can be raised are:
- KT-CT-8001: No backend screen available.
- KT-CT-8005: Backend screen does not support parameters.
- KT-CT-8008: Incorrect or missing data necessary to build the screen.
- KT-CT-8006: Error applying parameters to backend screen.
- KT-CT-8009: Error translating screen content.
- KT-CT-8010: Invalid step ID.
- KT-CT-8011: Cannot rewind past a previous irreversible step.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The maximum version of backend screens supported by the client. |
|
List of key-value pairs (strings) to pass as parameters to the screen. |
|
The ID of the screen to return. |
Query
query BackendScreen(
$maxVersionSupported: Int,
$params: [BackendScreenParamInputType],
$screenId: ID!
) {
backendScreen(
maxVersionSupported: $maxVersionSupported,
params: $params,
screenId: $screenId
) {
... on ComponentListType {
...ComponentListTypeFragment
}
... on Dashboard {
...DashboardFragment
}
... on FormScreenType {
...FormScreenTypeFragment
}
... on GenericBackendScreen {
...GenericBackendScreenFragment
}
}
}
Variables
{
"maxVersionSupported": 81,
"params": BackendScreenParamInputType,
"screenId": "48088751"
}
Response
{
"data": {
"backendScreen": ComponentListType
}
}
backendScreenEventIds
Type: [String]
URL: https://api.octopus.energy/v1/graphql/
Get all registered backend screen event IDs.
Query
query BackendScreenEventIds {
backendScreenEventIds
}
Response
{
"data": {
"backendScreenEventIds": ["wall-TV-quickly-old-memory"]
}
}
backendScreenIds
Type: [String]
URL: https://api.octopus.energy/v1/graphql/
Get all registered backend screen IDs.
Query
query BackendScreenIds {
backendScreenIds
}
Response
{
"data": {
"backendScreenIds": ["rule-mention-save-happy-hotel"]
}
}
balanceForecast
Type: BalanceForecastType
URL: https://api.octopus.energy/v1/graphql/
The balance forecast for an account.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
Query
query BalanceForecast($accountNumber: String!) {
balanceForecast(accountNumber: $accountNumber) {
availability {
...BalanceForecastAvailabilityTypeFragment
}
}
}
Variables
{
"accountNumber": "A-44647072"
}
Response
{
"data": {
"balanceForecast": {
"availability": BalanceForecastAvailabilityType
}
}
}
Arguments
| Name | Description |
|---|---|
|
The IBAN of the bank account. |
Query
query BankDetailsValidation($iban: NonEmptyString!) {
bankDetailsValidation(iban: $iban) {
areValid
message
}
}
Variables
{
"iban": "yes-entire-close-truth-we"
}
Response
{
"data": {
"bankDetailsValidation": {
"areValid": true,
"message": "total-cultural-thousand-good-shake"
}
}
}
batteryDevice
Type: BatteryDeviceType
URL: https://api.octopus.energy/v1/graphql/
The currently active battery device.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'batteryDevice' field is deprecated.
Use `SmartFlexInverter` on `devices` query instead.
- Marked as deprecated on 2025-09-08.
- Scheduled for removal on or after 2026-03-01.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/676/
Query
query BatteryDevice(
$accountNumber: String!,
$propertyId: Int!
) {
batteryDevice(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
chargingPreferences {
...BatteryChargingPreferencesTypeFragment
}
deviceStatus {
...DeviceStatusTypeFragment
}
deviceType
krakenflexDeviceId
params {
...BatteryParamsTypeFragment
}
provider
}
}
Variables
{
"accountNumber": "A-A934E19A",
"propertyId": 49366240
}
Response
{
"data": {
"batteryDevice": {
"chargingPreferences": BatteryChargingPreferencesType,
"deviceStatus": DeviceStatusType,
"deviceType": "BATTERIES",
"krakenflexDeviceId": "21947058",
"params": BatteryParamsType,
"provider": "BYD"
}
}
}
batteryVariants
Type: [BatteryVariantsType]
URL: https://api.octopus.energy/v1/graphql/
All supported batteries and their details.
Arguments
| Name | Description |
|---|---|
|
Only return batteries of a specific make. |
Query
query BatteryVariants($make: String) {
batteryVariants(make: $make) {
make
models {
...BatteryVariantModelsTypeFragment
}
}
}
Variables
{
"make": "recent-drive-health-project-hotel"
}
Response
{
"data": {
"batteryVariants": [
{
"make": "physical-not-help-environmental-like",
"models": [BatteryVariantModelsType]
}
]
}
}
business
Type: BusinessType
URL: https://api.octopus.energy/v1/graphql/
Get details about a business.
The possible errors that can be raised are:
- KT-CT-11101: The viewer is not authorized to execute the query/mutation. Check the ownership/permissions of provided data.
- KT-CT-11107: Unauthorized.
- KT-CT-1605: Invalid input.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
List of business detail key-value pairs to filter by. |
|
The business ID. |
Query
query Business(
$details: [BusinessDetailInput],
$id: ID
) {
business(
details: $details,
id: $id
) {
billingAddress {
...RichAddressTypeFragment
}
businessType
details {
...BusinessDetailTypeFragment
}
id
legalAddress {
...RichAddressTypeFragment
}
linkedAccountNumbers
name
number
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
sectors
segmentName
}
}
Variables
{
"details": BusinessDetailInput,
"id": "10783264"
}
Response
{
"data": {
"business": {
"billingAddress": RichAddressType,
"businessType": "SOLE_TRADER",
"details": [BusinessDetailType],
"id": "61811099",
"legalAddress": RichAddressType,
"linkedAccountNumbers": "73749277",
"name": "society-company-if-join-old",
"number": "election-strong-through-once-hard",
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"sectors": None,
"segmentName": "run-dream-positive-hope-focus"
}
}
}
businessAccountReferralRewardScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return a business referral reward scheme for the given account referral code.
Arguments
| Name | Description |
|---|---|
|
Friend referral code. |
Query
query BusinessAccountReferralRewardScheme($code: String!) {
businessAccountReferralRewardScheme(code: $code) {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Variables
{
"code": "hour-theory-pull-take-today"
}
Response
{
"data": {
"businessAccountReferralRewardScheme": {
"canBeReferred": true,
"code": "provide-opportunity-parent-control-describe",
"combinedRewardAmount": 4,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 32,
"maxRecurrence": 51,
"referralDisplayUrl": "situation-capital-house-customer-outside",
"referralUrl": "not-write-agreement-hold-hotel",
"referredRewardAmount": 90,
"referrerGivenName": "Melissa",
"referrerRewardAmount": 40,
"schemeType": "measure-letter-one-power-baby"
}
}
}
businessContract
Type: Contract
URL: https://api.octopus.energy/v1/graphql/
Get details about an account contract.
The possible errors that can be raised are:
- KT-CT-10003: Contract not found.
- KT-CT-10005: Missing required parameter: either identifier or accountNumber must be provided.
- KT-CT-10006: Account not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to find the business contract for. |
|
The identifier of the contract. |
|
The version of the contract. |
Query
query BusinessContract(
$accountNumber: String,
$identifier: String,
$version: Int
) {
businessContract(
accountNumber: $accountNumber,
identifier: $identifier,
version: $version
) {
cancelledAt
identifier
lifecycle {
...ContractVersionFragment
}
notes {
...ContractNoteTypeFragment
}
party {
... on AccountType {
...AccountTypeFragment
}
... on BusinessType {
...BusinessTypeFragment
}
}
signedAt
status
subject {
...AccountTypeFragment
}
terms {
...TermInterfaceFragment
}
title
validFrom
validTo
}
}
Variables
{
"accountNumber": "A-20F3E6DC",
"identifier": "96698320",
"version": 14
}
Response
{
"data": {
"businessContract": {
"cancelledAt": "2020-10-17T11:04:09.429015+00:00",
"identifier": "49968635",
"lifecycle": ContractVersion,
"notes": [ContractNoteType],
"party": AccountType,
"signedAt": "1979-08-02T15:59:06.432259+00:00",
"status": "REVOKED",
"subject": [AccountType],
"terms": TermInterface,
"title": "yeah-should-child-site-hope",
"validFrom": "2022-04-30T09:19:19.531343+00:00",
"validTo": "2007-03-14T01:40:19.666563+00:00"
}
}
}
call
Type: CallInterface!
URL: https://api.octopus.energy/v1/graphql/
Get a call for a given ID.
The possible errors that can be raised are:
- KT-CT-11802: Call not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The call ID. |
Query
query Call($id: ID!) {
call(id: $id) {
account {
...AccountTypeFragment
}
id
metadata {
...CallMetadataItemTypeFragment
}
}
}
Variables
{
"id": "57821219"
}
Response
{
"data": {
"call": {
"account": AccountType,
"id": "75576030",
"metadata": CallMetadataItemType
}
}
}
callTag
Type: CallTagType!
URL: https://api.octopus.energy/v1/graphql/
Get the call tag for a given ID.
The possible errors that can be raised are:
- KT-CT-11809: Call tag not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The call tag ID. |
Query
query CallTag($id: ID!) {
callTag(id: $id) {
id
isActive
name
}
}
Variables
{
"id": "83287319"
}
Response
{
"data": {
"callTag": {
"id": "47016057",
"isActive": true,
"name": "water-nearly-act-Mr-you"
}
}
}
callTags
Type: CallTagConnectionTypeConnection!
URL: https://api.octopus.energy/v1/graphql/
Get call tags.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Filter by active status. |
|
|
|
Filter by call tag name. |
Query
query CallTags(
$after: String,
$before: String,
$first: Int,
$isActive: Boolean,
$last: Int,
$name: String
) {
callTags(
after: $after,
before: $before,
first: $first,
isActive: $isActive,
last: $last,
name: $name
) {
edgeCount
edges {
...CallTagConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"isActive": true,
"last": 10,
"name": "grow-look-final-himself-point"
}
Response
{
"data": {
"callTags": {
"edgeCount": 8,
"edges": CallTagConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 66
}
}
}
campaigns
Type: AccountCampaignConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
The campaigns associated with this account.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
|
|
|
|
|
|
Query
query Campaigns(
$accountNumber: String!,
$after: String,
$before: String,
$first: Int,
$last: Int
) {
campaigns(
accountNumber: $accountNumber,
after: $after,
before: $before,
first: $first,
last: $last
) {
edgeCount
edges {
...AccountCampaignConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-578AB50B",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10
}
Response
{
"data": {
"campaigns": {
"edgeCount": 32,
"edges": AccountCampaignConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 78
}
}
}
canRescindAgreement
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Check if an agreement can be rescinded.
The possible errors that can be raised are:
- KT-CT-1501: Agreement not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The ID of the agreement to check. |
Query
query CanRescindAgreement($agreementId: Int!) {
canRescindAgreement(agreementId: $agreementId)
}
Variables
{
"agreementId": 69117200
}
Response
{
"data": {
"canRescindAgreement": true
}
}
cancelEnrolmentData
Type: CancelEnrolmentDataType
URL: https://api.octopus.energy/v1/graphql/
Data required for the cancel enrollment journey.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-GB-1503: The account's enrollment has already been cancelled.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
Query
query CancelEnrolmentData($accountNumber: String!) {
cancelEnrolmentData(accountNumber: $accountNumber) {
canBeDelayed
canBeWithdrawn
canSkipSsdPayment
currentEstimatedSsd
earliestPossibleSsd
latestPossibleSsd
}
}
Variables
{
"accountNumber": "A-6107F5A8"
}
Response
{
"data": {
"cancelEnrolmentData": {
"canBeDelayed": true,
"canBeWithdrawn": true,
"canSkipSsdPayment": true,
"currentEstimatedSsd": "1990-03-01",
"earliestPossibleSsd": "2010-04-14",
"latestPossibleSsd": "1970-01-15"
}
}
}
caredForAccounts
Type: [String!]!
URL: https://api.octopus.energy/v1/graphql/
The account numbers of the accounts that the user is caring for.
Query
query CaredForAccounts {
caredForAccounts
}
Response
{
"data": {
"caredForAccounts": "gas-manage-rich-identify-risk"
}
}
chargePointVariants
Type: [ChargePointVariantType]
URL: https://api.octopus.energy/v1/graphql/
All charge points variants.
Query
query ChargePointVariants {
chargePointVariants {
make
models {
...ChargePointVariantModelTypeFragment
}
}
}
Response
{
"data": {
"chargePointVariants": [
{
"make": "appear-back-support-scene-live",
"models": [ChargePointVariantModelType]
}
]
}
}
collectionProcessDetails
Type: CollectionProcessDetailsType
URL: https://api.octopus.energy/v1/graphql/
Collection process record details.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-11201: No Collection Process Records associated with id.
- KT-CT-11206: Unable to retrieve disconnection related data for collection process.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The collection process record number. |
Query
query CollectionProcessDetails($collectionProcessRecordNumber: String!) {
collectionProcessDetails(collectionProcessRecordNumber: $collectionProcessRecordNumber) {
associatedItems {
...CollectionProcessRecordAssociatedItemTypeFragment
}
collectionProcessRecordNumber
collectionProcessType
completionType
isActive
isComplete
isPaused
pausedDays
targetObjectIdentifier
}
}
Variables
{
"collectionProcessRecordNumber": "recent-it-event-strong-market"
}
Response
{
"data": {
"collectionProcessDetails": {
"associatedItems": [CollectionProcessRecordAssociatedItemType],
"collectionProcessRecordNumber": "measure-resource-very-room-authority",
"collectionProcessType": "ACCOUNT",
"completionType": "exist-high-hotel-one-one",
"isActive": true,
"isComplete": true,
"isPaused": true,
"pausedDays": 28,
"targetObjectIdentifier": "79787223"
}
}
}
complaint
Type: ComplaintType
URL: https://api.octopus.energy/v1/graphql/
Get a complaint.
The possible errors that can be raised are:
- KT-CT-12301: Complaint not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query Complaint($complaintId: Int!) {
complaint(complaintId: $complaintId) {
assigneeId
contacts {
...ComplaintContactConnectionTypeConnectionFragment
}
creationDate
id
resolutionDate
subtype
type
}
}
Variables
{
"complaintId": 82519651
}
Response
{
"data": {
"complaint": {
"assigneeId": "20891787",
"contacts": ComplaintContactConnectionTypeConnection,
"creationDate": "1976-08-23",
"id": "31844064",
"resolutionDate": "2006-04-10",
"subtype": "attack-rule-smile-table-level",
"type": "represent-power-affect-parent-site"
}
}
}
completedDispatches
Type: [UpsideDispatchType]
URL: https://api.octopus.energy/v1/graphql/
All completed device dispatches 12 hours behind, in reverse time order.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4341: Unable to fetch completed dispatches.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query CompletedDispatches($accountNumber: String!) {
completedDispatches(accountNumber: $accountNumber) {
delta
end
meta {
...UpsideDispatchMetaTypeFragment
}
start
}
}
Variables
{
"accountNumber": "A-71141FC5"
}
Response
{
"data": {
"completedDispatches": [
{
"delta": "1.0",
"end": "1999-11-17T21:59:10.018733+00:00",
"meta": UpsideDispatchMetaType,
"start": "2007-02-13T19:47:42.044521+00:00"
}
]
}
}
consentTypes
Type: [ConsentTypeType]
URL: https://api.octopus.energy/v1/graphql/
A list of the consent types available.
Query
query ConsentTypes {
consentTypes {
code
defaultValue
description
name
}
}
Response
{
"data": {
"consentTypes": [
{
"code": "likely-PM-second-answer-side",
"defaultValue": "ACCEPTED",
"description": "arrive-break-best-born-great",
"name": "system-nothing-scientist-guess-also"
}
]
}
}
consumptionEstimates
Type: ConsumptionEstimates
URL: https://api.octopus.energy/v1/graphql/
Consumption estimates based on ofgem statistics.
Query
query ConsumptionEstimates {
consumptionEstimates {
high {
...ConsumptionEstimateFragment
}
low {
...ConsumptionEstimateFragment
}
medium {
...ConsumptionEstimateFragment
}
}
}
Response
{
"data": {
"consumptionEstimates": {
"high": ConsumptionEstimate,
"low": ConsumptionEstimate,
"medium": ConsumptionEstimate
}
}
}
contractCreationJourney
Type: ContractCreationJourneyType
URL: https://api.octopus.energy/v1/graphql/
Get details about a contract creation journey.
The possible errors that can be raised are:
- KT-CT-10017: The contract journey could not be found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The number of the contract journey. |
Query
query ContractCreationJourney($number: String!) {
contractCreationJourney(number: $number) {
context {
...ContractCreationContextFragment
}
contractDetails {
...ContractDetailsFragment
}
journeyType
notes {
...ContractNoteTypeFragment
}
number
orderReference
requestedAt
status
}
}
Variables
{
"number": "capital-bring-your-thing-world"
}
Response
{
"data": {
"contractCreationJourney": {
"context": ContractCreationContext,
"contractDetails": ContractDetails,
"journeyType": "CONTRACT_CREATION",
"notes": [ContractNoteType],
"number": "drug-cup-enter-deal-likely",
"orderReference": "how-lead-report-month-under",
"requestedAt": "2019-06-28T08:13:46.134058+00:00",
"status": "IN_PROGRESS"
}
}
}
contractNoteReasons
Type: [ContractNoteReasonType]
URL: https://api.octopus.energy/v1/graphql/
Get a list of contract note reasons, optionally filtered by activity types.
Arguments
| Name | Description |
|---|---|
|
Filter reasons applicable to any of the given contract activity types. |
Query
query ContractNoteReasons($activityTypes: [ContractActivityTypeOptions]) {
contractNoteReasons(activityTypes: $activityTypes) {
activityTypes
description
slug
}
}
Variables
{
"activityTypes": "ALL_ACTIVITY_TYPES"
}
Response
{
"data": {
"contractNoteReasons": [
{
"activityTypes": "ALL_ACTIVITY_TYPES",
"description": "tonight-Congress-fact-set-different",
"slug": "plant-myself-station-series-cost"
}
]
}
}
contracts
Type: [Contract]
URL: https://api.octopus.energy/v1/graphql/
Get a list of contracts filtered by party or subject.
The possible errors that can be raised are:
- KT-CT-10029: Missing contract filters.
- KT-CT-10030: Filter by subject is not implemented.
- KT-CT-10031: Invalid party filter.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Filters to apply when querying contracts. At least one filter must be provided. |
Query
query Contracts($filters: ContractFiltersInput!) {
contracts(filters: $filters) {
cancelledAt
identifier
lifecycle {
...ContractVersionFragment
}
notes {
...ContractNoteTypeFragment
}
party {
... on AccountType {
...AccountTypeFragment
}
... on BusinessType {
...BusinessTypeFragment
}
}
signedAt
status
subject {
...AccountTypeFragment
}
terms {
...TermInterfaceFragment
}
title
validFrom
validTo
}
}
Variables
{
"filters": ContractFiltersInput
}
Response
{
"data": {
"contracts": [
{
"cancelledAt": "2014-07-05T05:28:40.332462+00:00",
"identifier": "12826855",
"lifecycle": ContractVersion,
"notes": [ContractNoteType],
"party": AccountType,
"signedAt": "1995-06-01T06:32:17.297458+00:00",
"status": "REVOKED",
"subject": [AccountType],
"terms": TermInterface,
"title": "big-citizen-yourself-model-take",
"validFrom": "1993-01-03T16:44:42.401615+00:00",
"validTo": "2021-09-28T15:30:54.811592+00:00"
}
]
}
}
contributionSchemes
Type: [ContributionSchemeType]
URL: https://api.octopus.energy/v1/graphql/
Get contribution schemes.
Query
query ContributionSchemes {
contributionSchemes {
acceptingContributions
code
displayName
id
taxable
}
}
Response
{
"data": {
"contributionSchemes": [
{
"acceptingContributions": true,
"code": "dog-partner-offer-board-fact",
"displayName": "early-perhaps-indeed-such-sister",
"id": "33884598",
"taxable": true
}
]
}
}
controllerEuids
Type: [String]
URL: https://api.octopus.energy/v1/graphql/
Heat pump controller EUIDs associated with an account.
Deprecated
The 'controllerEuids' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Arguments
| Name | Description |
|---|---|
|
Query
query ControllerEuids($accountNumber: String) {
controllerEuids(accountNumber: $accountNumber)
}
Variables
{
"accountNumber": "A-0A8A245A"
}
Response
{
"data": {
"controllerEuids": ["issue-wife-including-should-mouth"]
}
}
costOfCharge
Type: [CostOfChargeType]
URL: https://api.octopus.energy/v1/graphql/
Aggregated cost of charge for an EV device.
The possible errors that can be raised are:
- KT-CT-4326: Could not get consumption cost data.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'costOfCharge' field is deprecated.
Use `cost` field on `SmartFlexChargingSession` instead.
- Marked as deprecated on 2025-05-13.
- Scheduled for removal on or after 2026-01-16.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/605/
Arguments
| Name | Description |
|---|---|
|
|
|
Frequency by day, week, month or year. |
|
The date up to which data should be relative to. |
|
The start date of the results required. Overrides report date (end date) if provided. |
Query
query CostOfCharge(
$accountNumber: String!,
$frequency: DataFrequency!,
$startDate: Date
) {
costOfCharge(
accountNumber: $accountNumber,
frequency: $frequency,
startDate: $startDate
) {
costOfChargeId
isSmartCharge
krakenflexDeviceId
reportDate
totalConsumption
totalCostExclTax
totalCostInclTax
}
}
Variables
{
"accountNumber": "A-649CEC9A",
"frequency": "DAILY",
"startDate": "2002-08-22"
}
Response
{
"data": {
"costOfCharge": [
{
"costOfChargeId": "32419654",
"isSmartCharge": true,
"krakenflexDeviceId": "91476321",
"reportDate": "1990-05-19",
"totalConsumption": 622.29,
"totalCostExclTax": 465.4,
"totalCostInclTax": 554.31
}
]
}
}
costOfUsage
Type: CostOfUsageType
URL: https://api.octopus.energy/v1/graphql/
Cost of usage recorded by the meter.
The possible errors that can be raised are:
- KT-GB-4011: No SMETS consumption found.
- KT-GB-6312: Unable to query unit rates.
- KT-GB-3810: Unable to get cost of usage.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'costOfUsage' field is deprecated.
Please measurements statistics node instead.
- Marked as deprecated on 2024-09-02.
- Scheduled for removal on or after 2024-12-01.
Arguments
| Name | Description |
|---|---|
|
Account number. |
|
The energy type, i.e. ELECTRICITY or GAS. |
|
Aggregate cost according to this grouping. |
|
The electricity or gas meter ID. |
|
Datetime the data should be queried from. |
|
Timezone to use for grouping. |
Query
query CostOfUsage(
$accountNumber: String,
$fuelType: FuelType,
$grouping: ConsumptionGroupings!,
$meterId: String,
$startAt: DateTime,
$timezone: String
) {
costOfUsage(
accountNumber: $accountNumber,
fuelType: $fuelType,
grouping: $grouping,
meterId: $meterId,
startAt: $startAt,
timezone: $timezone
) {
costEnabled
details {
...CostOfUsageConnectionTypeConnectionFragment
}
direction
}
}
Variables
{
"accountNumber": "A-17F9FA72",
"fuelType": "ELECTRICITY",
"grouping": "QUARTER_HOUR",
"meterId": "91683411",
"startAt": "2005-11-21T21:24:35.067918+00:00",
"timezone": "expect-official-certain-receive-tough"
}
Response
{
"data": {
"costOfUsage": {
"costEnabled": true,
"details": CostOfUsageConnectionTypeConnection,
"direction": "positive-win-public-reveal-business"
}
}
}
customerFeedbackForms
Type: CustomerFeedbackFormConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Returns all active customer feedback forms for the account's brand.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
|
|
|
|
Feedback sources currently supported. |
|
|
|
Query
query CustomerFeedbackForms(
$accountNumber: String!,
$after: String,
$before: String,
$feedbackSource: CustomerFeedbackSourceChoices,
$first: Int,
$last: Int
) {
customerFeedbackForms(
accountNumber: $accountNumber,
after: $after,
before: $before,
feedbackSource: $feedbackSource,
first: $first,
last: $last
) {
edgeCount
edges {
...CustomerFeedbackFormConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-CF960A41",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"feedbackSource": "FEEDBACK_SOURCE_PHONE_CALL_FOLLOW_UP",
"first": 10,
"last": 10
}
Response
{
"data": {
"customerFeedbackForms": {
"edgeCount": 15,
"edges": CustomerFeedbackFormConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 87
}
}
}
customerFlexibilityCampaignEvents
Type: CFCampaignEventConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Retrieve Customer Flexibility Campaign Events by the Campaign slug, with customer enrollment info.
Arguments
| Name | Description |
|---|---|
|
The account number to check event enrollment for. |
|
|
|
|
|
The slug of the campaign to which the event belongs. |
|
|
|
|
|
The supply point identifier to check event enrollment for. |
Query
query CustomerFlexibilityCampaignEvents(
$accountNumber: String!,
$after: String,
$before: String,
$campaignSlug: String!,
$first: Int,
$last: Int,
$supplyPointIdentifier: String!
) {
customerFlexibilityCampaignEvents(
accountNumber: $accountNumber,
after: $after,
before: $before,
campaignSlug: $campaignSlug,
first: $first,
last: $last,
supplyPointIdentifier: $supplyPointIdentifier
) {
edgeCount
edges {
...CFCampaignEventConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-8E75C227",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"campaignSlug": "power-everybody-indicate-same-issue",
"first": 10,
"last": 10,
"supplyPointIdentifier": "40804521"
}
Response
{
"data": {
"customerFlexibilityCampaignEvents": {
"edgeCount": 69,
"edges": CFCampaignEventConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 70
}
}
}
dashboardScreen
Type: Dashboard
URL: https://api.octopus.energy/v1/graphql/
Get a dashboard screen to render in the form of a json list of sections containing cards or grouped cards each with an order attribute.
The possible errors that can be raised are:
- KT-CT-3820: Received both ledger ID and number.
- KT-CT-8001: No backend screen available.
- KT-CT-8005: Backend screen does not support parameters.
- KT-CT-8008: Incorrect or missing data necessary to build the screen.
- KT-CT-8006: Error applying parameters to backend screen.
- KT-CT-8009: Error translating screen content.
- KT-CT-8010: Invalid step ID.
- KT-CT-8011: Cannot rewind past a previous irreversible step.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number of the user. |
|
The ID of the dashboard type screen to return. |
|
The ledger id associated to the account. |
|
The ledger number associated to the account. |
|
The maximum version of dahshboard type screens supported by the client. |
|
List of key-value pairs (strings) to pass as parameters to the screen. |
|
The property id associated to the account. |
Query
query DashboardScreen(
$accountNumber: String!,
$dashboardId: ID!,
$ledgerNumber: String,
$maxVersionSupported: Int!,
$params: [BackendScreenParamInputType],
$propertyId: String
) {
dashboardScreen(
accountNumber: $accountNumber,
dashboardId: $dashboardId,
ledgerNumber: $ledgerNumber,
maxVersionSupported: $maxVersionSupported,
params: $params,
propertyId: $propertyId
) {
dashboardItems {
...SectionTypeFragment
}
id
serialisedDashboardItems
typename
}
}
Variables
{
"accountNumber": "A-0C1FBC9A",
"dashboardId": "88501401",
"ledgerNumber": "man-with-although-reduce-trip",
"maxVersionSupported": 69,
"params": BackendScreenParamInputType,
"propertyId": "21961425"
}
Response
{
"data": {
"dashboardScreen": {
"dashboardItems": SectionType,
"id": "82677796",
"serialisedDashboardItems": "for-let-player-right-arm",
"typename": "event-happen-product-nature-blood"
}
}
}
defaultElectricJuicePaymentInstruction
Type: DefaultElectricJuicePaymentInstructionType
URL: https://api.octopus.energy/v1/graphql/
Get the default payment instruction for the account's Electric Juice Network ledger.
The possible errors that can be raised are:
- KT-GB-6111: Invalid/No payment instruction found for the given account.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'defaultElectricJuicePaymentInstruction' field is deprecated.
Legacy Market
- Marked as deprecated on 2025-08-04.
- Scheduled for removal on or after 2025-09-05.
Arguments
| Name | Description |
|---|---|
|
The account number. |
Query
query DefaultElectricJuicePaymentInstruction($accountNumber: String!) {
defaultElectricJuicePaymentInstruction(accountNumber: $accountNumber) {
cardExpiryMonth
cardExpiryYear
cardNumber
cardPaymentNetwork
cardType
id
instructionType
validFrom
vendor
}
}
Variables
{
"accountNumber": "A-AC2974E6"
}
Response
{
"data": {
"defaultElectricJuicePaymentInstruction": {
"cardExpiryMonth": 42,
"cardExpiryYear": 44,
"cardNumber": "vote-plan-court-record-trouble",
"cardPaymentNetwork": "under-eye-enjoy-sign-a",
"cardType": "upon-then-way-series-worry",
"id": "87118314",
"instructionType": "significant-well-throughout-evening-parent",
"validFrom": "1982-02-06T05:10:26.051290+00:00",
"vendor": "fact-culture-stock-their-claim"
}
}
}
defaultPaymentInstruction
Type: PaymentInstructionType
URL: https://api.octopus.energy/v1/graphql/
Get the default payment instruction for the account's main ledger.
Deprecated
The 'defaultPaymentInstruction' field is deprecated.
Please use 'usablePaymentInstructions' on the Ledger type to get all usable instructions, or 'paymentPreferenceAtTime' on the Ledger type to get a specific one. Both require explicitly requesting a ledger.
- Marked as deprecated on 2026-01-28.
- Scheduled for removal on or after 2026-07-28.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
Provide an option to get either a CARD or DIRECT_DEBIT instruction. |
Query
query DefaultPaymentInstruction(
$accountNumber: String!,
$instructionType: PaymentType
) {
defaultPaymentInstruction(
accountNumber: $accountNumber,
instructionType: $instructionType
) {
accountHolder
accountType
bankCode
cardExpiryMonth
cardExpiryYear
cardNumber
cardPaymentNetwork
cardType
iban
id
instructionType
maskedAccountIdentifier
owners {
...PaymentInstructionOwnerTypeFragment
}
sortCode
status
supplementaryLedger {
...SupplementaryLedgerTypeFragment
}
validFrom
vendor
}
}
Variables
{
"accountNumber": "A-90843073",
"instructionType": "BPAY"
}
Response
{
"data": {
"defaultPaymentInstruction": {
"accountHolder": "food-because-house-size-happen",
"accountType": "simply-security-company-pay-able",
"bankCode": "indeed-purpose-hotel-ahead-behavior",
"cardExpiryMonth": 30,
"cardExpiryYear": 20,
"cardNumber": "ask-tough-foreign-resource-know",
"cardPaymentNetwork": "boy-certainly-peace-watch-relationship",
"cardType": "challenge-like-decade-point-several",
"iban": "role-market-visit-civil-police",
"id": "23580461",
"instructionType": "none-open-major-data-memory",
"maskedAccountIdentifier": "61698086",
"owners": [PaymentInstructionOwnerType],
"sortCode": "family-material-everyone-realize-leader",
"status": "many-consumer-own-police-for",
"supplementaryLedger": SupplementaryLedgerType,
"validFrom": "2008-07-07T08:19:06.138036+00:00",
"vendor": "similar-him-here-return-realize"
}
}
}
defaultRawScore
Type: Int
URL: https://api.octopus.energy/v1/graphql/
Get default raw score for a customer feedback form.
The possible errors that can be raised are:
- KT-CT-5513: Invalid data.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query DefaultRawScore($formId: Int!) {
defaultRawScore(formId: $formId)
}
Variables
{
"formId": 78975355
}
Response
{
"data": {
"defaultRawScore": 64
}
}
depositAgreements
Type: [DepositAgreementOutput]
URL: https://api.octopus.energy/v1/graphql/
Get deposit agreements for a given account.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query DepositAgreements($accountNumber: String!) {
depositAgreements(accountNumber: $accountNumber) {
acceptedAt
collectionDate
currentEligibilityStatus {
...CurrentEligibilityStatusOutputFragment
}
depositAmount
depositKey
dueDate
fulfilledAt
returnStrategy
}
}
Variables
{
"accountNumber": "A-7D915EE7"
}
Response
{
"data": {
"depositAgreements": [
{
"acceptedAt": "2025-02-21T03:39:30.689663+00:00",
"collectionDate": "1991-07-08",
"currentEligibilityStatus": CurrentEligibilityStatusOutput,
"depositAmount": 78,
"depositKey": "break-military-other-strategy-account",
"dueDate": "1996-09-30",
"fulfilledAt": "1976-11-20T10:09:17.024714+00:00",
"returnStrategy": "likely-box-green-section-anyone"
}
]
}
}
devices
Type: [SmartFlexDeviceInterface!]
URL: https://api.octopus.energy/v1/graphql/
A list of devices registered to an account.
Arguments
| Name | Description |
|---|---|
|
The account number, e.g. A-12345678. |
|
Only list the device with this ID. |
|
Only list the device with this integration device ID. |
|
Only list devices registered to this property. |
Query
query Devices(
$accountNumber: String!,
$deviceId: String,
$integrationDeviceId: String,
$propertyId: ID
) {
devices(
accountNumber: $accountNumber,
deviceId: $deviceId,
integrationDeviceId: $integrationDeviceId,
propertyId: $propertyId
) {
alerts {
...SmartFlexDeviceAlertInterfaceFragment
}
deviceType
id
integrationDeviceId
name
onboardingWizard {
...SmartFlexOnboardingWizardFragment
}
preferenceSetting {
...FlexDevicePreferenceSettingInterfaceFragment
}
preferences {
...SmartFlexDevicePreferencesInterfaceFragment
}
propertyId
provider
reAuthenticationState {
...DeviceReAuthenticationInterfaceFragment
}
status {
...SmartFlexDeviceStatusInterfaceFragment
}
}
}
Variables
{
"accountNumber": "A-DFDD2534",
"deviceId": "95494030",
"integrationDeviceId": "46888928",
"propertyId": "47499069"
}
Response
{
"data": {
"devices": [
{
"alerts": SmartFlexDeviceAlertInterface,
"deviceType": "BATTERIES",
"id": "38350311",
"integrationDeviceId": "50639606",
"name": "different-dog-almost-serious-music",
"onboardingWizard": SmartFlexOnboardingWizard,
"preferenceSetting": FlexDevicePreferenceSettingInterface,
"preferences": SmartFlexDevicePreferencesInterface,
"propertyId": "96903098",
"provider": "BYD",
"reAuthenticationState": DeviceReAuthenticationInterface,
"status": SmartFlexDeviceStatusInterface
}
]
}
}
domesticAccountReferralRewardScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return a domestic referral reward scheme for the given account referral code.
Arguments
| Name | Description |
|---|---|
|
Friend referral code. |
Query
query DomesticAccountReferralRewardScheme($code: String!) {
domesticAccountReferralRewardScheme(code: $code) {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Variables
{
"code": "step-official-religious-style-baby"
}
Response
{
"data": {
"domesticAccountReferralRewardScheme": {
"canBeReferred": true,
"code": "realize-entire-through-lay-million",
"combinedRewardAmount": 48,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 87,
"maxRecurrence": 35,
"referralDisplayUrl": "act-interesting-likely-skill-then",
"referralUrl": "wind-she-before-sound-address",
"referredRewardAmount": 26,
"referrerGivenName": "Charles",
"referrerRewardAmount": 65,
"schemeType": "take-none-everybody-teach-foreign"
}
}
}
domesticJoiningRewardScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return a joining reward scheme with the given code, if it's active. A joining reward can be a signup reward or a promotional reward.
Arguments
| Name | Description |
|---|---|
|
Reward code for the scheme. |
Query
query DomesticJoiningRewardScheme($code: String!) {
domesticJoiningRewardScheme(code: $code) {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Variables
{
"code": "research-partner-sure-position-city"
}
Response
{
"data": {
"domesticJoiningRewardScheme": {
"canBeReferred": true,
"code": "should-go-black-conference-much",
"combinedRewardAmount": 25,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 40,
"maxRecurrence": 100,
"referralDisplayUrl": "wife-collection-word-national-significant",
"referralUrl": "such-technology-someone-defense-much",
"referredRewardAmount": 67,
"referrerGivenName": "Sherry",
"referrerRewardAmount": 43,
"schemeType": "carry-yeah-from-successful-as"
}
}
}
domesticSignupRewardScheme
Type: ReferralSchemeType
URL: https://api.octopus.energy/v1/graphql/
Return a signup referral reward scheme with the given code, if it's active.
Arguments
| Name | Description |
|---|---|
|
Reward code for the scheme. |
Query
query DomesticSignupRewardScheme($code: String!) {
domesticSignupRewardScheme(code: $code) {
canBeReferred
code
combinedRewardAmount
isUsageAtCapacity
loyaltyPointsBonus
maxRecurrence
referralDisplayUrl
referralUrl
referredRewardAmount
referrerGivenName
referrerRewardAmount
schemeType
}
}
Variables
{
"code": "out-she-natural-big-fear"
}
Response
{
"data": {
"domesticSignupRewardScheme": {
"canBeReferred": true,
"code": "program-simple-feel-up-painting",
"combinedRewardAmount": 43,
"isUsageAtCapacity": true,
"loyaltyPointsBonus": 62,
"maxRecurrence": 66,
"referralDisplayUrl": "these-girl-style-us-become",
"referralUrl": "add-reflect-pass-offer-trial",
"referredRewardAmount": 65,
"referrerGivenName": "Jon",
"referrerRewardAmount": 19,
"schemeType": "me-food-perhaps-financial-nor"
}
}
}
earliestPossibleDirectDebitPaymentDate
Type: EarliestPossibleDirectDebitPaymentDate
URL: https://api.octopus.energy/v1/graphql/
Earliest possible payment date from today for which the first direct debit payment can be made.
The possible errors that can be raised are:
- KT-GB-3914: Unable to get earliest ssd payment date.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query EarliestPossibleDirectDebitPaymentDate {
earliestPossibleDirectDebitPaymentDate {
earliestPossibleDirectDebitPaymentDate
}
}
Response
{
"data": {
"earliestPossibleDirectDebitPaymentDate": {
"earliestPossibleDirectDebitPaymentDate": "1970-06-16"
}
}
}
electricVehicles
Type: [ElectricVehicleType]
URL: https://api.octopus.energy/v1/graphql/
All electric vehicle types and their details.
The possible errors that can be raised are:
- KT-CT-4343: Unable to fetch electric vehicles list for make.
- KT-CT-4344: Make is not supported by provider.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Only return vehicles that are currently integrated. |
|
Only return vehicle types for the specified make. |
|
Only return vehicle types supported by the specified provider, e.g. Tesla. |
Query
query ElectricVehicles(
$isIntegrationLive: Boolean,
$make: String,
$supportedProvider: ProviderChoices
) {
electricVehicles(
isIntegrationLive: $isIntegrationLive,
make: $make,
supportedProvider: $supportedProvider
) {
make
models {
...ElectricVehicleModelTypeFragment
}
}
}
Variables
{
"isIntegrationLive": true,
"make": "common-away-test-stop-forget",
"supportedProvider": "BYD"
}
Response
{
"data": {
"electricVehicles": [
{
"make": "everybody-shake-lead-science-may",
"models": [ElectricVehicleModelType]
}
]
}
}
electricityAgreement
Type: AgreementInterface
URL: https://api.octopus.energy/v1/graphql/
Get an electricity agreement.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
ID of the electricity agreement. |
Query
query ElectricityAgreement($id: ID!) {
electricityAgreement(id: $id) {
agreedFrom
agreedTo
id
isRevoked
rescissionDeadlineAt
validFrom
validTo
}
}
Variables
{
"id": "26726391"
}
Response
{
"data": {
"electricityAgreement": {
"agreedFrom": "2016-06-26T12:04:38.321275+00:00",
"agreedTo": "1970-02-27T09:30:53.323314+00:00",
"id": 52712932,
"isRevoked": true,
"rescissionDeadlineAt": "2014-03-05T06:32:25.138600+00:00",
"validFrom": "2024-07-28T00:48:49.216722+00:00",
"validTo": "1988-10-18T03:09:30.251839+00:00"
}
}
}
electricityMeterPointDetails
Type: ElectricityMeterPointDetails
URL: https://api.octopus.energy/v1/graphql/
Search for the meter point details with given MPAN using ECOES switching API.
The possible errors that can be raised are:
- KT-GB-6634: The provided MPAN is not valid.
- KT-GB-6630: We can't communicate with our address database right now to look up your address. Please try again.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meter point. |
Query
query ElectricityMeterPointDetails($mpan: String!) {
electricityMeterPointDetails(mpan: $mpan) {
meterPoint {
...ElectricityMeterPointTypeFragment
}
networkRates {
...ElectricityNetworkRatesFragment
}
relAddress {
...UniqueRELAddressTypeFragment
}
technicalDetails {
...ElectricMeterTechnicalDetailsFragment
}
}
}
Variables
{
"mpan": "role-need-boy-record-edge"
}
Response
{
"data": {
"electricityMeterPointDetails": {
"meterPoint": ElectricityMeterPointType,
"networkRates": ElectricityNetworkRates,
"relAddress": UniqueRELAddressType,
"technicalDetails": ElectricMeterTechnicalDetails
}
}
}
electricityMeterReadings
Type: ElectricityMeterReadingConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Fetch electricity meter readings for a given account and meter
This field is a connection type. Connections are used to implement cursor based pagination.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only fetch meter readings made since this date |
|
Only fetch meter readings made until this date |
Query
query ElectricityMeterReadings(
$accountNumber: String!,
$after: String,
$before: String,
$eventTypes: [MeterReadingEventType],
$first: Int,
$last: Int,
$meterId: String!,
$readFrom: DateTime,
$readTo: DateTime
) {
electricityMeterReadings(
accountNumber: $accountNumber,
after: $after,
before: $before,
eventTypes: $eventTypes,
first: $first,
last: $last,
meterId: $meterId,
readFrom: $readFrom,
readTo: $readTo
) {
edgeCount
edges {
...ElectricityMeterReadingConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-6243ACA7",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"eventTypes": "CUSTOMER",
"first": 10,
"last": 10,
"meterId": "39727105",
"readFrom": "1999-04-09T22:40:58.474952+00:00",
"readTo": "1985-12-14T09:50:00.203411+00:00"
}
Response
{
"data": {
"electricityMeterReadings": {
"edgeCount": 8,
"edges": ElectricityMeterReadingConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 21
}
}
}
electricityMeterpoint
Type: ElectricMeterTechnicalDetails
URL: https://api.octopus.energy/v1/graphql/
Search for the meterpoint with given MPAN using ECOES switching API.
The possible errors that can be raised are:
- KT-GB-6634: The provided MPAN is not valid.
- KT-GB-6630: We can't communicate with our address database right now to look up your address. Please try again.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meterpoint. |
Query
query ElectricityMeterpoint($mpan: String!) {
electricityMeterpoint(mpan: $mpan) {
annualConsumption
annualConsumptionEfd
annualConsumptionQualityIndicator
assignedMdrEfd
assignedMdrMpid
connectionType
connectionTypeEfd
connectionTypeEtd
consumerType
cssSupplierMpid
cssSupplyStartDate
customerDirectContractDsDipId
customerDirectContractDsExists
customerDirectContractDsMpid
customerDirectContractMsDipId
customerDirectContractMsExists
customerDirectContractMsMpid
dataAggregatorEfd
dataAggregatorMpid
dataCollectorEfd
dataCollectorMpid
dataServiceDipId
dataServiceEfd
dataServiceMpid
dccServiceFlag
dccServiceFlagEfd
disconnectionEfd
distributorDipId
distributorMpid
domesticPremisesIndicator
duosTariffId
duosTariffIdEfd
energisationStatus
energisationStatusEfd
energyDirection
energyDirectionEfd
energyDirectionEtd
greenDealInEffect
gspGroupEfd
gspGroupId
ihdStatus
ihdStatusEfd
lineLossFactor
lineLossFactorEfd
marketSegmentIndicator
marketSegmentIndicatorEfd
measurementClass
measurementClassEfd
meterOperatorEfd
meterOperatorMpid
meterTimeswitchClass
meterTimeswitchClassEfd
meteredIndicator
meteredIndicatorEfd
meteredIndicatorEtd
meteringServiceDipId
meteringServiceEfd
meteringServiceEtd
meteringServiceMpid
meters {
...ElectricMeterTechnicalSubDetailsFragment
}
mhhsIndicator
mhhsIndicatorEfd
mpan
profileClass
profileClassEfd
relationshipStatusIndicator
rmpState
rmpStateEfd
smetsVersion
smsoEfd
smsoMpid
standardSettlementConfiguration
standardSettlementConfigurationEfd
supplierDipId
supplierEfd
supplierMpid
tradingStatus
tradingStatusEfd
}
}
Variables
{
"mpan": "street-those-between-tax-him"
}
Response
{
"data": {
"electricityMeterpoint": {
"annualConsumption": "1.0",
"annualConsumptionEfd": "1990-02-25",
"annualConsumptionQualityIndicator": "despite-itself-system-politics-short",
"assignedMdrEfd": "1974-04-29",
"assignedMdrMpid": "53699757",
"connectionType": "allow-peace-lay-card-Republican",
"connectionTypeEfd": "1972-07-21",
"connectionTypeEtd": "1993-03-23",
"consumerType": "dog-several-today-popular-top",
"cssSupplierMpid": "46016718",
"cssSupplyStartDate": "2001-06-15",
"customerDirectContractDsDipId": "65513321",
"customerDirectContractDsExists": true,
"customerDirectContractDsMpid": "60577673",
"customerDirectContractMsDipId": "14619479",
"customerDirectContractMsExists": true,
"customerDirectContractMsMpid": "85107149",
"dataAggregatorEfd": "1994-10-20",
"dataAggregatorMpid": "25329412",
"dataCollectorEfd": "2005-06-01",
"dataCollectorMpid": "82975835",
"dataServiceDipId": "47039617",
"dataServiceEfd": "2012-04-24",
"dataServiceMpid": "37820778",
"dccServiceFlag": "the-budget-win-agree-like",
"dccServiceFlagEfd": "2022-08-22",
"disconnectionEfd": "2021-11-06",
"distributorDipId": "76121508",
"distributorMpid": "24390997",
"domesticPremisesIndicator": true,
"duosTariffId": "16022704",
"duosTariffIdEfd": "2014-05-19",
"energisationStatus": "usually-seven-country-finish-out",
"energisationStatusEfd": "1977-12-12",
"energyDirection": "write-decade-five-your-animal",
"energyDirectionEfd": "1980-10-28",
"energyDirectionEtd": "2020-04-20",
"greenDealInEffect": "sister-science-yet-light-heavy",
"gspGroupEfd": "1978-09-14",
"gspGroupId": "87995083",
"ihdStatus": "executive-throw-long-occur-result",
"ihdStatusEfd": "1996-02-18",
"lineLossFactor": "join-visit-nor-cause-middle",
"lineLossFactorEfd": "1991-04-08",
"marketSegmentIndicator": "great-animal-interest-though-computer",
"marketSegmentIndicatorEfd": "1974-02-11",
"measurementClass": "cell-garden-any-raise-ok",
"measurementClassEfd": "1978-08-23",
"meterOperatorEfd": "1986-11-03",
"meterOperatorMpid": "98588009",
"meterTimeswitchClass": 52,
"meterTimeswitchClassEfd": "1997-02-23",
"meteredIndicator": true,
"meteredIndicatorEfd": "1981-07-26",
"meteredIndicatorEtd": "2007-07-07",
"meteringServiceDipId": "13744078",
"meteringServiceEfd": "1985-12-29",
"meteringServiceEtd": "2009-07-22",
"meteringServiceMpid": "77983056",
"meters": [ElectricMeterTechnicalSubDetails],
"mhhsIndicator": "available-per-answer-young-shoulder",
"mhhsIndicatorEfd": "1983-08-14",
"mpan": "test-need-customer-inside-manage",
"profileClass": 66,
"profileClassEfd": "2014-08-13",
"relationshipStatusIndicator": "stuff-think-truth-then-dog",
"rmpState": "politics-method-opportunity-put-word",
"rmpStateEfd": "2001-12-17",
"smetsVersion": "movement-call-realize-last-director",
"smsoEfd": "1972-09-18",
"smsoMpid": "83932642",
"standardSettlementConfiguration": "game-expert-create-member-about",
"standardSettlementConfigurationEfd": "2004-10-07",
"supplierDipId": "59710697",
"supplierEfd": "2022-01-29",
"supplierMpid": "18649719",
"tradingStatus": "high-young-manager-officer-religious",
"tradingStatusEfd": "2016-01-29"
}
}
}
electricityPrepayLedgers
Type: PrepayLedgersType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-GB-6211: Account does not exist.
- KT-GB-6212: Meter does not exist.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query ElectricityPrepayLedgers(
$accountNumber: String!,
$mpan: String!,
$serialNumber: String!
) {
electricityPrepayLedgers(
accountNumber: $accountNumber,
mpan: $mpan,
serialNumber: $serialNumber
) {
creditLedger {
...SupplementaryLedgerTypeFragment
}
debtLedger {
...SupplementaryLedgerTypeFragment
}
paymentLedger {
...PrepayPaymentLedgerTypeFragment
}
}
}
Variables
{
"accountNumber": "A-600E882A",
"mpan": "sing-finish-natural-want-also",
"serialNumber": "teach-either-beat-most-military"
}
Response
{
"data": {
"electricityPrepayLedgers": {
"creditLedger": SupplementaryLedgerType,
"debtLedger": SupplementaryLedgerType,
"paymentLedger": PrepayPaymentLedgerType
}
}
}
eligibilityToJoinLoyaltyPointsProgram
Type: LoyaltyPointsProgramEligibilityType
URL: https://api.octopus.energy/v1/graphql/
Check if an account is eligible to join the loyalty points program.
The possible errors that can be raised are:
- KT-CT-9202: Loyalty Points adapter not configured.
- KT-CT-9218: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
Query
query EligibilityToJoinLoyaltyPointsProgram($input: LoyaltyPointsProgramEligibilityInput!) {
eligibilityToJoinLoyaltyPointsProgram(input: $input) {
isEligible
primaryIneligibilityReason
}
}
Variables
{
"input": LoyaltyPointsProgramEligibilityInput
}
Response
{
"data": {
"eligibilityToJoinLoyaltyPointsProgram": {
"isEligible": true,
"primaryIneligibilityReason": "I-those-own-many-newspaper"
}
}
}
eligibleDeviceTypes
Type: [KrakenFlexDeviceTypes]
URL: https://api.octopus.energy/v1/graphql/
A list of device types that are eligible for registration.
Arguments
| Name | Description |
|---|---|
|
The account number, e.g. A-12345678. |
|
|
Query
query EligibleDeviceTypes(
$accountNumber: String!,
$propertyId: Int
) {
eligibleDeviceTypes(
accountNumber: $accountNumber,
propertyId: $propertyId
)
}
Variables
{
"accountNumber": "A-6D51AE95",
"propertyId": 74255603
}
Response
{
"data": {
"eligibleDeviceTypes": "BATTERIES"
}
}
embeddedNetwork
Type: EmbeddedNetworkType
URL: https://api.octopus.energy/v1/graphql/
Get details about an embedded network.
Arguments
| Name | Description |
|---|---|
|
Query
query EmbeddedNetwork($id: ID!) {
embeddedNetwork(id: $id) {
embeddedProperties {
...EmbeddedPropertyTypeFragment
}
id
name
}
}
Variables
{
"id": "60673353"
}
Response
{
"data": {
"embeddedNetwork": {
"embeddedProperties": [EmbeddedPropertyType],
"id": "53126230",
"name": "protect-however-military-information-happy"
}
}
}
energyMixData
Type: EnergyMixDataType
URL: https://api.octopus.energy/v1/graphql/
The current energy generation mix.
Query
query EnergyMixData {
energyMixData {
carbonIntensityIndex
}
}
Response
{
"data": {
"energyMixData": {
"carbonIntensityIndex": "easy-north-sell-less-once"
}
}
}
energyProduct
Type: EnergyProductType
URL: https://api.octopus.energy/v1/graphql/
Get an energy product that matches the given code.
Arguments
| Name | Description |
|---|---|
|
Code for the energy product. |
Query
query EnergyProduct($code: String!) {
energyProduct(code: $code) {
availableFrom
availableTo
code
description
direction
displayName
endsAt
exitFees
exitFeesType
fullName
id
includesEpgReduction
isAvailable
isBusiness
isChargedHalfHourly
isDefault
isDomestic
isFixed
isGreen
isHidden
isOccupier
isPrepay
isUnavailable
isVariable
notes
tags
tariffs {
...EnergyTariffConnectionTypeConnectionFragment
}
term
}
}
Variables
{
"code": "part-check-laugh-right-attention"
}
Response
{
"data": {
"energyProduct": {
"availableFrom": "2002-03-23T14:47:05.937898+00:00",
"availableTo": "2025-09-05T20:23:21.746990+00:00",
"code": "begin-remember-southern-show-point",
"description": "over-security-positive-practice-account",
"direction": "IMPORT",
"displayName": "general-hear-show-onto-star",
"endsAt": "2025-01-29T06:58:59.591142+00:00",
"exitFees": 88,
"exitFeesType": "soldier-style-coach-campaign-short",
"fullName": "voice-quality-born-history-according",
"id": "39913634",
"includesEpgReduction": true,
"isAvailable": true,
"isBusiness": true,
"isChargedHalfHourly": true,
"isDefault": true,
"isDomestic": true,
"isFixed": true,
"isGreen": true,
"isHidden": true,
"isOccupier": true,
"isPrepay": true,
"isUnavailable": true,
"isVariable": true,
"notes": "decision-knowledge-adult-federal-country",
"tags": ["nor-hope-speech-successful-simply"],
"tariffs": EnergyTariffConnectionTypeConnection,
"term": 58
}
}
}
energyProducts
Type: EnergyProductConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get all products for a given brand and postcode. The supplied postcode will ensure that there are tariffs available on the product for the GSP.
Arguments
| Name | Description |
|---|---|
|
|
|
Filter for available or unavailable products only. |
|
|
|
Filter by a specific energy brand. |
|
Filter by these brands. |
|
Energy product direction to filter products by. |
|
Exclude products with these tag codes. |
|
Filter by the type of energy product. |
|
|
|
|
|
Postcode to search energy products for. |
|
Filter by specific tags which are attached to the product. |
Query
query EnergyProducts(
$after: String,
$availability: EnergyProductAvailability,
$before: String,
$brand: String,
$brands: [String],
$direction: EnergyProductDirection,
$excludeTags: [String],
$filterBy: [EnergyProductFilters],
$first: Int,
$last: Int,
$postcode: String!,
$tags: [String]
) {
energyProducts(
after: $after,
availability: $availability,
before: $before,
brand: $brand,
brands: $brands,
direction: $direction,
excludeTags: $excludeTags,
filterBy: $filterBy,
first: $first,
last: $last,
postcode: $postcode,
tags: $tags
) {
edgeCount
edges {
...EnergyProductConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"availability": "AVAILABLE",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"brand": "whatever-and-that-president-front",
"brands": ["mother-toward-soon-threat-experience"],
"direction": "IMPORT",
"excludeTags": ["deep-economic-clearly-teacher-city"],
"filterBy": "PREPAY",
"first": 10,
"last": 10,
"postcode": "no-rock-sell-site-game",
"tags": ["decide-serious-dream-local-thus"]
}
Response
{
"data": {
"energyProducts": {
"edgeCount": 38,
"edges": EnergyProductConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 45
}
}
}
enodeLinkSession
Type: EnodeLinkSessionType
URL: https://api.octopus.energy/v1/graphql/
The user specific Enode link session details.
The possible errors that can be raised are:
- KT-CT-4328: Invalid data.
- KT-CT-1111: Unauthorized.
- KT-CT-4319: Unable to get Enode link session.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'enodeLinkSession' field is deprecated.
Please use 'startSmartFlexOnboarding' instead.
- Marked as deprecated on 2025-10-30.
- Scheduled for removal on or after 2026-04-30.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/608/
Arguments
| Name | Description |
|---|---|
|
|
|
Query
query EnodeLinkSession(
$accountNumber: String,
$vendor: EnodeVendors
) {
enodeLinkSession(
accountNumber: $accountNumber,
vendor: $vendor
) {
linkState
linkUrl
}
}
Variables
{
"accountNumber": "A-13711BE5",
"vendor": "AUDI"
}
Response
{
"data": {
"enodeLinkSession": {
"linkState": "child-pressure-discussion-letter-thank",
"linkUrl": "wish-go-expert-best-be"
}
}
}
estimateMeterReadings
Type: MeterReadingEstimationReadingConnection
URL: https://api.octopus.energy/v1/graphql/
Estimated meter readings.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
The meter id to perform estimation on. |
|
|
|
|
|
This is the unique identifier used by the market to identify the supply point. |
|
The end of the period estimated. |
|
The start of the period estimated. |
|
The meter's register identifier. |
Query
query EstimateMeterReadings(
$after: String,
$before: String,
$deviceId: ID,
$first: Int,
$last: Int,
$marketIdentifier: ID!,
$periodEnd: DateTime!,
$periodStart: DateTime!,
$registerId: ID
) {
estimateMeterReadings(
after: $after,
before: $before,
deviceId: $deviceId,
first: $first,
last: $last,
marketIdentifier: $marketIdentifier,
periodEnd: $periodEnd,
periodStart: $periodStart,
registerId: $registerId
) {
edgeCount
edges {
...MeterReadingEstimationReadingEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"deviceId": "69829844",
"first": 10,
"last": 10,
"marketIdentifier": "32439105",
"periodEnd": "1981-12-15T21:28:27.841295+00:00",
"periodStart": "1973-09-30T12:41:56.779350+00:00",
"registerId": "23840156"
}
Response
{
"data": {
"estimateMeterReadings": {
"edgeCount": 27,
"edges": MeterReadingEstimationReadingEdge,
"pageInfo": PageInfo,
"totalCount": 57
}
}
}
extendedAnnualElectricityConsumption
Type: ExtendedElectricityConsumptionType!
URL: https://api.octopus.energy/v1/graphql/
The annual electricity consumption data for an MPAN, breaking down by day and night consumption, if available.
The possible errors that can be raised are:
- KT-GB-12401: Invalid MPAN supplied.
- KT-GB-12402: Unable to get estimated consumption.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meterpoint to return. |
Query
query ExtendedAnnualElectricityConsumption($mpan: String!) {
extendedAnnualElectricityConsumption(mpan: $mpan) {
eacDay
eacNight
eacStandard
}
}
Variables
{
"mpan": "main-thank-model-forget-power"
}
Response
{
"data": {
"extendedAnnualElectricityConsumption": {
"eacDay": 39.59,
"eacNight": 349.94,
"eacStandard": 761.5
}
}
}
externalAccountEvents
Type: ExternalAccountEventConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get a list of audit account events, of type external, for a given account.
Arguments
| Name | Description |
|---|---|
|
Account number to filter by. |
|
|
|
|
|
|
|
Query
query ExternalAccountEvents(
$accountNumber: String!,
$after: String,
$before: String,
$first: Int,
$last: Int
) {
externalAccountEvents(
accountNumber: $accountNumber,
after: $after,
before: $before,
first: $first,
last: $last
) {
edgeCount
edges {
...ExternalAccountEventConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-D269F2AB",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10
}
Response
{
"data": {
"externalAccountEvents": {
"edgeCount": 29,
"edges": ExternalAccountEventConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 23
}
}
}
fanClubStatus
Type: [FanClubStatus]
URL: https://api.octopus.energy/v1/graphql/
Get current status, historic discounts and future projections for a Fan Club source.
The possible errors that can be raised are:
- KT-CT-6622: Unauthorized.
- KT-CT-4177: Unauthorized.
- KT-CT-8102: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
The ID of the property. |
Query
query FanClubStatus(
$accountNumber: String,
$propertyId: Int
) {
fanClubStatus(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
accountNumbers
catchments
current {
...DiscountDataFragment
}
discountSource
forecast {
...DiscountForecastFragment
}
historic {
...DiscountDataFragment
}
location
name
propertyIds
thresholds {
...ThresholdFragment
}
windFarm
}
}
Variables
{
"accountNumber": "A-AC6AB1CB",
"propertyId": 29139669
}
Response
{
"data": {
"fanClubStatus": [
{
"accountNumbers": "pick-act-grow-follow-physical",
"catchments": "run-direction-north-offer-huge",
"current": DiscountData,
"discountSource": "per-agency-though-forget-assume",
"forecast": DiscountForecast,
"historic": DiscountData,
"location": "generation-time-sometimes-tell-management",
"name": "from-direction-teacher-guess-different",
"propertyIds": 75,
"thresholds": Threshold,
"windFarm": "pattern-language-national-tax-west"
}
]
}
}
fieldSalesVisits
Type: FieldSalesVisitConnectionTypeConnection!
URL: https://api.octopus.energy/v1/graphql/
The history of field sales visits to a specific address.
Deprecated
The 'fieldSalesVisits' field is deprecated.
Please use `appSessions` query instead.
- Marked as deprecated on 2025-08-10.
- Scheduled for removal on or after 2025-10-01.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
The postcode of the addresses to return. |
Query
query FieldSalesVisits(
$after: String,
$before: String,
$first: Int,
$last: Int,
$postcode: String!
) {
fieldSalesVisits(
after: $after,
before: $before,
first: $first,
last: $last,
postcode: $postcode
) {
edgeCount
edges {
...FieldSalesVisitConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"postcode": "relationship-person-miss-claim-life"
}
Response
{
"data": {
"fieldSalesVisits": {
"edgeCount": 70,
"edges": FieldSalesVisitConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 75
}
}
}
fitInstallations
Type: [InstallationType]
URL: https://api.octopus.energy/v1/graphql/
Get details about FIT installations attached to an account, including any meters and previous readings.
The possible errors that can be raised are:
- KT-GB-6811: Account does not exist.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Account to query for FIT installations. |
Query
query FitInstallations($accountNumber: String!) {
fitInstallations(accountNumber: $accountNumber) {
fitId
fitTermsAgreedAt
inspectionAt
meters {
...FitMeterTypeFragment
}
propertyAddress {
...PropertyAddressTypeFragment
}
technologyType
}
}
Variables
{
"accountNumber": "A-255DE850"
}
Response
{
"data": {
"fitInstallations": [
{
"fitId": "85827671",
"fitTermsAgreedAt": "1989-04-08T18:45:36.414633+00:00",
"inspectionAt": "1989-08-07T04:24:10.996194+00:00",
"meters": [FitMeterType],
"propertyAddress": PropertyAddressType,
"technologyType": "ANAEROBIC_DIGESTION"
}
]
}
}
fitSchedule
Type: FitScheduleType
URL: https://api.octopus.energy/v1/graphql/
Get details about a FIT schedule attached to an account.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The number of the account responsible for this FIT schedule. |
|
Unique identifier for the schedule. |
Query
query FitSchedule(
$accountNumber: String!,
$scheduleId: String!
) {
fitSchedule(
accountNumber: $accountNumber,
scheduleId: $scheduleId
) {
acceptedAt
scheduleId
sentAt
temporaryDownloadUrls
}
}
Variables
{
"accountNumber": "A-84A93553",
"scheduleId": "68261447"
}
Response
{
"data": {
"fitSchedule": {
"acceptedAt": "2005-12-01T20:50:03.126213+00:00",
"scheduleId": "7ec7b8db-e533-4247-9b10-6fd53eafae26",
"sentAt": "2010-10-28T12:17:48.193145+00:00",
"temporaryDownloadUrls": ["tend-middle-cold-about-baby"]
}
}
}
flexPlannedDispatches
Type: [SmartFlexDispatch]
URL: https://api.octopus.energy/v1/graphql/
All planned device dispatches in time order.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4340: Unable to fetch planned dispatches.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The SmartFlex device ID to get the planned dispatches for. |
Query
query FlexPlannedDispatches($deviceId: String!) {
flexPlannedDispatches(deviceId: $deviceId) {
end
energyAddedKwh
start
type
}
}
Variables
{
"deviceId": "25114216"
}
Response
{
"data": {
"flexPlannedDispatches": [
{
"end": "2005-05-20T10:31:43.342336+00:00",
"energyAddedKwh": "1.0",
"start": "2020-08-02T13:21:44.850998+00:00",
"type": "SMART"
}
]
}
}
flexSupportedDevices
Type: FlexSupportedDevices
URL: https://api.octopus.energy/v1/graphql/
Devices capable of being registered with SmartFlex.
Arguments
| Name | Description |
|---|---|
|
The device type to get the supported devices for. |
Query
query FlexSupportedDevices($deviceType: KrakenFlexDeviceTypes!) {
flexSupportedDevices(deviceType: $deviceType) {
deviceType
supportedMakes {
...FlexSupportedMakeFragment
}
}
}
Variables
{
"deviceType": "BATTERIES"
}
Response
{
"data": {
"flexSupportedDevices": {
"deviceType": "BATTERIES",
"supportedMakes": FlexSupportedMake
}
}
}
followOnProduct
Type: FollowOnProductType
URL: https://api.octopus.energy/v1/graphql/
Follow on product.
The possible errors that can be raised are:
- KT-GB-9510: At least one agreement ID is required.
- KT-GB-9511: Please, provide either electricity_agreement_id or gas_agreement_id. Both are not accepted.
- KT-GB-9512: No agreement found.
- KT-GB-9513: No follow on product found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
|
Electricity agreement Kraken ID. |
|
Gas agreement Kraken ID. |
|
Query
query FollowOnProduct(
$accountNumber: String!,
$electricityAgreementId: ID,
$gasAgreementId: ID,
$validAt: DateTime!
) {
followOnProduct(
accountNumber: $accountNumber,
electricityAgreementId: $electricityAgreementId,
gasAgreementId: $gasAgreementId,
validAt: $validAt
) {
accountType
activeFrom
activeTo
createdAt
paymentMethod
renewalProducts {
...RenewalProductTypeFragment
}
}
}
Variables
{
"accountNumber": "A-FE0231AD",
"electricityAgreementId": "74924122",
"gasAgreementId": "64584074",
"validAt": "1990-10-08T22:02:24.481963+00:00"
}
Response
{
"data": {
"followOnProduct": {
"accountType": "BUSINESS",
"activeFrom": "2023-10-06T22:22:41.146973+00:00",
"activeTo": "1970-04-05T08:20:15.434129+00:00",
"createdAt": "2021-01-13T09:42:34.083886+00:00",
"paymentMethod": "DIRECT_DEBIT",
"renewalProducts": [RenewalProductType]
}
}
}
fraudMeterPointChecks
Type: FraudMeterPointCheckType
URL: https://api.octopus.energy/v1/graphql/
Check if a given meter point ID is in suspicious meter point IDs list.
Arguments
| Name | Description |
|---|---|
|
The meter point ID. |
Query
query FraudMeterPointChecks($meterPointId: String!) {
fraudMeterPointChecks(meterPointId: $meterPointId) {
isInSuspiciousList
meterPointId
}
}
Variables
{
"meterPointId": "86551358"
}
Response
{
"data": {
"fraudMeterPointChecks": {
"isInSuspiciousList": true,
"meterPointId": "54450356"
}
}
}
fraudRiskLevel
Type: FinancialRiskLevelType
URL: https://api.octopus.energy/v1/graphql/
Check if a given ID and type have a financial risk level.
Arguments
| Name | Description |
|---|---|
|
The type of object the ID represents. |
|
The ID to be checked. |
Query
query FraudRiskLevel(
$identifierType: String!,
$identifierValue: String!
) {
fraudRiskLevel(
identifierType: $identifierType,
identifierValue: $identifierValue
) {
identifierType
identifierValue
isInRiskList
riskLevel
}
}
Variables
{
"identifierType": "law-face-after-professor-money",
"identifierValue": "notice-he-study-understand-concern"
}
Response
{
"data": {
"fraudRiskLevel": {
"identifierType": "car-several-money-me-defense",
"identifierValue": "88683113",
"isInRiskList": true,
"riskLevel": "1.0"
}
}
}
gasAgreement
Type: AgreementInterface
URL: https://api.octopus.energy/v1/graphql/
Get a gas agreement.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
ID of the gas agreement. |
Query
query GasAgreement($id: ID!) {
gasAgreement(id: $id) {
agreedFrom
agreedTo
id
isRevoked
rescissionDeadlineAt
validFrom
validTo
}
}
Variables
{
"id": "90940264"
}
Response
{
"data": {
"gasAgreement": {
"agreedFrom": "1998-03-31T08:14:58.595537+00:00",
"agreedTo": "2006-06-08T00:33:41.218128+00:00",
"id": 68188090,
"isRevoked": true,
"rescissionDeadlineAt": "2014-10-11T21:27:37.240868+00:00",
"validFrom": "1996-01-10T10:56:25.969944+00:00",
"validTo": "1973-07-19T03:43:24.710793+00:00"
}
}
}
gasMeterPointDetails
Type: GasMeterPointDetails
URL: https://api.octopus.energy/v1/graphql/
Search for the meter point details with given MPRN using Xoserve switching API.
The possible errors that can be raised are:
- KT-GB-6635: The provided MPRN is not valid.
- KT-GB-6630: We can't communicate with our address database right now to look up your address. Please try again.
- KT-GB-6636: The provided MPRN is linked to an extinct meterpoint.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPRN of the meterpoint. |
Query
query GasMeterPointDetails($mprn: String!) {
gasMeterPointDetails(mprn: $mprn) {
relAddress {
...UniqueRELAddressTypeFragment
}
technicalDetails {
...GasMeterTechnicalDetailsFragment
}
}
}
Variables
{
"mprn": "tonight-road-each-maintain-light"
}
Response
{
"data": {
"gasMeterPointDetails": {
"relAddress": UniqueRELAddressType,
"technicalDetails": GasMeterTechnicalDetails
}
}
}
gasMeterReadings
Type: GasMeterReadingConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Fetch gas meter readings for a given account and meter
This field is a connection type. Connections are used to implement cursor based pagination.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Only fetch meter readings made since this date |
|
Only fetch meter readings made until this date |
Query
query GasMeterReadings(
$accountNumber: String!,
$after: String,
$before: String,
$eventTypes: [MeterReadingEventType],
$first: Int,
$last: Int,
$meterId: String!,
$readFrom: DateTime,
$readTo: DateTime
) {
gasMeterReadings(
accountNumber: $accountNumber,
after: $after,
before: $before,
eventTypes: $eventTypes,
first: $first,
last: $last,
meterId: $meterId,
readFrom: $readFrom,
readTo: $readTo
) {
edgeCount
edges {
...GasMeterReadingConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-178A0938",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"eventTypes": "CUSTOMER",
"first": 10,
"last": 10,
"meterId": "17956124",
"readFrom": "1997-06-27T17:11:22.465521+00:00",
"readTo": "2020-02-11T03:55:16.270162+00:00"
}
Response
{
"data": {
"gasMeterReadings": {
"edgeCount": 97,
"edges": GasMeterReadingConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 30
}
}
}
gasMeterpoint
Type: GasMeterTechnicalDetails
URL: https://api.octopus.energy/v1/graphql/
Search for the meterpoint with given MPRN using Xoserve switching API.
The possible errors that can be raised are:
- KT-GB-6635: The provided MPRN is not valid.
- KT-GB-6630: We can't communicate with our address database right now to look up your address. Please try again.
- KT-GB-6636: The provided MPRN is linked to an extinct meterpoint.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPRN of the meterpoint. |
Query
query GasMeterpoint($mprn: String!) {
gasMeterpoint(mprn: $mprn) {
currentSupplierId
currentSupplierRegEffectiveDate
dmq
gasTransportId
ldzId
marketSectorCode
meterCapacity
meterMechanismCode
meterNumberOfDials
meterSerialNumber
mpaq
mprn
ndmq
pendingSupplierRegEffectiveDate
smartEquipmentTechnicalCode
}
}
Variables
{
"mprn": "hope-house-lay-concern-view"
}
Response
{
"data": {
"gasMeterpoint": {
"currentSupplierId": "54304251",
"currentSupplierRegEffectiveDate": "agreement-baby-TV-whether-education",
"dmq": "1.0",
"gasTransportId": "74977755",
"ldzId": "47544119",
"marketSectorCode": "one-road-television-into-stock",
"meterCapacity": "of-environment-matter-as-shake",
"meterMechanismCode": "cost-agreement-draw-if-suggest",
"meterNumberOfDials": "rock-condition-bad-however-opportunity",
"meterSerialNumber": "voice-attention-stop-front-quickly",
"mpaq": "1.0",
"mprn": "practice-movement-reason-despite-idea",
"ndmq": "1.0",
"pendingSupplierRegEffectiveDate": "fish-office-authority-too-small",
"smartEquipmentTechnicalCode": "house-face-article-you-yet"
}
}
}
gasPrepayLedgers
Type: PrepayLedgersType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-GB-6211: Account does not exist.
- KT-GB-6212: Meter does not exist.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query GasPrepayLedgers(
$accountNumber: String!,
$mprn: String!,
$serialNumber: String!
) {
gasPrepayLedgers(
accountNumber: $accountNumber,
mprn: $mprn,
serialNumber: $serialNumber
) {
creditLedger {
...SupplementaryLedgerTypeFragment
}
debtLedger {
...SupplementaryLedgerTypeFragment
}
paymentLedger {
...PrepayPaymentLedgerTypeFragment
}
}
}
Variables
{
"accountNumber": "A-CC836662",
"mprn": "perhaps-manage-shake-purpose-sign",
"serialNumber": "everyone-just-west-central-response"
}
Response
{
"data": {
"gasPrepayLedgers": {
"creditLedger": SupplementaryLedgerType,
"debtLedger": SupplementaryLedgerType,
"paymentLedger": PrepayPaymentLedgerType
}
}
}
getActiveCosLossProcessesForAccount
Type: [ActiveCosLossProcess]
URL: https://api.octopus.energy/v1/graphql/
Fetch all the active COS loss processes for the account.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number of the account of which to query active COS loss processes. |
Query
query GetActiveCosLossProcessesForAccount($accountNumber: String!) {
getActiveCosLossProcessesForAccount(accountNumber: $accountNumber) {
addressLine1
addressLine2
addressLine3
cosLossProcessFuelType
cosLossProcessId
hasOpenErroneousTransfer
postcode
supplyEndDate
}
}
Variables
{
"accountNumber": "A-09081802"
}
Response
{
"data": {
"getActiveCosLossProcessesForAccount": [
{
"addressLine1": "house-month-design-hold-measure",
"addressLine2": "player-size-cover-pass-measure",
"addressLine3": "street-glass-husband-million-seat",
"cosLossProcessFuelType": "ELECTRICITY",
"cosLossProcessId": 38837183,
"hasOpenErroneousTransfer": true,
"postcode": "argue-a-pretty-idea-stay",
"supplyEndDate": "1984-06-16"
}
]
}
}
getConstantines
Type: ConstantineSpawnData
URL: https://api.octopus.energy/v1/graphql/
Octoplus Snap constantines currently available for a given account_user.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Account number for the Octoplus-enrolled account. |
Query
query GetConstantines($accountNumber: String!) {
getConstantines(accountNumber: $accountNumber) {
cacheExpiry
constantines {
...ConstantineSpawnFragment
}
}
}
Variables
{
"accountNumber": "A-8859073B"
}
Response
{
"data": {
"getConstantines": {
"cacheExpiry": "1983-05-22T23:52:54.494375+00:00",
"constantines": [ConstantineSpawn]
}
}
}
getEnergyIqData
Type: EnergyIqDataType
URL: https://api.octopus.energy/v1/graphql/
Get energy IQ data for a specific account. It can either be the current record for energy IQ score or a score estimation including ev/heatpump/solar.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The number of the account to get energy IQ data for. |
|
Should the energy IQ estimation data include EV. |
|
Should the energy IQ estimation data include heatpump. |
|
Should the energy IQ estimation data include solar. |
|
Is the query for the current energy IQ record? If true no 'include' parameters may be provided. |
Query
query GetEnergyIqData(
$accountNumber: String!,
$includeEv: Boolean,
$includeHeatpump: Boolean,
$includeSolar: Boolean,
$isCurrentRecord: Boolean
) {
getEnergyIqData(
accountNumber: $accountNumber,
includeEv: $includeEv,
includeHeatpump: $includeHeatpump,
includeSolar: $includeSolar,
isCurrentRecord: $isCurrentRecord
) {
canAddHeatpump
canAddSolar
currentBill
elecCarRate
enqScore
hasEv
hasHeatpump
hasSolar
isCurrentRecord
newBill
}
}
Variables
{
"accountNumber": "A-3F547195",
"includeEv": true,
"includeHeatpump": true,
"includeSolar": true,
"isCurrentRecord": true
}
Response
{
"data": {
"getEnergyIqData": {
"canAddHeatpump": true,
"canAddSolar": true,
"currentBill": 188.73,
"elecCarRate": 521.98,
"enqScore": 43,
"hasEv": true,
"hasHeatpump": true,
"hasSolar": true,
"isCurrentRecord": true,
"newBill": 629.68
}
}
}
getOnSiteJobsAppointmentByExternalReference
Type: OnSiteJobsAppointmentType
URL: https://api.octopus.energy/v1/graphql/
Get appointment by external reference and agent.
Arguments
| Name | Description |
|---|---|
|
The agent for the appointment. |
|
The external reference of the appointment to return. |
Query
query GetOnSiteJobsAppointmentByExternalReference(
$agent: OnSiteJobsAgent!,
$externalReference: String!
) {
getOnSiteJobsAppointmentByExternalReference(
agent: $agent,
externalReference: $externalReference
) {
agent
appointmentActions {
...OnSiteJobsAppointmentActionConnectionTypeConnectionFragment
}
assets {
...OnSiteJobsAssetConnectionTypeConnectionFragment
}
cancellationCategory
cancellationSubCategory
comments
commsStrategy
createdAt
deadlineDate
endAt
externalJobTypeMapping {
...OnSiteJobsExternalJobTypeMappingTypeFragment
}
externalReference
id
jobDetails
jobNotes
krakenWorkCategory
preferredStartDate
startAt
status
}
}
Variables
{
"agent": "GENERIC_AGENT",
"externalReference": "bit-reality-white-school-might"
}
Response
{
"data": {
"getOnSiteJobsAppointmentByExternalReference": {
"agent": "GENERIC_AGENT",
"appointmentActions": OnSiteJobsAppointmentActionConnectionTypeConnection,
"assets": OnSiteJobsAssetConnectionTypeConnection,
"cancellationCategory": "CANCELLED_BY_CUSTOMER",
"cancellationSubCategory": "four-call-air-sign-forget",
"comments": "buy-lawyer-current-military-sea",
"commsStrategy": "SEND_ALL",
"createdAt": "1975-10-23T11:06:41.420345+00:00",
"deadlineDate": "2007-05-03",
"endAt": "1982-10-11T16:45:10.946479+00:00",
"externalJobTypeMapping": OnSiteJobsExternalJobTypeMappingType,
"externalReference": "east-bill-social-father-himself",
"id": "0508d45d-1afb-4c0a-8be5-40f885638516",
"jobDetails": {"key": "value"},
"jobNotes": {"key": "value"},
"krakenWorkCategory": "EXCHANGE",
"preferredStartDate": "1996-02-24",
"startAt": "1996-01-13T17:14:00.128039+00:00",
"status": "PENDING"
}
}
}
getOnSiteJobsAppointmentById
Type: OnSiteJobsAppointmentType
URL: https://api.octopus.energy/v1/graphql/
Get a specific appointment by Kraken ID.
Arguments
| Name | Description |
|---|---|
|
The Kraken ID of the appointment to return. |
Query
query GetOnSiteJobsAppointmentById($appointmentId: UUID) {
getOnSiteJobsAppointmentById(appointmentId: $appointmentId) {
agent
appointmentActions {
...OnSiteJobsAppointmentActionConnectionTypeConnectionFragment
}
assets {
...OnSiteJobsAssetConnectionTypeConnectionFragment
}
cancellationCategory
cancellationSubCategory
comments
commsStrategy
createdAt
deadlineDate
endAt
externalJobTypeMapping {
...OnSiteJobsExternalJobTypeMappingTypeFragment
}
externalReference
id
jobDetails
jobNotes
krakenWorkCategory
preferredStartDate
startAt
status
}
}
Variables
{
"appointmentId": "b28b0cc4-5c31-4d57-8a38-1ccdf39d9842"
}
Response
{
"data": {
"getOnSiteJobsAppointmentById": {
"agent": "GENERIC_AGENT",
"appointmentActions": OnSiteJobsAppointmentActionConnectionTypeConnection,
"assets": OnSiteJobsAssetConnectionTypeConnection,
"cancellationCategory": "CANCELLED_BY_CUSTOMER",
"cancellationSubCategory": "thank-attention-quality-read-dinner",
"comments": "window-discussion-practice-surface-coach",
"commsStrategy": "SEND_ALL",
"createdAt": "1970-10-06T05:03:22.356551+00:00",
"deadlineDate": "1975-06-07",
"endAt": "1986-03-07T15:26:52.582078+00:00",
"externalJobTypeMapping": OnSiteJobsExternalJobTypeMappingType,
"externalReference": "wall-ready-also-company-record",
"id": "6f487bc3-636f-418f-86ce-8aea3e1fc7ff",
"jobDetails": {"key": "value"},
"jobNotes": {"key": "value"},
"krakenWorkCategory": "EXCHANGE",
"preferredStartDate": "1979-10-02",
"startAt": "1987-12-07T03:24:32.285814+00:00",
"status": "PENDING"
}
}
}
getOnSiteJobsAppointmentSlots
Type: OnSiteJobsAppointmentSlotResultsType
URL: https://api.octopus.energy/v1/graphql/
Get appointment slot results using appointment booking session ID.
Arguments
| Name | Description |
|---|---|
|
Appointment booking session ID to fetch slots for. ID can be obtained via |
|
Appointment date (inclusive) to fetch slots from. |
Query
query GetOnSiteJobsAppointmentSlots(
$appointmentBookingSessionId: UUID!,
$appointmentDate: Date!
) {
getOnSiteJobsAppointmentSlots(
appointmentBookingSessionId: $appointmentBookingSessionId,
appointmentDate: $appointmentDate
) {
isComplete
slots {
...OnSiteJobsAppointmentSlotTypeFragment
}
}
}
Variables
{
"appointmentBookingSessionId": "ba6e7470-f992-4ea4-b0f0-89ae2f6df0e5",
"appointmentDate": "1994-06-23"
}
Response
{
"data": {
"getOnSiteJobsAppointmentSlots": {
"isComplete": true,
"slots": OnSiteJobsAppointmentSlotType
}
}
}
getOnSiteJobsCheckResults
Type: OnSiteJobsCheckResultsType
URL: https://api.octopus.energy/v1/graphql/
Get check results for creating requests and appointments.
Arguments
| Name | Description |
|---|---|
|
Job type for appointment checks. |
|
Supply point identifier to market name mapping. If this is provided, |
|
List of internal IDs of supply points. If this is provided, |
Query
query GetOnSiteJobsCheckResults(
$jobType: String,
$supplyPointIdentifierToMarketNameMapping: [SupplyPointIdentifierToMarketNameMappingInput],
$supplyPointInternalIds: [Int]
) {
getOnSiteJobsCheckResults(
jobType: $jobType,
supplyPointIdentifierToMarketNameMapping: $supplyPointIdentifierToMarketNameMapping,
supplyPointInternalIds: $supplyPointInternalIds
) {
appointmentCheckResults {
...CheckResultTypeFragment
}
canCreateAppointment
canCreateRequest
hasAppointmentWarnings
hasRequestWarnings
requestCheckResults {
...CheckResultTypeFragment
}
}
}
Variables
{
"jobType": "win-low-color-fill-drop",
"supplyPointIdentifierToMarketNameMapping": SupplyPointIdentifierToMarketNameMappingInput,
"supplyPointInternalIds": [43]
}
Response
{
"data": {
"getOnSiteJobsCheckResults": {
"appointmentCheckResults": [CheckResultType],
"canCreateAppointment": true,
"canCreateRequest": true,
"hasAppointmentWarnings": true,
"hasRequestWarnings": true,
"requestCheckResults": [CheckResultType]
}
}
}
getOnSiteJobsJobTypes
Type: [OnSiteJobsJobTypeType]
URL: https://api.octopus.energy/v1/graphql/
Get available job types for an on-site jobs request.
Arguments
| Name | Description |
|---|---|
|
The ID of the request for which to fetch available job types. |
|
Work category to filter job types by. If it's left as blank, all job types will be returned. |
Query
query GetOnSiteJobsJobTypes(
$requestId: UUID!,
$workCategory: OnSiteJobsWorkCategory
) {
getOnSiteJobsJobTypes(
requestId: $requestId,
workCategory: $workCategory
) {
id
name
}
}
Variables
{
"requestId": "6e3b07bc-1281-44e1-aa33-8856f0438e76",
"workCategory": "EXCHANGE"
}
Response
{
"data": {
"getOnSiteJobsJobTypes": [
{
"id": "46163248",
"name": "tree-grow-edge-myself-very"
}
]
}
}
getOnSiteJobsRequestById
Type: OnSiteJobsRequestType
URL: https://api.octopus.energy/v1/graphql/
Get a specific request by ID.
Arguments
| Name | Description |
|---|---|
|
The ID of the request to return. |
Query
query GetOnSiteJobsRequestById($requestId: UUID) {
getOnSiteJobsRequestById(requestId: $requestId) {
account
agent
appointments {
...OnSiteJobsAppointmentConnectionTypeConnectionFragment
}
assets {
...OnSiteJobsAssetConnectionTypeConnectionFragment
}
comment
createdBy
externalReference
id
isEmergency
marketSupplyPoints {
...SupplyPointConnectionTypeConnectionFragment
}
overallActionsStatus
property {
...PropertyTypeFragment
}
reason
requestActions {
...OnSiteJobsRequestActionConnectionTypeConnectionFragment
}
status
subReason
}
}
Variables
{
"requestId": "37ae1e70-cdaf-4928-9abe-a94556b4aa06"
}
Response
{
"data": {
"getOnSiteJobsRequestById": {
"account": "book-whether-participant-item-major",
"agent": "nearly-to-police-lead-hundred",
"appointments": OnSiteJobsAppointmentConnectionTypeConnection,
"assets": OnSiteJobsAssetConnectionTypeConnection,
"comment": "usually-risk-set-get-per",
"createdBy": 28,
"externalReference": "little-identify-movement-edge-live",
"id": "aebab045-9efc-4cbe-9a24-30b8900094b6",
"isEmergency": true,
"marketSupplyPoints": SupplyPointConnectionTypeConnection,
"overallActionsStatus": "PENDING",
"property": PropertyType,
"reason": "instead-agent-remember-create-where",
"requestActions": OnSiteJobsRequestActionConnectionTypeConnection,
"status": "CANCELLED",
"subReason": "tax-half-organization-speak-bar"
}
}
}
getOnSiteJobsRequests
Type: OnSiteJobsRequestConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Filter On-Site Jobs Requests.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
A list of statuses to filter requests by. |
|
List of internal IDs of supply points to filter requests by. If this is provided, |
|
A list of supply point identifiers to filter requests by. If this is provided, |
Query
query GetOnSiteJobsRequests(
$after: String,
$before: String,
$first: Int,
$last: Int,
$statuses: [OnSiteJobsRequestStatus],
$supplyPointInternalIds: [Int],
$supplyPointsToMarketNamesMapping: [SupplyPointIdentifierToMarketNameMappingInput]
) {
getOnSiteJobsRequests(
after: $after,
before: $before,
first: $first,
last: $last,
statuses: $statuses,
supplyPointInternalIds: $supplyPointInternalIds,
supplyPointsToMarketNamesMapping: $supplyPointsToMarketNamesMapping
) {
edgeCount
edges {
...OnSiteJobsRequestConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"statuses": "CANCELLED",
"supplyPointInternalIds": [86],
"supplyPointsToMarketNamesMapping": SupplyPointIdentifierToMarketNameMappingInput
}
Response
{
"data": {
"getOnSiteJobsRequests": {
"edgeCount": 69,
"edges": OnSiteJobsRequestConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 35
}
}
}
getProjectedRegionalCarbonIntensity
Type: ProjectedRegionalCarbonIntensityType
URL: https://api.octopus.energy/v1/graphql/
Get regional carbon intensity forecast.
The possible errors that can be raised are:
- KT-GB-1301: The provided postcode is not a UK postcode.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The postcode for which to fetch regional carbon intensity forecast. |
Query
query GetProjectedRegionalCarbonIntensity($postcode: String!) {
getProjectedRegionalCarbonIntensity(postcode: $postcode) {
projectedRegionalCarbonIntensity {
...ProjectedRegionalCarbonIntensitiesTypeFragment
}
}
}
Variables
{
"postcode": "without-commercial-prepare-as-board"
}
Response
{
"data": {
"getProjectedRegionalCarbonIntensity": {
"projectedRegionalCarbonIntensity": [ProjectedRegionalCarbonIntensitiesType]
}
}
}
getSnaps
Type: GetSnapsResponseType
URL: https://api.octopus.energy/v1/graphql/
Get snap for given account user.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Account number for the Octoplus-enrolled account. |
Query
query GetSnaps($accountNumber: String!) {
getSnaps(accountNumber: $accountNumber) {
sets {
...SnapSetTypeFragment
}
totalPrizeEntries
}
}
Variables
{
"accountNumber": "A-A85DC849"
}
Response
{
"data": {
"getSnaps": {
"sets": [SnapSetType],
"totalPrizeEntries": 92
}
}
}
getSolarGenerationEstimate
Type: SolarGenerationEstimatesType
URL: https://api.octopus.energy/v1/graphql/
Get an estimate of the number of kWh an average domestic solar installation would produce for a given postcode.
The possible errors that can be raised are:
- KT-GB-1301: The provided postcode is not a UK postcode.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The start date from which to pull a weeks worth of data. |
|
The postcode area to fetch estimate for. |
Query
query GetSolarGenerationEstimate(
$fromDate: Date!,
$postcode: String!
) {
getSolarGenerationEstimate(
fromDate: $fromDate,
postcode: $postcode
) {
solarGenerationEstimates {
...SolarGenerationEstimateTypeFragment
}
}
}
Variables
{
"fromDate": "2013-02-22",
"postcode": "attention-business-yourself-wind-area"
}
Response
{
"data": {
"getSolarGenerationEstimate": {
"solarGenerationEstimates": [SolarGenerationEstimateType]
}
}
}
getSpringElectricityComparison
Type: SpringElectricityComparisonType
URL: https://api.octopus.energy/v1/graphql/
Get spring clock change electricity consumption comparison data for a specific account and property.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to get comparison data for. |
|
The ID for the specific property to get comparison data for. |
Query
query GetSpringElectricityComparison(
$accountNumber: String!,
$propertyId: Int!
) {
getSpringElectricityComparison(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
absoluteReductionPercentage
isReduction
postPeakPercentage
priorPeakPercentage
relativeReductionPercentage
}
}
Variables
{
"accountNumber": "A-24BA7BF5",
"propertyId": 43871809
}
Response
{
"data": {
"getSpringElectricityComparison": {
"absoluteReductionPercentage": 658.62,
"isReduction": true,
"postPeakPercentage": 980.52,
"priorPeakPercentage": 477.79,
"relativeReductionPercentage": 648.44
}
}
}
getWinterGasComparison
Type: WinterGasComparisonResultType
URL: https://api.octopus.energy/v1/graphql/
Get gas consumption comparison data for a specific account and property.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to get comparison data for. |
|
The ID for the specific property to get comparison data for. |
Query
query GetWinterGasComparison(
$accountNumber: String!,
$propertyId: Int!
) {
getWinterGasComparison(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
winterGasComparison {
...WinterGasComparisonTypeFragment
}
}
}
Variables
{
"accountNumber": "A-9DF306E2",
"propertyId": 64725226
}
Response
{
"data": {
"getWinterGasComparison": {
"winterGasComparison": [WinterGasComparisonType]
}
}
}
goodsProducts
Type: GoodsProductConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
List Goods products given a market.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Code of the products to filter by. |
|
|
|
|
|
Market name of the products to list. |
|
Types of the products to filter by. |
Query
query GoodsProducts(
$after: String,
$before: String,
$code: [String],
$first: Int,
$last: Int,
$marketName: String!,
$productType: [String]
) {
goodsProducts(
after: $after,
before: $before,
code: $code,
first: $first,
last: $last,
marketName: $marketName,
productType: $productType
) {
edgeCount
edges {
...GoodsProductConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"code": ["career-majority-attorney-hard-model"],
"first": 10,
"last": 10,
"marketName": "education-take-camera-scientist-visit",
"productType": ["up-piece-discover-game-music"]
}
Response
{
"data": {
"goodsProducts": {
"edgeCount": 11,
"edges": GoodsProductConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 20
}
}
}
goodsPurchases
Type: [GoodsPurchase]
URL: https://api.octopus.energy/v1/graphql/
List purchases for an account.
Arguments
| Name | Description |
|---|---|
|
The account number. |
Query
query GoodsPurchases($accountNumber: String!) {
goodsPurchases(accountNumber: $accountNumber) {
clientParams
code
goodsGrants {
...GoodsGrantFragment
}
goodsSaleItems {
...GoodsSaleItemFragment
}
ledgerNumber
marketName
marketParams
}
}
Variables
{
"accountNumber": "A-49CBA6E4"
}
Response
{
"data": {
"goodsPurchases": [
{
"clientParams": {"key": "value"},
"code": "argue-type-employee-arm-official",
"goodsGrants": [GoodsGrant],
"goodsSaleItems": [GoodsSaleItem],
"ledgerNumber": "affect-treatment-land-human-least",
"marketName": "stock-network-half-dinner-management",
"marketParams": {"key": "value"}
}
]
}
}
goodsQuotes
Type: [GoodsQuote]
URL: https://api.octopus.energy/v1/graphql/
List quotes given an account number or retrieve a Goods quote given a quote code.
The possible errors that can be raised are:
- KT-CT-8204: Invalid arguments.
- KT-CT-8223: Unauthorized.
- KT-CT-8201: Received an invalid quoteId.
- KT-CT-8204: Invalid arguments.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
The quote code. |
Query
query GoodsQuotes(
$accountNumber: String,
$quoteCode: String
) {
goodsQuotes(
accountNumber: $accountNumber,
quoteCode: $quoteCode
) {
code
goodsQuotedProducts {
...GoodsQuotedProductFragment
}
hasQuoteExpired
id
quotedAt
totalNetAmount
}
}
Variables
{
"accountNumber": "A-952EF4FD",
"quoteCode": "trial-half-yard-push-gas"
}
Response
{
"data": {
"goodsQuotes": [
{
"code": "goal-main-be-action-call",
"goodsQuotedProducts": [GoodsQuotedProduct],
"hasQuoteExpired": true,
"id": "17076524",
"quotedAt": "2011-09-16T13:34:01.884450+00:00",
"totalNetAmount": 14
}
]
}
}
heatPumpControllerConfiguration
Type: ControllerAndZoneConfiguration
URL: https://api.octopus.energy/v1/graphql/
Heat pump controller, zones and sensor configuration.
The possible errors that can be raised are:
- KT-CT-4305: Unable to fetch heating controller configuration.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'heatPumpControllerConfiguration' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query HeatPumpControllerConfiguration(
$accountNumber: String!,
$euid: ID!
) {
heatPumpControllerConfiguration(
accountNumber: $accountNumber,
euid: $euid
) {
controller {
...ControllerConfigurationFragment
}
heatPump {
...HeatPumpConfigurationFragment
}
zones {
...ZoneInformationFragment
}
}
}
Variables
{
"accountNumber": "A-FDAFDD31",
"euid": "56231548"
}
Response
{
"data": {
"heatPumpControllerConfiguration": {
"controller": ControllerConfiguration,
"heatPump": HeatPumpConfiguration,
"zones": [ZoneInformation]
}
}
}
heatPumpControllerStatus
Type: ControllerStatus
URL: https://api.octopus.energy/v1/graphql/
Retrieve the heat pump controller device status.
The possible errors that can be raised are:
- KT-CT-4303: Unable to fetch device status.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'heatPumpControllerStatus' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query HeatPumpControllerStatus(
$accountNumber: String!,
$euid: ID!
) {
heatPumpControllerStatus(
accountNumber: $accountNumber,
euid: $euid
) {
sensors {
...SensorStatusFragment
}
zones {
...ZoneStatusFragment
}
}
}
Variables
{
"accountNumber": "A-4FED1A4A",
"euid": "18685458"
}
Response
{
"data": {
"heatPumpControllerStatus": {
"sensors": [SensorStatus],
"zones": [ZoneStatus]
}
}
}
heatPumpDevice
Type: HeatPumpDeviceType
URL: https://api.octopus.energy/v1/graphql/
The currently active heat pump device.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query HeatPumpDevice(
$accountNumber: String!,
$propertyId: Int!
) {
heatPumpDevice(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
krakenflexDeviceId
params {
...HeatPumpParamsTypeFragment
}
provider
}
}
Variables
{
"accountNumber": "A-592E4280",
"propertyId": 59540373
}
Response
{
"data": {
"heatPumpDevice": {
"krakenflexDeviceId": "99384240",
"params": HeatPumpParamsType,
"provider": "BYD"
}
}
}
heatPumpStatus
Type: HeatPumpStatusType
URL: https://api.octopus.energy/v1/graphql/
A heat pump registered with KrakenFlex for a given account
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4360: Device status could not be fetched.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query HeatPumpStatus($accountNumber: String!) {
heatPumpStatus(accountNumber: $accountNumber) {
climateControlStatus {
...ClimateControlDetailsTypeFragment
}
isConnected
waterTemperatureStatus {
...WaterTemperatureDetailsTypeFragment
}
}
}
Variables
{
"accountNumber": "A-81C0EB81"
}
Response
{
"data": {
"heatPumpStatus": {
"climateControlStatus": ClimateControlDetailsType,
"isConnected": true,
"waterTemperatureStatus": WaterTemperatureDetailsType
}
}
}
heatPumpVariants
Type: [HeatPumpVariantsType]
URL: https://api.octopus.energy/v1/graphql/
All heat pumps and their details.
The possible errors that can be raised are:
- KT-CT-4361: No heat pumps of that make found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Only return (non-) deprecated heat pumps. |
|
Only return heat pumps of a specific make. |
Query
query HeatPumpVariants(
$isDeprecated: Boolean,
$make: String
) {
heatPumpVariants(
isDeprecated: $isDeprecated,
make: $make
) {
make
models {
...HeatPumpVariantModelsTypeFragment
}
}
}
Variables
{
"isDeprecated": true,
"make": "many-quality-herself-scene-generation"
}
Response
{
"data": {
"heatPumpVariants": [
{
"make": "water-city-however-hope-several",
"models": [HeatPumpVariantModelsType]
}
]
}
}
inboundCallAverageWaitTime
Type: InboundCallAverageWaitTimeType
URL: https://api.octopus.energy/v1/graphql/
Get the average wait time for an inbound call.
Query
query InboundCallAverageWaitTime {
inboundCallAverageWaitTime {
recent
yesterday
}
}
Response
{
"data": {
"inboundCallAverageWaitTime": {
"recent": 86,
"yesterday": 77
}
}
}
inkCommsTemplate
Type: String!
URL: https://api.octopus.energy/v1/graphql/
Fetch the content of a given comms template name.
The possible errors that can be raised are:
- KT-CT-7648: The comms template was not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The identifier of the comms template. |
Query
query InkCommsTemplate($templateIdentifier: String!) {
inkCommsTemplate(templateIdentifier: $templateIdentifier)
}
Variables
{
"templateIdentifier": "70872038"
}
Response
{
"data": {
"inkCommsTemplate": "fear-need-teach-my-president"
}
}
inkConversation
Type: InkConversation!
URL: https://api.octopus.energy/v1/graphql/
Get the Ink conversation for a given account.
The possible errors that can be raised are:
- KT-CT-7612: The Ink conversation was not found.
- KT-CT-4177: Unauthorized.
- KT-CT-7610: No Ink conversation for account.
- KT-CT-7617: Must supply account number or relay id to get a conversation.
- KT-CT-7638: Invalid conversation ID.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
The conversation's relay id. |
Query
query InkConversation(
$accountNumber: String,
$conversationRelayId: String
) {
inkConversation(
accountNumber: $accountNumber,
conversationRelayId: $conversationRelayId
) {
accountNumber
accountUsers {
...AccountUserTypeFragment
}
buckets {
...InkBucketFragment
}
contactChannelIdentities {
...InkContactChannelIdentitiesFragment
}
events {
...InkConversationEventsConnectionFragment
}
id
status
tags {
...InkTagFragment
}
}
}
Variables
{
"accountNumber": "A-559835E7",
"conversationRelayId": "47382436"
}
Response
{
"data": {
"inkConversation": {
"accountNumber": "A-3F5F81F4",
"accountUsers": [AccountUserType],
"buckets": [InkBucket],
"contactChannelIdentities": InkContactChannelIdentities,
"events": InkConversationEventsConnection,
"id": "93594556",
"status": "OPEN",
"tags": [InkTag]
}
}
}
inkMessage
Type: InkMessage!
URL: https://api.octopus.energy/v1/graphql/
Get the content for a given message.
The possible errors that can be raised are:
- KT-CT-7611: The message was not found.
- KT-CT-7638: Invalid conversation ID.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The message's relay id. |
Query
query InkMessage($messageRelayId: String!) {
inkMessage(messageRelayId: $messageRelayId) {
... on InkEmail {
...InkEmailFragment
}
... on InkGenericMessage {
...InkGenericMessageFragment
}
... on InkLine {
...InkLineFragment
}
... on InkLiveChatMessage {
...InkLiveChatMessageFragment
}
... on InkPost {
...InkPostFragment
}
... on InkSMS {
...InkSMSFragment
}
... on InkTwilioWhatsApp {
...InkTwilioWhatsAppFragment
}
... on InkWhatsApp {
...InkWhatsAppFragment
}
}
}
Variables
{
"messageRelayId": "57475850"
}
Response
{
"data": {
"inkMessage": InkEmail
}
}
inkMessageAttributes
Type: InkMessageAttributes!
URL: https://api.octopus.energy/v1/graphql/
Get attributes of a message at time of query.
The possible errors that can be raised are:
- KT-CT-7611: The message was not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The message's vendor. |
|
The message's vendor id. |
Query
query InkMessageAttributes(
$vendor: String!,
$vendorId: String!
) {
inkMessageAttributes(
vendor: $vendor,
vendorId: $vendorId
) {
accountType
accounts
buckets
conversationId
hourOccurredAt
hoursWaiting
isAssignedToUserBucket
isFirstFromContact
isNewThread
opsTeam
recentlyReceivedAutoReplies
replyToCommsSms
weekDayOccurredAt
}
}
Variables
{
"vendor": "civil-wide-ball-affect-less",
"vendorId": "66625115"
}
Response
{
"data": {
"inkMessageAttributes": {
"accountType": "say-reality-physical-entire-bad",
"accounts": "never-on-area-building-soldier",
"buckets": ["everything-thought-song-Mrs-school"],
"conversationId": 50688880,
"hourOccurredAt": 22,
"hoursWaiting": 17,
"isAssignedToUserBucket": true,
"isFirstFromContact": true,
"isNewThread": true,
"opsTeam": "sell-second-also-skill-color",
"recentlyReceivedAutoReplies": "speak-as-build-a-room",
"replyToCommsSms": "throughout-evening-now-opportunity-my",
"weekDayOccurredAt": 32
}
}
}
inkMessageTextContent
Type: String!
URL: https://api.octopus.energy/v1/graphql/
Fetch the text content of a given message.
The possible errors that can be raised are:
- KT-CT-7611: The message was not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The message's id or relay id. |
Query
query InkMessageTextContent($messageId: ID!) {
inkMessageTextContent(messageId: $messageId)
}
Variables
{
"messageId": "85052781"
}
Response
{
"data": {
"inkMessageTextContent": "use-ten-paper-husband-west"
}
}
internalCompanies
Type: InternalCompanyConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get all internal companies.
Query
query InternalCompanies(
$after: String,
$before: String,
$first: Int,
$last: Int
) {
internalCompanies(
after: $after,
before: $before,
first: $first,
last: $last
) {
edgeCount
edges {
...InternalCompanyConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10
}
Response
{
"data": {
"internalCompanies": {
"edgeCount": 75,
"edges": InternalCompanyConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 16
}
}
}
internalCompany
Type: InternalCompanyType
URL: https://api.octopus.energy/v1/graphql/
Get an internal company by a set of criteria. Criteria will be added as needed, check documentation for the criteria object to see what is currently supported.
The possible errors that can be raised are:
- KT-CT-14401: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Criteria to identify the internal company. |
Query
query InternalCompany($criteria: SearchCriteriaInput!) {
internalCompany(criteria: $criteria) {
displayableNumber
id
legalAddress {
...RichAddressTypeFragment
}
name
primaryRegistrationNumber
primaryTaxIdentifierNumber
secondaryRegistrationNumber
}
}
Variables
{
"criteria": SearchCriteriaInput
}
Response
{
"data": {
"internalCompany": {
"displayableNumber": "guy-forward-leave-thought-general",
"id": "51369697",
"legalAddress": RichAddressType,
"name": "free-administration-represent-fast-across",
"primaryRegistrationNumber": "picture-page-firm-recognize-number",
"primaryTaxIdentifierNumber": "billion-face-inside-responsibility-night",
"secondaryRegistrationNumber": "majority-throughout-race-relate-begin"
}
}
}
isCustomerEligibleToGiveFeedbackFollowingCall
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Check if customer is eligible to give feedback following a phone call.
The possible errors that can be raised are:
- KT-CT-5519: Voice call not found.
- KT-CT-5521: Eligibility configuration not found.
- KT-CT-5522: Invalid eligibility configuration.
- KT-CT-5523: Invalid account or account user.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Number of the account. |
|
Number of the account user. |
|
ID of the voice call. |
Query
query IsCustomerEligibleToGiveFeedbackFollowingCall(
$accountNumber: String!,
$accountUserNumber: String!,
$callId: Int!
) {
isCustomerEligibleToGiveFeedbackFollowingCall(
accountNumber: $accountNumber,
accountUserNumber: $accountUserNumber,
callId: $callId
)
}
Variables
{
"accountNumber": "A-A312229D",
"accountUserNumber": "U-B4ED545D",
"callId": 24852001
}
Response
{
"data": {
"isCustomerEligibleToGiveFeedbackFollowingCall": true
}
}
isCustomerEligibleToGiveFeedbackFollowingEmail
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Check if customer is eligible to give feedback following an email conversation.
The possible errors that can be raised are:
- KT-CT-5520: Ink conversation not found.
- KT-CT-5521: Eligibility configuration not found.
- KT-CT-5522: Invalid eligibility configuration.
- KT-CT-5523: Invalid account or account user.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Number of the account. |
|
Number of the account user. |
|
Datetime when the conversation was closed. |
|
ID of the Ink conversation. |
Query
query IsCustomerEligibleToGiveFeedbackFollowingEmail(
$accountNumber: String!,
$accountUserNumber: String!,
$conversationClosedAt: DateTime!,
$inkConversationId: Int!
) {
isCustomerEligibleToGiveFeedbackFollowingEmail(
accountNumber: $accountNumber,
accountUserNumber: $accountUserNumber,
conversationClosedAt: $conversationClosedAt,
inkConversationId: $inkConversationId
)
}
Variables
{
"accountNumber": "A-7B6761EC",
"accountUserNumber": "U-07DBEAA5",
"conversationClosedAt": "1985-08-15T06:55:08.765785+00:00",
"inkConversationId": 64601974
}
Response
{
"data": {
"isCustomerEligibleToGiveFeedbackFollowingEmail": true
}
}
isEnrolledInCustomerFlexibilityCampaign
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Check if an account is enrolled in a Customer Flexibility Campaign.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-12201: Campaign not found.
- KT-CT-12202: Supply point not found.
- KT-CT-12203: Market supply point not supported.
- KT-CT-12204: Market supply point is not associated with the account.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to check enrollment for. |
|
The slug of the campaign to check enrollment for. |
|
The supply point identifier to check enrollment for. |
Query
query IsEnrolledInCustomerFlexibilityCampaign(
$accountNumber: String!,
$campaignSlug: String!,
$supplyPointIdentifier: String!
) {
isEnrolledInCustomerFlexibilityCampaign(
accountNumber: $accountNumber,
campaignSlug: $campaignSlug,
supplyPointIdentifier: $supplyPointIdentifier
)
}
Variables
{
"accountNumber": "A-B5649B43",
"campaignSlug": "woman-base-drive-detail-foot",
"supplyPointIdentifier": "93059610"
}
Response
{
"data": {
"isEnrolledInCustomerFlexibilityCampaign": true
}
}
isPasswordResetTokenValid
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Check validity of a password reset token.
Arguments
| Name | Description |
|---|---|
|
Password reset token to check. |
|
Base64 encoded user id. |
Query
query IsPasswordResetTokenValid(
$token: String!,
$userId: String!
) {
isPasswordResetTokenValid(
token: $token,
userId: $userId
)
}
Variables
{
"token": "civil-statement-site-federal-food",
"userId": "42406747"
}
Response
{
"data": {
"isPasswordResetTokenValid": true
}
}
joinSupplierProcess
Type: JoinSupplierProcessType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-CT-10332: Join supplier process not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The join supplier process number, e.g. JS-12345678. |
Query
query JoinSupplierProcess($number: String!) {
joinSupplierProcess(number: $number) {
contractIdentifiers
currentProcessData {
...JoinSupplierProcessDataTypeFragment
}
id
ledgerAssignments {
...JoinSupplierLedgerAssignmentConnectionTypeConnectionFragment
}
number
status
subtype
supplyPoints {
...SupplyPointConnectionTypeConnectionFragment
}
}
}
Variables
{
"number": "road-analysis-although-indeed-woman"
}
Response
{
"data": {
"joinSupplierProcess": {
"contractIdentifiers": ["wrong-add-role-knowledge-matter"],
"currentProcessData": JoinSupplierProcessDataType,
"id": "87954487",
"ledgerAssignments": JoinSupplierLedgerAssignmentConnectionTypeConnection,
"number": "course-happy-game-bag-bill",
"status": "PENDING",
"subtype": "season-carry-raise-Mrs-list",
"supplyPoints": SupplyPointConnectionTypeConnection
}
}
}
krakenVersion
Type: KrakenVersionType
URL: https://api.octopus.energy/v1/graphql/
The current version of kraken.
Query
query KrakenVersion {
krakenVersion {
SHA
isPinned
number
}
}
Response
{
"data": {
"krakenVersion": {
"SHA": "world-whom-stand-early-the",
"isPinned": true,
"number": "over-ask-rich-start-provide"
}
}
}
leadBlocklistValidations
Type: LeadBlockListValidationOutput
URL: https://api.octopus.energy/v1/graphql/
Run a blocklist validation out of some dynamic client entry types.
Arguments
| Name | Description |
|---|---|
|
List of client-configured black list entry types. |
Query
query LeadBlocklistValidations($blockListEntries: LeadBlockListValidationInput) {
leadBlocklistValidations(blockListEntries: $blockListEntries) {
blockListHits
valid
}
}
Variables
{
"blockListEntries": LeadBlockListValidationInput
}
Response
{
"data": {
"leadBlocklistValidations": {
"blockListHits": ["avoid-food-speak-new-power"],
"valid": true
}
}
}
leadByNumber
Type: LeadOutput
URL: https://api.octopus.energy/v1/graphql/
Get lead details by number.
The possible errors that can be raised are:
- KT-CT-8907: Lead not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Lead number. |
Query
query LeadByNumber($number: String) {
leadByNumber(number: $number) {
accountNumber
assignedToAffiliateNumber
assignedToTeam
assignedToUser
billingAddress {
...AddressOutputFragment
}
billingName
billingRichAddress {
...RichAddressTypeFragment
}
brand
consents {
...ConsentOutputFragment
}
email
extraDetailItems {
...ExtraDetailFragment
}
familyName
funnel {
...SalesFunnelFragment
}
givenName
leadId
leadType
nationalId
number
phoneNumber
salesChannel
stage
}
}
Variables
{
"number": "worry-finish-of-sell-music"
}
Response
{
"data": {
"leadByNumber": {
"accountNumber": "A-3784146D",
"assignedToAffiliateNumber": "fly-image-democratic-indicate-strong",
"assignedToTeam": "camera-others-under-star-eat",
"assignedToUser": "deal-how-American-happy-remember",
"billingAddress": AddressOutput,
"billingName": "order-today-couple-sure-lead",
"billingRichAddress": RichAddressType,
"brand": "piece-drug-best-health-onto",
"consents": [ConsentOutput],
"email": "final-single-within-its-other",
"extraDetailItems": [ExtraDetail],
"familyName": "Smith",
"funnel": SalesFunnel,
"givenName": "Beth",
"leadId": "70889505",
"leadType": "shoulder-bring-road-by-wait",
"nationalId": "78320856",
"number": "oil-key-opportunity-sit-organization",
"phoneNumber": "wear-action-series-old-fire",
"salesChannel": "usually-Mr-dinner-avoid-paper",
"stage": "weight-our-there-be-receive"
}
}
}
leads
Type: LeadsConnection
URL: https://api.octopus.energy/v1/graphql/
Fetch all leads for this Kraken, with optional filtering.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Input fields for retrieving leads. |
|
|
|
Query
query Leads(
$after: String,
$before: String,
$first: Int,
$input: LeadsQueryInput,
$last: Int,
$offset: Int
) {
leads(
after: $after,
before: $before,
first: $first,
input: $input,
last: $last,
offset: $offset
) {
edgeCount
edges {
...LeadsEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"input": LeadsQueryInput,
"last": 10,
"offset": 34
}
leaveSupplierProcess
Type: LeaveSupplierProcessType
URL: https://api.octopus.energy/v1/graphql/
Details associated with a LeaveSupplier process.
The possible errors that can be raised are:
- KT-CT-10302: Invalid data.
- KT-CT-10333: Missing either number of leave supplier process id.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The leave supplier process ID. |
|
The leave supplier process number, e.g. LS-12345678. |
Query
query LeaveSupplierProcess($number: String) {
leaveSupplierProcess(number: $number) {
id
number
status
subtype
supplyPoints {
...SupplyPointConnectionTypeConnectionFragment
}
}
}
Variables
{
"number": "want-then-for-difference-eat"
}
Response
{
"data": {
"leaveSupplierProcess": {
"id": "36337592",
"number": "key-total-employee-tree-movement",
"status": "PENDING",
"subtype": "woman-among-hand-when-history",
"supplyPoints": SupplyPointConnectionTypeConnection
}
}
}
legacyOrderDetails
Type: LegacyOrderDetailsType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-CT-13101: Order not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Order identifier. |
Query
query LegacyOrderDetails($identifier: String!) {
legacyOrderDetails(identifier: $identifier) {
order {
...LegacyOrderTypeFragment
}
resources {
...LegacyOrderResourceFragment
}
status
}
}
Variables
{
"identifier": "48092906"
}
Response
{
"data": {
"legacyOrderDetails": {
"order": LegacyOrderType,
"resources": [LegacyOrderResource],
"status": "PENDING"
}
}
}
lifecycleProcesses
Type: LifecycleProcessesType
URL: https://api.octopus.energy/v1/graphql/
Get all lifecycle processes associated with an account.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number, e.g. A-12345678. |
|
A flag to filter out only active/current processes. |
|
The chronological order in which the lifecycle processes are sorted. |
Query
query LifecycleProcesses(
$accountNumber: String!,
$onlyActive: Boolean,
$sortOrder: LifecycleProcessesSortOrder
) {
lifecycleProcesses(
accountNumber: $accountNumber,
onlyActive: $onlyActive,
sortOrder: $sortOrder
) {
joinSupplierProcesses {
...JoinSupplierProcessConnectionTypeConnectionFragment
}
leavePropertyProcesses {
...LeavePropertyProcessConnectionTypeConnectionFragment
}
leaveSupplierProcesses {
...LeaveSupplierProcessConnectionTypeConnectionFragment
}
occupyPropertyProcesses {
...OccupyPropertyProcessConnectionTypeConnectionFragment
}
}
}
Variables
{
"accountNumber": "A-A8FD4168",
"onlyActive": true,
"sortOrder": "ASC"
}
Response
{
"data": {
"lifecycleProcesses": {
"joinSupplierProcesses": JoinSupplierProcessConnectionTypeConnection,
"leavePropertyProcesses": LeavePropertyProcessConnectionTypeConnection,
"leaveSupplierProcesses": LeaveSupplierProcessConnectionTypeConnection,
"occupyPropertyProcesses": OccupyPropertyProcessConnectionTypeConnection
}
}
}
livePaymentAdequacy
Type: LivePaymentAdequacyQuery
URL: https://api.octopus.energy/v1/graphql/
Get up to date payment adequacy data.
The possible errors that can be raised are:
- KT-CT-3923: Unauthorized.
- KT-GB-3916: No statement in last 60 days.
- KT-GB-3915: Could not calculate current PA data.
- KT-CT-3822: Unauthorized.
- KT-CT-3922: Ledger not found for the account.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
|
Ledger number. |
|
Payment adequacy policy ID. If this argument is |
Query
query LivePaymentAdequacy(
$accountNumber: String!,
$ledgerNumber: String,
$policyId: String
) {
livePaymentAdequacy(
accountNumber: $accountNumber,
ledgerNumber: $ledgerNumber,
policyId: $policyId
) {
currentBalance
estimatedConsumption {
...ConsumptionBreakdownFragment
}
recommendedPayment {
...PaymentBreakdownFragment
}
reviewedOn
targetBalance
}
}
Variables
{
"accountNumber": "A-795858C8",
"ledgerNumber": "politics-major-new-push-race",
"policyId": "25842710"
}
Response
{
"data": {
"livePaymentAdequacy": {
"currentBalance": 61,
"estimatedConsumption": [ConsumptionBreakdown],
"recommendedPayment": PaymentBreakdown,
"reviewedOn": "1980-06-09",
"targetBalance": 34
}
}
}
livePaymentAdequacyCalculation
Type: LivePaymentAdequacyCalculation
URL: https://api.octopus.energy/v1/graphql/
Get payment adequacy data with an up to date calculation.
The possible errors that can be raised are:
- KT-CT-3963: Could not calculate live PA data.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Kraken ledger number. |
Query
query LivePaymentAdequacyCalculation($ledgerNumber: String!) {
livePaymentAdequacyCalculation(ledgerNumber: $ledgerNumber) {
averageMonthlyCharge
balanceAdjustment
consumption {
...ConsumptionBreakdownConnectionTypeConnectionFragment
}
currentBalance
existingMonthlyAmount
reviewedOn
suggestedNewMonthlyAmount
targetBalance
}
}
Variables
{
"ledgerNumber": "natural-respond-former-understand-education"
}
Response
{
"data": {
"livePaymentAdequacyCalculation": {
"averageMonthlyCharge": 42,
"balanceAdjustment": 67,
"consumption": ConsumptionBreakdownConnectionTypeConnection,
"currentBalance": 29,
"existingMonthlyAmount": 16,
"reviewedOn": "1990-11-08",
"suggestedNewMonthlyAmount": 58,
"targetBalance": 25
}
}
}
loyaltyCards
Type: [LoyaltyCardType]
URL: https://api.octopus.energy/v1/graphql/
Get all loyalty cards for the given account user.
The possible errors that can be raised are:
- KT-CT-5412: No account user exists with the given id.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Account user id. |
Query
query LoyaltyCards($accountUserId: String!) {
loyaltyCards(accountUserId: $accountUserId) {
id
number
scheme
status
}
}
Variables
{
"accountUserId": "38692054"
}
Response
{
"data": {
"loyaltyCards": [
{
"id": "94565465",
"number": "law-song-never-your-step",
"scheme": "news-never-black-officer-compare",
"status": "lay-step-represent-information-health"
}
]
}
}
loyaltyPointLedgerEntry
Type: LoyaltyPointLedgerEntryType
URL: https://api.octopus.energy/v1/graphql/
Resolve a loyalty point ledger entry.
The possible errors that can be raised are:
- KT-CT-9215: Loyalty points balance query disabled.
- KT-CT-9223: Loyalty points ledger entry not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query LoyaltyPointLedgerEntry($input: LoyaltyPointLedgerEntryInput!) {
loyaltyPointLedgerEntry(input: $input) {
accountNumber
balanceBroughtForward
balanceCarriedForward
id
idempotencyKey
ledgerType
postedAt
reasonCode
value
}
}
Variables
{
"input": LoyaltyPointLedgerEntryInput
}
Response
{
"data": {
"loyaltyPointLedgerEntry": {
"accountNumber": "A-27D56A2E",
"balanceBroughtForward": "address-performance-include-single-economy",
"balanceCarriedForward": "he-hit-reach-prevent-see",
"id": "61561773",
"idempotencyKey": "43f1b3b4-84d4-4db9-8de5-dabbc8dfd075",
"ledgerType": "tree-girl-goal-newspaper-kind",
"postedAt": "1995-06-15T11:13:58.953900+00:00",
"reasonCode": "very-several-resource-concern-old",
"value": "institution-far-poor-draw-parent"
}
}
}
loyaltyPointLedgers
Type: [LoyaltyPointLedgerEntryType]
URL: https://api.octopus.energy/v1/graphql/
Get the Loyalty Point ledger entries for the passed user.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The input object for retrieving a loyalty point ledger entry. |
Query
query LoyaltyPointLedgers($input: LoyaltyPointLedgersInput) {
loyaltyPointLedgers(input: $input) {
accountNumber
balanceBroughtForward
balanceCarriedForward
id
idempotencyKey
ledgerType
postedAt
reasonCode
value
}
}
Variables
{
"input": LoyaltyPointLedgersInput
}
Response
{
"data": {
"loyaltyPointLedgers": [
{
"accountNumber": "A-B06584B4",
"balanceBroughtForward": "prepare-positive-without-unit-occur",
"balanceCarriedForward": "purpose-out-financial-feeling-go",
"id": "60696546",
"idempotencyKey": "505ebdc2-ac47-49ad-8c88-a27885422a16",
"ledgerType": "me-medical-standard-also-at",
"postedAt": "1987-08-12T16:06:44.597819+00:00",
"reasonCode": "week-what-ago-interest-goal",
"value": "under-these-claim-health-now"
}
]
}
}
loyaltyPointsBalance
Type: AccountLoyaltyPointsType
URL: https://api.octopus.energy/v1/graphql/
Get the loyalty points balance for an account.
The possible errors that can be raised are:
- KT-CT-9218: Unauthorized.
- KT-CT-9217: Unauthorized.
- KT-CT-9215: Loyalty points balance query disabled.
- KT-CT-9216: Unauthorized.
- KT-CT-9222: Loyalty points balance query requires either accountNumber field (deprecated) or input object (preferred) with account number and optional account user id.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
Query
query LoyaltyPointsBalance($input: LoyaltyPointsBalanceInput) {
loyaltyPointsBalance(input: $input) {
loyaltyPoints
totalMonetaryAmount
}
}
Variables
{
"input": LoyaltyPointsBalanceInput
}
Response
{
"data": {
"loyaltyPointsBalance": {
"loyaltyPoints": 64,
"totalMonetaryAmount": 8
}
}
}
metadata
Type: [Metadata]
URL: https://api.octopus.energy/v1/graphql/
Metadata for a linked object.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-4124: Unauthorized.
- KT-CT-8411: Invalid data.
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
|
|
Query
query Metadata(
$identifier: String!,
$linkedObjectType: LinkedObjectType
) {
metadata(
identifier: $identifier,
linkedObjectType: $linkedObjectType
) {
key
value
}
}
Variables
{
"identifier": "61211065",
"linkedObjectType": "ACCOUNT"
}
Response
{
"data": {
"metadata": [
{
"key": "human-middle-play-different-finally",
"value": {"key": "value"}
}
]
}
}
metadataForKey
Type: Metadata
URL: https://api.octopus.energy/v1/graphql/
Metadata for a linked object with key.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-4124: Unauthorized.
- KT-CT-8411: Invalid data.
- KT-CT-4179: No metadata found with given key.
- KT-CT-4155: Invalid data.
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Query
query MetadataForKey(
$identifier: String!,
$key: String!,
$linkedObjectType: LinkedObjectType
) {
metadataForKey(
identifier: $identifier,
key: $key,
linkedObjectType: $linkedObjectType
) {
key
value
}
}
Variables
{
"identifier": "98582630",
"key": "color-industry-should-step-maybe",
"linkedObjectType": "ACCOUNT"
}
Response
{
"data": {
"metadataForKey": {
"key": "possible-perform-reason-short-piece",
"value": {"key": "value"}
}
}
}
meterPoints
Type: MeterPointInterface
URL: https://api.octopus.energy/v1/graphql/
Get a meter point via it's associated mpan or mprn.
The possible errors that can be raised are:
- KT-GB-5601: One of either MPAN or MPRN must be provided.
- KT-CT-4011: No meter points found with the given ID.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPAN for the electricity meterpoint to return. |
|
The MPRN for the gas meterpoint to return. |
Query
query MeterPoints(
$mpan: ID,
$mprn: ID
) {
meterPoints(
mpan: $mpan,
mprn: $mprn
) {
enrolment {
...EnrolmentTypeFragment
}
meters {
...MeterFragment
}
status
}
}
Variables
{
"mpan": "64277524",
"mprn": "40584230"
}
Response
{
"data": {
"meterPoints": {
"enrolment": EnrolmentType,
"meters": Meter,
"status": "outside-card-fish-memory-statement"
}
}
}
mfaDevices
Type: [MfaDevice]
URL: https://api.octopus.energy/v1/graphql/
Get all MFA devices for the current user.
Query
query MfaDevices {
mfaDevices {
deviceType
isConfirmed
}
}
Response
{
"data": {
"mfaDevices": [
{
"deviceType": "senior-would-war-probably-service",
"isConfirmed": true
}
]
}
}
multipleElectricityMeterPointsForAddress
Type: ElectricityMeterPointForAddressType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-GB-6612: We couldn't find a match for this address. Please verify it and try again.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Query
query MultipleElectricityMeterPointsForAddress(
$address: AddressSearchType,
$searchDomesticOnly: Boolean,
$useDes: Boolean
) {
multipleElectricityMeterPointsForAddress(
address: $address,
searchDomesticOnly: $searchDomesticOnly,
useDes: $useDes
) {
addressHasMoreThanOneElectricityMeterPoint
addressLine1
addressLine2
electricityMeterPoints
postcode
}
}
Variables
{
"address": AddressSearchType,
"searchDomesticOnly": true,
"useDes": true
}
Response
{
"data": {
"multipleElectricityMeterPointsForAddress": {
"addressHasMoreThanOneElectricityMeterPoint": true,
"addressLine1": "item-second-prove-wrong-exist",
"addressLine2": "actually-tonight-he-art-traditional",
"electricityMeterPoints": ["keep-step-region-among-mouth"],
"postcode": "stop-cup-article-south-call"
}
}
}
Arguments
| Name | Description |
|---|---|
|
The ID of the object |
Query
query Node($id: ID!) {
node(id: $id) {
id
}
}
Variables
{
"id": "46210200"
}
Response
{
"data": {
"node": {
"id": "12240152"
}
}
}
occupierAccount
Type: OccupierAccount
URL: https://api.octopus.energy/v1/graphql/
Looks up an occupier account based on postcode and optionally their last 4 digits of the account number.
Arguments
| Name | Description |
|---|---|
|
The postcode to search for. |
|
Optional - the last 4 digits of the account number. |
Query
query OccupierAccount(
$postcode: String!,
$shortcode: String
) {
occupierAccount(
postcode: $postcode,
shortcode: $shortcode
) {
account
address
date
occupyToken
propertyId
}
}
Variables
{
"postcode": "arrive-least-cup-we-feel",
"shortcode": "family-surface-movement-little-impact"
}
Response
{
"data": {
"occupierAccount": {
"account": "blue-month-rather-activity-particularly",
"address": "above-organization-outside-see-time",
"date": "star-stay-light-training-lead",
"occupyToken": "list-meet-success-cell-like",
"propertyId": 25454304
}
}
}
occupierAccounts
Type: [OccupierAccount]
URL: https://api.octopus.energy/v1/graphql/
Looks up all occupier accounts for a postcode and optionally their last 4 digits of the account number.
Arguments
| Name | Description |
|---|---|
|
The postcode to search for. |
|
Optional - the last 4 digits of the account number. |
Query
query OccupierAccounts(
$postcode: String!,
$shortcode: String
) {
occupierAccounts(
postcode: $postcode,
shortcode: $shortcode
) {
account
address
date
occupyToken
propertyId
}
}
Variables
{
"postcode": "would-tell-Mrs-tree-bring",
"shortcode": "knowledge-address-coach-list-Republican"
}
Response
{
"data": {
"occupierAccounts": [
{
"account": "world-technology-structure-family-finally",
"address": "behind-maintain-a-sign-both",
"date": "front-sometimes-and-would-fine",
"occupyToken": "future-operation-good-modern-make",
"propertyId": 24361372
}
]
}
}
ocppConnection
Type: OCPPConnectionType
URL: https://api.octopus.energy/v1/graphql/
To confirm whether a device is connected to OCPP.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4311: Unable to confirm OCPP connection.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query OcppConnection($accountNumber: String!) {
ocppConnection(accountNumber: $accountNumber) {
isConnected
}
}
Variables
{
"accountNumber": "A-5753B821"
}
Response
{
"data": {
"ocppConnection": {
"isConnected": true
}
}
}
ocppDetails
Type: OCPPDetailsType
URL: https://api.octopus.energy/v1/graphql/
The user specific generated OCPP details.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query OcppDetails($accountNumber: String!) {
ocppDetails(accountNumber: $accountNumber) {
url
username
}
}
Variables
{
"accountNumber": "A-FABA7F85"
}
Response
{
"data": {
"ocppDetails": {
"url": "into-trip-own-respond-race",
"username": "goal-southern-player-chance-campaign"
}
}
}
octoHeatPumpControllerConfiguration
Type: ControllerAndZoneConfiguration
URL: https://api.octopus.energy/v1/graphql/
Heat pump controller, zones and sensor configuration.
The possible errors that can be raised are:
- KT-CT-4305: Unable to fetch heating controller configuration.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'heatPumpControllerConfiguration' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query OctoHeatPumpControllerConfiguration(
$accountNumber: String!,
$euid: ID!
) {
octoHeatPumpControllerConfiguration(
accountNumber: $accountNumber,
euid: $euid
) {
controller {
...ControllerConfigurationFragment
}
heatPump {
...HeatPumpConfigurationFragment
}
zones {
...ZoneInformationFragment
}
}
}
Variables
{
"accountNumber": "A-2D3A50C6",
"euid": "78244057"
}
Response
{
"data": {
"octoHeatPumpControllerConfiguration": {
"controller": ControllerConfiguration,
"heatPump": HeatPumpConfiguration,
"zones": [ZoneInformation]
}
}
}
octoHeatPumpControllerEuids
Type: [String]
URL: https://api.octopus.energy/v1/graphql/
Heat pump controller EUIDs associated with an account.
Deprecated
The 'controllerEuids' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Arguments
| Name | Description |
|---|---|
|
Query
query OctoHeatPumpControllerEuids($accountNumber: String) {
octoHeatPumpControllerEuids(accountNumber: $accountNumber)
}
Variables
{
"accountNumber": "A-D1366DAF"
}
Response
{
"data": {
"octoHeatPumpControllerEuids": ["government-not-performance-partner-radio"]
}
}
octoHeatPumpControllerStatus
Type: ControllerStatus
URL: https://api.octopus.energy/v1/graphql/
Retrieve the heat pump controller device status.
The possible errors that can be raised are:
- KT-CT-4303: Unable to fetch device status.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'heatPumpControllerStatus' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query OctoHeatPumpControllerStatus(
$accountNumber: String!,
$euid: ID!
) {
octoHeatPumpControllerStatus(
accountNumber: $accountNumber,
euid: $euid
) {
sensors {
...SensorStatusFragment
}
zones {
...ZoneStatusFragment
}
}
}
Variables
{
"accountNumber": "A-B20DD48D",
"euid": "29341013"
}
Response
{
"data": {
"octoHeatPumpControllerStatus": {
"sensors": [SensorStatus],
"zones": [ZoneStatus]
}
}
}
octoHeatPumpControllersAtLocation
Type: [ControllerAtLocation]
URL: https://api.octopus.energy/v1/graphql/
Heat pump controllers attached to an account at a given location.
The possible errors that can be raised are:
- KT-CT-3823: Unauthorized.
- KT-CT-6622: Unauthorized.
- KT-CT-4305: Unable to fetch heating controller configuration.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'octoHeatPumpControllersAtLocation' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query OctoHeatPumpControllersAtLocation(
$accountNumber: String!,
$propertyId: ID!
) {
octoHeatPumpControllersAtLocation(
accountNumber: $accountNumber,
propertyId: $propertyId
) {
controller {
...ControllerFragment
}
heatPumpModel
location {
...LocationFragment
}
provisionedAt
}
}
Variables
{
"accountNumber": "A-458987AD",
"propertyId": "50438786"
}
Response
{
"data": {
"octoHeatPumpControllersAtLocation": [
{
"controller": Controller,
"heatPumpModel": "lay-media-police-movie-threat",
"location": Location,
"provisionedAt": "1973-05-03T04:42:10.704332+00:00"
}
]
}
}
octoHeatPumpLifetimePerformance
Type: LifetimeTelemetry
URL: https://api.octopus.energy/v1/graphql/
Latest telemetry values from the heat pump.
The possible errors that can be raised are:
- KT-CT-4365: Device telemetry data could not be fetched.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'octoHeatPumpLifetimePerformance' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Arguments
| Name | Description |
|---|---|
|
Query
query OctoHeatPumpLifetimePerformance($euid: ID!) {
octoHeatPumpLifetimePerformance(euid: $euid) {
energyInput {
...EnergyFragment
}
heatOutput {
...EnergyFragment
}
readAt
seasonalCoefficientOfPerformance
}
}
Variables
{
"euid": "86359357"
}
octoHeatPumpLivePerformance
Type: LiveTelemetry
URL: https://api.octopus.energy/v1/graphql/
Latest telemetry values from the heat pump.
The possible errors that can be raised are:
- KT-CT-4365: Device telemetry data could not be fetched.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'octoHeatPumpLivePerformance' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Arguments
| Name | Description |
|---|---|
|
Query
query OctoHeatPumpLivePerformance($euid: ID!) {
octoHeatPumpLivePerformance(euid: $euid) {
coefficientOfPerformance
heatOutput {
...PowerFragment
}
outdoorTemperature {
...TemperatureFragment
}
powerInput {
...PowerFragment
}
readAt
}
}
Variables
{
"euid": "23260407"
}
Response
{
"data": {
"octoHeatPumpLivePerformance": {
"coefficientOfPerformance": "1.0",
"heatOutput": Power,
"outdoorTemperature": Temperature,
"powerInput": Power,
"readAt": "2021-01-21T17:01:41.423378+00:00"
}
}
}
octoHeatPumpTimeRangedPerformance
Type: HeatPumpTimeRangedPerformance
URL: https://api.octopus.energy/v1/graphql/
Heat pump performance data between two specific dates.
The possible errors that can be raised are:
- KT-CT-4365: Device telemetry data could not be fetched.
- KT-CT-4370: Device telemetry data unavailable.
- KT-CT-4381: Invalid time range provided.
- KT-CT-4305: Unable to fetch heating controller configuration.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'octoHeatPumpTimeRangedPerformance' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Query
query OctoHeatPumpTimeRangedPerformance(
$endAt: DateTime!,
$euid: ID!,
$startAt: DateTime!
) {
octoHeatPumpTimeRangedPerformance(
endAt: $endAt,
euid: $euid,
startAt: $startAt
) {
coefficientOfPerformance
energyInput {
...EnergyFragment
}
energyOutput {
...EnergyFragment
}
}
}
Variables
{
"endAt": "2016-02-16T20:26:06.621936+00:00",
"euid": "60225741",
"startAt": "2018-05-12T19:54:42.970011+00:00"
}
octoHeatPumpTimeSeriesPerformance
Type: [HeatPumpPerformanceGroupingNode]
URL: https://api.octopus.energy/v1/graphql/
Heat pump performance data over a specified period in time buckets.
The possible errors that can be raised are:
- KT-CT-4368: Telemetry API did not return valid data.
- KT-CT-4365: Device telemetry data could not be fetched.
- KT-CT-4381: Invalid time range provided.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'octoHeatPumpTimeSeriesPerformance' field is deprecated.
This query has been migrated to Octopus Energy backend. Please see https://api.backend.octopus.energy/v1/graphql.
- Marked as deprecated on 2026-03-18.
- Scheduled for removal on or after 2026-04-30.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Query
query OctoHeatPumpTimeSeriesPerformance(
$endAt: DateTime!,
$euid: ID!,
$performanceGrouping: PerformanceGrouping!,
$startAt: DateTime!
) {
octoHeatPumpTimeSeriesPerformance(
endAt: $endAt,
euid: $euid,
performanceGrouping: $performanceGrouping,
startAt: $startAt
) {
endAt
energyInput {
...EnergyFragment
}
energyOutput {
...EnergyFragment
}
outdoorTemperature {
...TemperatureFragment
}
startAt
}
}
Variables
{
"endAt": "2011-05-12T10:41:54.061997+00:00",
"euid": "77815857",
"performanceGrouping": "LIVE",
"startAt": "1979-02-25T05:40:13.370463+00:00"
}
Response
{
"data": {
"octoHeatPumpTimeSeriesPerformance": [
{
"endAt": "1980-05-01T23:43:57.556934+00:00",
"energyInput": Energy,
"energyOutput": Energy,
"outdoorTemperature": Temperature,
"startAt": "2016-09-25T19:34:36.864933+00:00"
}
]
}
}
octocareOnboardingInfo
Type: OctocareOnboardingInfo
URL: https://api.octopus.energy/v1/graphql/
Returns the info required to start the onboarding process for a Mini in the cared-for account's property, by the cared.
The possible errors that can be raised are:
- KT-GB-10502: Account is not yet enrolled.
- KT-GB-10503: Incorrect number of communication hubs.
- KT-GB-10501: Account is not currently supported.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Cared-for account number. |
Query
query OctocareOnboardingInfo($accountNumber: String!) {
octocareOnboardingInfo(accountNumber: $accountNumber) {
chfDeviceId
propertyAddressLine1
propertyId
}
}
Variables
{
"accountNumber": "A-3A993E7D"
}
Response
{
"data": {
"octocareOnboardingInfo": {
"chfDeviceId": "65943477",
"propertyAddressLine1": "somebody-so-card-difference-type",
"propertyId": "21028979"
}
}
}
octocareUsageInfo
Type: OctocareUsageInfo
URL: https://api.octopus.energy/v1/graphql/
Returns the info required to request and display live usage information for the cared-for account meter: the meter device ID and 1st address line of the property.
The possible errors that can be raised are:
- KT-GB-10502: Account is not yet enrolled.
- KT-GB-10503: Incorrect number of communication hubs.
- KT-GB-10501: Account is not currently supported.
- KT-GB-10504: Property is not currently supported.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Cared-for account number. |
Query
query OctocareUsageInfo($accountNumber: String!) {
octocareUsageInfo(accountNumber: $accountNumber) {
meterDeviceId
propertyAddressLine1
}
}
Variables
{
"accountNumber": "A-7952EBDC"
}
Response
{
"data": {
"octocareUsageInfo": {
"meterDeviceId": "95478596",
"propertyAddressLine1": "seat-mission-almost-thus-determine"
}
}
}
octoplusAccountInfo
Type: OctoplusAccountInfoType
URL: https://api.octopus.energy/v1/graphql/
Octoplus information for a given account.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
Query
query OctoplusAccountInfo($accountNumber: String!) {
octoplusAccountInfo(accountNumber: $accountNumber) {
enrollmentStatus
isLoyaltyPointsUser
octoplusEligibility {
...OctoplusEligibilityTypeFragment
}
octoplusSnapWebUrl {
...OctoplusSnapWebUrlTypeFragment
}
shouldUseV2
}
}
Variables
{
"accountNumber": "A-D93DE638"
}
Response
{
"data": {
"octoplusAccountInfo": {
"enrollmentStatus": "ENROLLED",
"isLoyaltyPointsUser": true,
"octoplusEligibility": OctoplusEligibilityType,
"octoplusSnapWebUrl": OctoplusSnapWebUrlType,
"shouldUseV2": true
}
}
}
octoplusFeatureFlags
Type: OctoplusFeatureFlagsType
URL: https://api.octopus.energy/v1/graphql/
Feature flags for the octoplus campaign.
Query
query OctoplusFeatureFlags {
octoplusFeatureFlags {
shouldClientDisplayOctoplus
shouldClientDisplayOctoplusPartnerOfferList
shouldClientDisplayOctoplusPartnerOffers
shouldClientDisplayOctoplusRewards
shouldClientDisplayOctoplusShoptopusOffers
shouldClientDisplayOctopointsV2
}
}
Response
{
"data": {
"octoplusFeatureFlags": {
"shouldClientDisplayOctoplus": true,
"shouldClientDisplayOctoplusPartnerOfferList": true,
"shouldClientDisplayOctoplusPartnerOffers": true,
"shouldClientDisplayOctoplusRewards": true,
"shouldClientDisplayOctoplusShoptopusOffers": true,
"shouldClientDisplayOctopointsV2": true
}
}
}
octoplusOfferGroups
Type: OctoplusOfferGroupConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Octoplus Offer Groups available for a given account_user and account combination.
Deprecated
The 'octoplusOfferGroups' field is deprecated.
The Octoplus feature is going through changes. This query is no longer available.
- Marked as deprecated on 2026-02-10.
- Scheduled for removal on or after 2026-08-10.
Arguments
| Name | Description |
|---|---|
|
Account number for the Octoplus-enrolled account. |
|
|
|
|
|
|
|
ID of the Offer Group being queried. |
|
Query
query OctoplusOfferGroups(
$accountNumber: String!,
$after: String,
$before: String,
$first: Int,
$id: Int,
$last: Int
) {
octoplusOfferGroups(
accountNumber: $accountNumber,
after: $after,
before: $before,
first: $first,
id: $id,
last: $last
) {
edgeCount
edges {
...OctoplusOfferGroupConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-115E631E",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"id": 78434978,
"last": 10
}
Response
{
"data": {
"octoplusOfferGroups": {
"edgeCount": 29,
"edges": OctoplusOfferGroupConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 95
}
}
}
octoplusOffers
Type: [OctoplusOfferType]
URL: https://api.octopus.energy/v1/graphql/
Octoplus Offers available for a given account_user and account combination.
Deprecated
The 'octoplusOffers' field is deprecated.
The Octoplus feature is going through changes. This query is no longer available.
- Marked as deprecated on 2026-02-10.
- Scheduled for removal on or after 2026-08-10.
Arguments
| Name | Description |
|---|---|
|
Account number for the Octoplus-enrolled account. |
|
Slug of the offer being queried. |
Query
query OctoplusOffers(
$accountNumber: String!,
$slug: String
) {
octoplusOffers(
accountNumber: $accountNumber,
slug: $slug
) {
availableSitesUrl
category
claimAbility {
...OctoplusRewardClaimAbilityTypeFragment
}
claimBy
description
faqs {
...OctoplusOfferFAQsTypeFragment
}
imageUrls {
...OctoplusOfferImageUrlsTypeFragment
}
longDescription
name
partnerName
partnerSiteUrl
pointsCost
priceTag
slug
termsAndConditions
usageInstructions
}
}
Variables
{
"accountNumber": "A-0FED625E",
"slug": "suffer-wait-article-report-against"
}
Response
{
"data": {
"octoplusOffers": [
{
"availableSitesUrl": "consider-field-military-mouth-whose",
"category": "under-simply-soldier-politics-there",
"claimAbility": OctoplusRewardClaimAbilityType,
"claimBy": "1985-05-08T20:27:03.143104+00:00",
"description": "environment-compare-around-set-government",
"faqs": [OctoplusOfferFAQsType],
"imageUrls": OctoplusOfferImageUrlsType,
"longDescription": "several-or-home-security-yard",
"name": "film-think-peace-president-newspaper",
"partnerName": "tend-across-focus-personal-various",
"partnerSiteUrl": "table-happen-care-receive-evening",
"pointsCost": 96,
"priceTag": "really-spring-later-raise-thousand",
"slug": "already-will-decide-Democrat-positive",
"termsAndConditions": "adult-season-thank-end-position",
"usageInstructions": "eight-include-city-system-Democrat"
}
]
}
}
octoplusRewards
Type: [OctoplusRewardType]
URL: https://api.octopus.energy/v1/graphql/
Octoplus Rewards for a given account user.
Deprecated
The 'octoplusRewards' field is deprecated.
The Octoplus feature is going through changes. This query is no longer available.
- Marked as deprecated on 2026-02-10.
- Scheduled for removal on or after 2026-08-10.
Arguments
| Name | Description |
|---|---|
|
Account number for the Octoplus-enrolled account. |
|
Slug of the offer being queried. |
|
Id for the reward being queried. |
Query
query OctoplusRewards(
$accountNumber: String,
$offerSlug: String,
$rewardId: Int
) {
octoplusRewards(
accountNumber: $accountNumber,
offerSlug: $offerSlug,
rewardId: $rewardId
) {
accountNumber
claimedAt
id
offer {
...OctoplusOfferTypeFragment
}
status
vouchers {
... on OctoplusVoucherType {
...OctoplusVoucherTypeFragment
}
... on ShoptopusVoucherType {
...ShoptopusVoucherTypeFragment
}
}
}
}
Variables
{
"accountNumber": "A-812C559E",
"offerSlug": "control-think-perform-cause-agent",
"rewardId": 17464881
}
Response
{
"data": {
"octoplusRewards": [
{
"accountNumber": "A-ED9454C9",
"claimedAt": "2012-05-29T16:32:56.230258+00:00",
"id": 70288173,
"offer": OctoplusOfferType,
"status": "PENDING",
"vouchers": OctoplusVoucherType
}
]
}
}
Arguments
| Name | Description |
|---|---|
|
The identifier of the offer to query. |
Query
query OfferForQuoting($identifier: ID) {
offerForQuoting(identifier: $identifier) {
acceptedAt
createdBy {
...ActorTypeFragment
}
description
identifier
quote {
...QuoteType_Fragment
}
rejectedAt
validFrom
validTo
}
}
Variables
{
"identifier": "11448377"
}
Response
{
"data": {
"offerForQuoting": {
"acceptedAt": "2023-07-24T20:59:48.228115+00:00",
"createdBy": ActorType,
"description": "relate-then-increase-water-order",
"identifier": "35183761",
"quote": QuoteType_,
"rejectedAt": "2017-06-05T17:10:20.436675+00:00",
"validFrom": "1987-03-18T13:12:36.271949+00:00",
"validTo": "1971-10-28T03:12:22.932138+00:00"
}
}
}
Arguments
| Name | Description |
|---|---|
|
The identifier of the offer group to query. |
Query
query OfferGroupForQuoting($identifier: ID) {
offerGroupForQuoting(identifier: $identifier) {
createdAt
createdBy {
...ActorTypeFragment
}
identifier
offers {
...OfferTypeFragment
}
}
}
Variables
{
"identifier": "17377697"
}
offering
Type: OfferingType
URL: https://api.octopus.energy/v1/graphql/
Get details about a product offering.
The possible errors that can be raised are:
- KT-CT-12001: Product catalogue offering with given identifier not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The identifier of the offering to query. |
Query
query Offering($identifier: String) {
offering(identifier: $identifier) {
customerDescription
customerName
groups {
...GroupTypeFragment
}
identifier
internalName
isActive
isAmendable
isDraft
isExpired
isFirstDraft
isLatestVersion
isSellable
lifecycle {
...LifecycleTypeFragment
}
offeringComponents {
...OfferingComponentTypeFragment
}
productComponents {
...ProductComponentTypeFragment
}
tags {
...TagTypeFragment
}
termTemplateComponents {
...TermTemplateComponentTypeFragment
}
}
}
Variables
{
"identifier": "34058426"
}
Response
{
"data": {
"offering": {
"customerDescription": "rich-process-cup-west-early",
"customerName": "son-history-training-away-career",
"groups": [GroupType],
"identifier": "75845030",
"internalName": "maintain-state-less-page-short",
"isActive": true,
"isAmendable": true,
"isDraft": true,
"isExpired": true,
"isFirstDraft": true,
"isLatestVersion": true,
"isSellable": true,
"lifecycle": LifecycleType,
"offeringComponents": [OfferingComponentType],
"productComponents": [ProductComponentType],
"tags": [TagType],
"termTemplateComponents": [TermTemplateComponentType]
}
}
}
opportunities
Type: OpportunitiesConnection
URL: https://api.octopus.energy/v1/graphql/
Fetch all opportunities for this Kraken, with optional filtering.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
Input fields for retrieving opportunities. |
|
|
|
Query
query Opportunities(
$after: String,
$before: String,
$first: Int,
$input: OpportunitiesQueryInput,
$last: Int,
$offset: Int
) {
opportunities(
after: $after,
before: $before,
first: $first,
input: $input,
last: $last,
offset: $offset
) {
edgeCount
edges {
...OpportunitiesEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"input": OpportunitiesQueryInput,
"last": 10,
"offset": 13
}
Response
{
"data": {
"opportunities": {
"edgeCount": 97,
"edges": OpportunitiesEdge,
"pageInfo": PageInfo,
"totalCount": 68
}
}
}
opportunityByNumber
Type: OpportunityOutput
URL: https://api.octopus.energy/v1/graphql/
Get opportunity details by number.
The possible errors that can be raised are:
- KT-CT-8906: Opportunity not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Opportunity number identifier. |
Query
query OpportunityByNumber($number: String) {
opportunityByNumber(number: $number) {
assignedToAffiliateNumber
assignedToTeam
assignedToUser
attachments {
...OpportunityAttachmentFragment
}
consents {
...ConsentOutputFragment
}
email
extraDetailItems {
...ExtraDetailFragment
}
funnel {
...SalesFunnelFragment
}
leadNumber
leadType
name
notes
number
offerGroupId
opportunityAddress {
...AddressOutputFragment
}
opportunityRichAddress {
...RichAddressTypeFragment
}
phoneNumber
productOffering {
...OfferingTypeFragment
}
productOfferingId
salesChannel
stage
supplyPoints {
...LeadSupplyPointTypeFragment
}
}
}
Variables
{
"number": "ago-college-rock-play-decision"
}
Response
{
"data": {
"opportunityByNumber": {
"assignedToAffiliateNumber": "another-expert-indeed-full-together",
"assignedToTeam": "whom-social-within-might-to",
"assignedToUser": "bag-worker-develop-official-cause",
"attachments": [OpportunityAttachment],
"consents": [ConsentOutput],
"email": "fund-health-especially-near-mission",
"extraDetailItems": [ExtraDetail],
"funnel": SalesFunnel,
"leadNumber": "sort-both-increase-old-drive",
"leadType": "like-wall-before-per-blood",
"name": "black-rise-couple-not-across",
"notes": "hope-force-common-send-situation",
"number": "keep-thought-song-wife-respond",
"offerGroupId": "78500491",
"opportunityAddress": AddressOutput,
"opportunityRichAddress": RichAddressType,
"phoneNumber": "still-significant-scene-change-possible",
"productOffering": OfferingType,
"productOfferingId": "18957198",
"salesChannel": "above-oil-call-tonight-bit",
"stage": "recent-week-early-technology-soon",
"supplyPoints": [LeadSupplyPointType]
}
}
}
opportunityProductSummary
Type: [OpportunityProductSummary!]!
URL: https://api.octopus.energy/v1/graphql/
Return summaries of all products in opportunity's accepted offer. Supports multi-product offerings like dual fuel.
The possible errors that can be raised are:
- KT-CT-8906: Opportunity not found.
- KT-CT-8923: The opportunity does not have a linked offer group.
- KT-CT-8922: The opportunity does not have an accepted offer.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Opportunity number. |
Query
query OpportunityProductSummary($number: String) {
opportunityProductSummary(number: $number) {
market
productCharacteristics
productCode
productIdentifier
productOfferingIdentifier
}
}
Variables
{
"number": "Congress-issue-appear-office-write"
}
Response
{
"data": {
"opportunityProductSummary": [
{
"market": "discover-economic-energy-reason-model",
"productCharacteristics": "abc123" | 1 | 1.0 | true | ["abc123"] | AccountType,
"productCode": "than-their-whether-sure-same",
"productIdentifier": "99365588",
"productOfferingIdentifier": "58880717"
}
]
}
}
opportunityValueByKey
Type: String
URL: https://api.octopus.energy/v1/graphql/
Get the value of a given key that is stored in an opportunity's related JSONFields.
The possible errors that can be raised are:
- KT-CT-8903: Unable to update opportunity.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The key the a funnel-specific value you wish to obtain. |
|
The identifier of the opportunity to query. |
Query
query OpportunityValueByKey(
$key: String,
$opportunityId: ID
) {
opportunityValueByKey(
key: $key,
opportunityId: $opportunityId
)
}
Variables
{
"key": "fight-assume-recent-show-stay",
"opportunityId": "55179067"
}
Response
{
"data": {
"opportunityValueByKey": "analysis-place-station-whether-site"
}
}
passwordValidatorHelpTexts
Type: [String]
URL: https://api.octopus.energy/v1/graphql/
The help text of all configured password validators as plain-text or html. Defaults to plain-text.
Arguments
| Name | Description |
|---|---|
|
Return the results as html instead of plain-text. Defaults to False. |
Query
query PasswordValidatorHelpTexts($asHtml: Boolean) {
passwordValidatorHelpTexts(asHtml: $asHtml)
}
Variables
{
"asHtml": true
}
Response
{
"data": {
"passwordValidatorHelpTexts": ["evidence-sometimes-return-sign-people"]
}
}
paymentFingerprintChecks
Type: PaymentFingerPrintCheckType
URL: https://api.octopus.energy/v1/graphql/
Check if a given payment fingerprint already exists and/or is risk-listed.
Arguments
| Name | Description |
|---|---|
|
Fingerprint. |
Query
query PaymentFingerprintChecks($fingerprint: String!) {
paymentFingerprintChecks(fingerprint: $fingerprint) {
fingerprint
isFound
isRiskListed
}
}
Variables
{
"fingerprint": "town-majority-single-agent-image"
}
Response
{
"data": {
"paymentFingerprintChecks": {
"fingerprint": "score-certainly-third-can-without",
"isFound": true,
"isRiskListed": true
}
}
}
paymentPlanDetails
Type: [PaymentPlanDetails]
URL: https://api.octopus.energy/v1/graphql/
Payment plan details for a given account number.
The possible errors that can be raised are:
- KT-CT-3921: Account not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to retrieve payment plan details for. |
Query
query PaymentPlanDetails($accountNumber: String!) {
paymentPlanDetails(accountNumber: $accountNumber) {
paymentFrequency
paymentFrequencyMultiplier
paymentPlanId
paymentPlanStatus
totalAmountPaid
totalAmountRemaining
totalPlanValue
}
}
Variables
{
"accountNumber": "A-D1CC5F0A"
}
Response
{
"data": {
"paymentPlanDetails": [
{
"paymentFrequency": "marriage-fill-case-interview-top",
"paymentFrequencyMultiplier": 36,
"paymentPlanId": "19274922",
"paymentPlanStatus": "magazine-no-leave-building-series",
"totalAmountPaid": 92764880,
"totalAmountRemaining": 95,
"totalPlanValue": 64
}
]
}
}
paymentRequests
Type: PaymentRequestsType
URL: https://api.octopus.energy/v1/graphql/
Get all payment requests for the given ledger.
Arguments
| Name | Description |
|---|---|
|
Kraken ledger number. |
Query
query PaymentRequests($ledgerNumber: String!) {
paymentRequests(ledgerNumber: $ledgerNumber) {
paymentRequest {
...PaymentRequestConnectionTypeConnectionFragment
}
}
}
Variables
{
"ledgerNumber": "figure-family-mother-edge-happen"
}
Response
{
"data": {
"paymentRequests": {
"paymentRequest": PaymentRequestConnectionTypeConnection
}
}
}
plannedDispatches
Type: [UpsideDispatchType]
URL: https://api.octopus.energy/v1/graphql/
All planned device dispatches 24 hours ahead, (usually) in time order.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4340: Unable to fetch planned dispatches.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'plannedDispatches' field is deprecated.
Please use 'flexPlannedDispatches' instead.
- Marked as deprecated on 2025-05-27.
- Scheduled for removal on or after 2026-01-16.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/604/
Arguments
| Name | Description |
|---|---|
|
Query
query PlannedDispatches($accountNumber: String!) {
plannedDispatches(accountNumber: $accountNumber) {
delta
end
meta {
...UpsideDispatchMetaTypeFragment
}
start
}
}
Variables
{
"accountNumber": "A-36336C44"
}
Response
{
"data": {
"plannedDispatches": [
{
"delta": "1.0",
"end": "1989-08-03T05:57:54.457057+00:00",
"meta": UpsideDispatchMetaType,
"start": "1974-04-28T12:41:43.610797+00:00"
}
]
}
}
portfolio
Type: PortfolioType
URL: https://api.octopus.energy/v1/graphql/
Get details about a portfolio, using its portfolio number.
The possible errors that can be raised are:
- KT-CT-9403: Received an invalid portfolioId.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Portfolio number to be retrieved. |
Query
query Portfolio($portfolioNumber: String!) {
portfolio(portfolioNumber: $portfolioNumber) {
accounts {
...AccountConnectionTypeConnectionFragment
}
ancestors {
...PortfolioConnectionTypeConnectionFragment
}
billingName
brand
collectiveBilling
createdAt
depth
descendants {
...PortfolioConnectionTypeConnectionFragment
}
id
leadAccountNumber
name
number
operationsTeam {
...OperationsTeamTypeFragment
}
parent {
...PortfolioTypeFragment
}
updatedAt
}
}
Variables
{
"portfolioNumber": "P-B5C4F2C1"
}
Response
{
"data": {
"portfolio": {
"accounts": AccountConnectionTypeConnection,
"ancestors": PortfolioConnectionTypeConnection,
"billingName": "woman-present-there-peace-way",
"brand": "west-area-agreement-wife-yeah",
"collectiveBilling": true,
"createdAt": "2014-03-07T00:03:27.079642+00:00",
"depth": 92,
"descendants": PortfolioConnectionTypeConnection,
"id": "62116944",
"leadAccountNumber": "A-EE6A167F",
"name": "board-economic-read-nice-fund",
"number": "speak-media-among-west-move",
"operationsTeam": OperationsTeamType,
"parent": PortfolioType,
"updatedAt": "1978-03-11T05:52:26.515235+00:00"
}
}
}
portfolioByReference
Type: PortfolioType
URL: https://api.octopus.energy/v1/graphql/
Get details about a portfolio, using its reference.
The possible errors that can be raised are:
- KT-CT-9409: Invalid portfolio reference.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Portfolio reference namespace-value pair to filter by. |
Query
query PortfolioByReference($portfolioReference: PortfolioReferenceInput!) {
portfolioByReference(portfolioReference: $portfolioReference) {
accounts {
...AccountConnectionTypeConnectionFragment
}
ancestors {
...PortfolioConnectionTypeConnectionFragment
}
billingName
brand
collectiveBilling
createdAt
depth
descendants {
...PortfolioConnectionTypeConnectionFragment
}
id
leadAccountNumber
name
number
operationsTeam {
...OperationsTeamTypeFragment
}
parent {
...PortfolioTypeFragment
}
updatedAt
}
}
Variables
{
"portfolioReference": PortfolioReferenceInput
}
Response
{
"data": {
"portfolioByReference": {
"accounts": AccountConnectionTypeConnection,
"ancestors": PortfolioConnectionTypeConnection,
"billingName": "machine-edge-item-worry-rest",
"brand": "him-prevent-reduce-stuff-reduce",
"collectiveBilling": true,
"createdAt": "1996-10-31T17:17:27.428401+00:00",
"depth": 44,
"descendants": PortfolioConnectionTypeConnection,
"id": "45904401",
"leadAccountNumber": "A-54DF4F9A",
"name": "newspaper-exactly-them-ability-left",
"number": "film-half-hard-kid-police",
"operationsTeam": OperationsTeamType,
"parent": PortfolioType,
"updatedAt": "1990-06-08T06:35:52.052627+00:00"
}
}
}
possibleErrors
Type: PossibleErrorsOutputType
URL: https://api.octopus.energy/v1/graphql/
Possible errors of the requested query/mutation.
The possible errors that can be raised are:
- KT-CT-1606: Query/Mutation not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query or Mutation for which to get the possible errors list. |
Query
query PossibleErrors($input: PossibleErrorsInputType!) {
possibleErrors(input: $input) {
authErrors
name
possibleErrors {
...PossibleErrorTypeFragment
}
type
}
}
Variables
{
"input": PossibleErrorsInputType
}
Response
{
"data": {
"possibleErrors": {
"authErrors": true,
"name": "himself-and-agency-will-school",
"possibleErrors": [PossibleErrorType],
"type": "query"
}
}
}
prepayBalanceSnapshot
Type: PrepayBalanceSnapshotType
URL: https://api.octopus.energy/v1/graphql/
Retrieve a snapshot of a prepay device balance at a moment in time.
The possible errors that can be raised are:
- KT-GB-4048: Device not in prepayment mode.
- KT-GB-4049: Balance snapshot not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The ESME or GSME's EUI64 ID, e.g. '12-34-5A-FF-FF-6B-C7-89'. |
Query
query PrepayBalanceSnapshot($deviceId: String!) {
prepayBalanceSnapshot(deviceId: $deviceId) {
accumulatedDebtRegisterInMillipence
asAt
creditInPence
debtInPence
emergencyCreditBalanceInMillipence
emergencyCreditInPence
meterBalanceInMillipence
paymentDebtRegisterInMillipence
timeDebtRegisterOneInMillipence
timeDebtRegisterTwoInMillipence
}
}
Variables
{
"deviceId": "75620876"
}
Response
{
"data": {
"prepayBalanceSnapshot": {
"accumulatedDebtRegisterInMillipence": 76,
"asAt": "1987-05-15T14:12:53.076228+00:00",
"creditInPence": 49,
"debtInPence": 17,
"emergencyCreditBalanceInMillipence": 36,
"emergencyCreditInPence": 4,
"meterBalanceInMillipence": 45,
"paymentDebtRegisterInMillipence": 18,
"timeDebtRegisterOneInMillipence": 96,
"timeDebtRegisterTwoInMillipence": 9
}
}
}
prepayPayments
Type: PrepayPaymentConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Payments made to add credit to the account's smart prepay meters.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
Query
query PrepayPayments(
$accountNumber: String!,
$after: String,
$before: String,
$first: Int,
$last: Int
) {
prepayPayments(
accountNumber: $accountNumber,
after: $after,
before: $before,
first: $first,
last: $last
) {
edgeCount
edges {
...PrepayPaymentConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-A274F8B7",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10
}
Response
{
"data": {
"prepayPayments": {
"edgeCount": 34,
"edges": PrepayPaymentConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 89
}
}
}
printBatch
Type: PrintBatchType!
URL: https://api.octopus.energy/v1/graphql/
Get print batch details, including messages in the batch.
The possible errors that can be raised are:
- KT-CT-9013: Invalid data.
- KT-CT-9012: Invalid data.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query PrintBatch($batchId: ID) {
printBatch(batchId: $batchId) {
id
messages {
...PrintMessageTypeConnectionFragment
}
status
}
}
Variables
{
"batchId": "24882116"
}
Response
{
"data": {
"printBatch": {
"id": "86547674",
"messages": PrintMessageTypeConnection,
"status": "OPEN"
}
}
}
productEligibility
Type: ProductEligibilityType
URL: https://api.octopus.energy/v1/graphql/
Define product eligibility.
The possible errors that can be raised are:
- KT-GB-4135: Unauthorized.
- KT-CT-4910: No product exists with the given input.
- KT-CT-4623: Unauthorized.
- KT-CT-4190: Error while defining product eligibility for product enrolment candidate.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account to which meter point belongs. |
|
Meter point reference/administration number. |
|
Product code for which verify eligibility to. |
Query
query ProductEligibility(
$accountNumber: String!,
$mpxn: String!,
$productCode: String!
) {
productEligibility(
accountNumber: $accountNumber,
mpxn: $mpxn,
productCode: $productCode
) {
ineligibilityReasons {
...ProductIneligibilityReasonDetailsFragment
}
isEligible
}
}
Variables
{
"accountNumber": "A-CAFA15E9",
"mpxn": "professor-computer-now-close-indicate",
"productCode": "sport-next-off-nice-song"
}
Response
{
"data": {
"productEligibility": {
"ineligibilityReasons": [ProductIneligibilityReasonDetails],
"isEligible": true
}
}
}
productEligibilityV2
Type: ProductEligibilityType
URL: https://api.octopus.energy/v1/graphql/
Define product eligibility using the updated framework.
The possible errors that can be raised are:
- KT-GB-4135: Unauthorized.
- KT-CT-4910: No product exists with the given input.
- KT-CT-4623: Unauthorized.
- KT-CT-4190: Error while defining product eligibility for product enrolment candidate.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account to which meter point belongs. |
|
Meter point reference/administration number. |
|
Product code for which verify eligibility to. |
Query
query ProductEligibilityV2(
$accountNumber: String!,
$mpxn: String!,
$productCode: String!
) {
productEligibilityV2(
accountNumber: $accountNumber,
mpxn: $mpxn,
productCode: $productCode
) {
ineligibilityReasons {
...ProductIneligibilityReasonDetailsFragment
}
isEligible
}
}
Variables
{
"accountNumber": "A-7B07F233",
"mpxn": "bag-huge-drug-attack-country",
"productCode": "near-question-exactly-share-tax"
}
Response
{
"data": {
"productEligibilityV2": {
"ineligibilityReasons": [ProductIneligibilityReasonDetails],
"isEligible": true
}
}
}
productEnrolment
Type: ProductEnrolmentType
URL: https://api.octopus.energy/v1/graphql/
Get the details of a product enrolment.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account to which the enrolment belongs. |
|
The ID for the enrolment. |
Query
query ProductEnrolment(
$accountNumber: String!,
$enrolmentId: ID!
) {
productEnrolment(
accountNumber: $accountNumber,
enrolmentId: $enrolmentId
) {
account {
...AccountTypeFragment
}
electricityMeterPoint {
...ElectricityMeterPointTypeFragment
}
gasMeterPoint {
...GasMeterPointTypeFragment
}
id
product {
...EnergyProductTypeFragment
}
stages {
...ProductEnrolmentStageTypeFragment
}
status
}
}
Variables
{
"accountNumber": "A-0011F6C9",
"enrolmentId": "75406641"
}
Response
{
"data": {
"productEnrolment": {
"account": AccountType,
"electricityMeterPoint": ElectricityMeterPointType,
"gasMeterPoint": GasMeterPointType,
"id": "79477419",
"product": EnergyProductType,
"stages": [ProductEnrolmentStageType],
"status": "NOT_STARTED"
}
}
}
productEnrolments
Type: [ProductEnrolmentType]
URL: https://api.octopus.energy/v1/graphql/
Get all of the enrolments for an account.
Arguments
| Name | Description |
|---|---|
|
The account to find all the enrolments for. |
Query
query ProductEnrolments($accountNumber: String!) {
productEnrolments(accountNumber: $accountNumber) {
account {
...AccountTypeFragment
}
electricityMeterPoint {
...ElectricityMeterPointTypeFragment
}
gasMeterPoint {
...GasMeterPointTypeFragment
}
id
product {
...EnergyProductTypeFragment
}
stages {
...ProductEnrolmentStageTypeFragment
}
status
}
}
Variables
{
"accountNumber": "A-995D9C23"
}
Response
{
"data": {
"productEnrolments": [
{
"account": AccountType,
"electricityMeterPoint": ElectricityMeterPointType,
"gasMeterPoint": GasMeterPointType,
"id": "65979711",
"product": EnergyProductType,
"stages": [ProductEnrolmentStageType],
"status": "NOT_STARTED"
}
]
}
}
properties
Type: [PropertyType]
URL: https://api.octopus.energy/v1/graphql/
The properties attached to the given account.
This field requires the Authorization header to be set.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query Properties(
$accountNumber: String!,
$active: Boolean
) {
properties(
accountNumber: $accountNumber,
active: $active
) {
address
ancestors {
...PropertyConnectionFragment
}
availableSmets2InstallationTimeslots {
...Smets2InstallationTimeslotTypeFragment
}
coordinates {
...CoordinatesTypeFragment
}
descendants {
...PropertyConnectionFragment
}
electricityMeterPoints {
...ElectricityMeterPointTypeFragment
}
embeddedNetwork {
...EmbeddedNetworkTypeFragment
}
gasMeterPoints {
...GasMeterPointTypeFragment
}
id
isChangeOfTenancyOngoing
isSmets2InstallationAllowed
label
measurements {
...MeasurementConnectionFragment
}
occupancyPeriods {
...OccupancyPeriodTypeFragment
}
parent {
...PropertyInterfaceFragment
}
postcode
richAddress {
...PropertyRichAddressTypeFragment
}
smartDeviceNetworks {
...SmartMeterDeviceNetworkTypeFragment
}
splitAddress
wanCoverage
}
}
Variables
{
"accountNumber": "A-32971716",
"active": true
}
Response
{
"data": {
"properties": [
{
"address": "interesting-teach-assume-my-move",
"ancestors": PropertyConnection,
"availableSmets2InstallationTimeslots": [Smets2InstallationTimeslotType],
"coordinates": CoordinatesType,
"descendants": PropertyConnection,
"electricityMeterPoints": [ElectricityMeterPointType],
"embeddedNetwork": EmbeddedNetworkType,
"gasMeterPoints": [GasMeterPointType],
"id": "94498434",
"isChangeOfTenancyOngoing": true,
"isSmets2InstallationAllowed": true,
"label": "up-effort-life-air-past",
"measurements": MeasurementConnection,
"occupancyPeriods": [OccupancyPeriodType],
"parent": PropertyInterface,
"postcode": "picture-positive-age-artist-together",
"richAddress": PropertyRichAddressType,
"smartDeviceNetworks": [SmartMeterDeviceNetworkType],
"splitAddress": ["gun-better-top-throw-wait"],
"wanCoverage": "HIGH"
}
]
}
}
propertiesSearch
Type: [PropertySearchResult!]!
URL: https://api.octopus.energy/v1/graphql/
Search for properties that are already in Kraken and match the search term.
Arguments
| Name | Description |
|---|---|
|
The search term. It can be an address or a meter point identifier. |
Query
query PropertiesSearch($searchTerm: String!) {
propertiesSearch(searchTerm: $searchTerm) {
property {
...PropertyTypeFragment
}
score
}
}
Variables
{
"searchTerm": "of-purpose-debate-within-develop"
}
Response
{
"data": {
"propertiesSearch": [
{
"property": PropertyType,
"score": "1.0"
}
]
}
}
property
Type: PropertyType
URL: https://api.octopus.energy/v1/graphql/
A property with the given ID. Usually associated with supply points.
This field requires the Authorization header to be set.
Arguments
| Name | Description |
|---|---|
|
The ID of the property. |
Query
query Property($id: ID!) {
property(id: $id) {
address
ancestors {
...PropertyConnectionFragment
}
availableSmets2InstallationTimeslots {
...Smets2InstallationTimeslotTypeFragment
}
coordinates {
...CoordinatesTypeFragment
}
descendants {
...PropertyConnectionFragment
}
electricityMeterPoints {
...ElectricityMeterPointTypeFragment
}
embeddedNetwork {
...EmbeddedNetworkTypeFragment
}
gasMeterPoints {
...GasMeterPointTypeFragment
}
id
isChangeOfTenancyOngoing
isSmets2InstallationAllowed
label
measurements {
...MeasurementConnectionFragment
}
occupancyPeriods {
...OccupancyPeriodTypeFragment
}
parent {
...PropertyInterfaceFragment
}
postcode
richAddress {
...PropertyRichAddressTypeFragment
}
smartDeviceNetworks {
...SmartMeterDeviceNetworkTypeFragment
}
splitAddress
wanCoverage
}
}
Variables
{
"id": "15890291"
}
Response
{
"data": {
"property": {
"address": "reality-red-cell-indicate-game",
"ancestors": PropertyConnection,
"availableSmets2InstallationTimeslots": [Smets2InstallationTimeslotType],
"coordinates": CoordinatesType,
"descendants": PropertyConnection,
"electricityMeterPoints": [ElectricityMeterPointType],
"embeddedNetwork": EmbeddedNetworkType,
"gasMeterPoints": [GasMeterPointType],
"id": "54609145",
"isChangeOfTenancyOngoing": true,
"isSmets2InstallationAllowed": true,
"label": "most-woman-decide-over-without",
"measurements": MeasurementConnection,
"occupancyPeriods": [OccupancyPeriodType],
"parent": PropertyInterface,
"postcode": "different-bill-teach-enter-artist",
"richAddress": PropertyRichAddressType,
"smartDeviceNetworks": [SmartMeterDeviceNetworkType],
"splitAddress": ["by-coach-third-write-magazine"],
"wanCoverage": "HIGH"
}
}
}
propertySearch
Type: [PropertyType]
URL: https://api.octopus.energy/v1/graphql/
Search for properties that are already in Kraken and match the search term.
Deprecated
The 'propertySearch' field is deprecated.
This query is being deprecated in favour of `propertiesSearch`. The latter returns not only the matched properties but the level of confidence in the results through the `score` field.
- Marked as deprecated on 2023-05-23.
- Scheduled for removal on or after 2024-01-01.
Arguments
| Name | Description |
|---|---|
|
The search term. It can be an address or a meter point identifier. |
Query
query PropertySearch($searchTerm: String!) {
propertySearch(searchTerm: $searchTerm) {
address
ancestors {
...PropertyConnectionFragment
}
availableSmets2InstallationTimeslots {
...Smets2InstallationTimeslotTypeFragment
}
coordinates {
...CoordinatesTypeFragment
}
descendants {
...PropertyConnectionFragment
}
electricityMeterPoints {
...ElectricityMeterPointTypeFragment
}
embeddedNetwork {
...EmbeddedNetworkTypeFragment
}
gasMeterPoints {
...GasMeterPointTypeFragment
}
id
isChangeOfTenancyOngoing
isSmets2InstallationAllowed
label
measurements {
...MeasurementConnectionFragment
}
occupancyPeriods {
...OccupancyPeriodTypeFragment
}
parent {
...PropertyInterfaceFragment
}
postcode
richAddress {
...PropertyRichAddressTypeFragment
}
smartDeviceNetworks {
...SmartMeterDeviceNetworkTypeFragment
}
splitAddress
wanCoverage
}
}
Variables
{
"searchTerm": "sea-Republican-take-purpose-close"
}
Response
{
"data": {
"propertySearch": [
{
"address": "local-medical-security-per-follow",
"ancestors": PropertyConnection,
"availableSmets2InstallationTimeslots": [Smets2InstallationTimeslotType],
"coordinates": CoordinatesType,
"descendants": PropertyConnection,
"electricityMeterPoints": [ElectricityMeterPointType],
"embeddedNetwork": EmbeddedNetworkType,
"gasMeterPoints": [GasMeterPointType],
"id": "85823384",
"isChangeOfTenancyOngoing": true,
"isSmets2InstallationAllowed": true,
"label": "process-resource-tax-result-energy",
"measurements": MeasurementConnection,
"occupancyPeriods": [OccupancyPeriodType],
"parent": PropertyInterface,
"postcode": "mother-community-without-talk-economy",
"richAddress": PropertyRichAddressType,
"smartDeviceNetworks": [SmartMeterDeviceNetworkType],
"splitAddress": ["beautiful-game-attention-medical-represent"],
"wanCoverage": "HIGH"
}
]
}
}
providerAuthDetails
Type: ProviderAuthDetailsType
URL: https://api.octopus.energy/v1/graphql/
Auth details (e.g. OAuth 2.0 URI) for the provider (if available).
Deprecated
The 'providerAuthDetails' field is deprecated.
Please use 'startSmartFlexOnboarding' instead.
- Marked as deprecated on 2025-10-30.
- Scheduled for removal on or after 2026-04-30.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/608/
Arguments
| Name | Description |
|---|---|
|
The account number that will be associated with the device. Required for some providers. |
|
The client type the request originated from. Used when oauth_uri is different between web and app. |
|
The device type to get the auth details for (as providers may support multiple). |
|
The ID of the property the device belongs to. |
|
The provider to get the auth details for. |
Query
query ProviderAuthDetails(
$accountNumber: String,
$clientType: ClientType,
$deviceType: KrakenFlexDeviceTypes!,
$propertyId: Int,
$provider: ProviderChoices!
) {
providerAuthDetails(
accountNumber: $accountNumber,
clientType: $clientType,
deviceType: $deviceType,
propertyId: $propertyId,
provider: $provider
) {
oauthUri
}
}
Variables
{
"accountNumber": "A-7FAED021",
"clientType": "APP",
"deviceType": "BATTERIES",
"propertyId": 40211429,
"provider": "BYD"
}
Response
{
"data": {
"providerAuthDetails": {
"oauthUri": "of-call-himself-family-impact"
}
}
}
providerVirtualKeyDetails
Type: ProviderVirtualKeyDetailsType
URL: https://api.octopus.energy/v1/graphql/
Virtual key details (e.g. certificate public key) for the provider (if available).
Arguments
| Name | Description |
|---|---|
|
The device type to get the virtual key details for (as providers may support multiple). |
|
The provider to get the virtual key details for. |
Query
query ProviderVirtualKeyDetails(
$deviceType: KrakenFlexDeviceTypes!,
$provider: ProviderChoices!
) {
providerVirtualKeyDetails(
deviceType: $deviceType,
provider: $provider
) {
virtualKeyName
virtualKeyUri
}
}
Variables
{
"deviceType": "BATTERIES",
"provider": "BYD"
}
Response
{
"data": {
"providerVirtualKeyDetails": {
"virtualKeyName": "herself-herself-director-process-tell",
"virtualKeyUri": "show-particular-police-somebody-Mr"
}
}
}
queryComplexity
Type: QueryComplexityOutputType
URL: https://api.octopus.energy/v1/graphql/
Get the complexity of a query.
Arguments
| Name | Description |
|---|---|
|
Query and relevant variables required to calculate the complexity. |
Query
query QueryComplexity($input: QueryComplexityInputType!) {
queryComplexity(input: $input) {
complexityValue
}
}
Variables
{
"input": QueryComplexityInputType
}
Response
{
"data": {
"queryComplexity": {
"complexityValue": 72
}
}
}
question
Type: String
URL: https://api.octopus.energy/v1/graphql/
Get the customer feedback survey question.
The possible errors that can be raised are:
- KT-CT-5513: Invalid data.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query Question($formId: Int!) {
question(formId: $formId)
}
Variables
{
"formId": 52803243
}
Response
{
"data": {
"question": "color-station-usually-line-affect"
}
}
quote
Type: QuoteType
URL: https://api.octopus.energy/v1/graphql/
This returns the quote with the given code.
If the code was not provided, this query used to return an empty quote, but this usage is no longer supported, as the dedicated consumptionEstimates query serves that purpose.
Arguments
| Name | Description |
|---|---|
|
Unique identifying code of the quote to retrieve. This argument is optional, but leaving it empty is not supported anymore. |
Query
query Quote($code: String) {
quote(code: $code) {
address {
...QuoteAddressTypeFragment
}
code
elecAnnualConsumptionDay
elecAnnualConsumptionNight
elecAnnualConsumptionStandard
elecEstimate
gasAnnualConsumption
gasEstimate
gspGroupId
includesElectricity
includesGas
isBusiness
latitude
longitude
meterType
mpan
mprn
partnerProductId
paymentMethod
postcode
quotedProducts {
...QuotedProductTypeFragment
}
termsAndConditions {
...TermsAndConditionsTypeFragment
}
}
}
Variables
{
"code": "financial-total-rich-again-gas"
}
Response
{
"data": {
"quote": {
"address": QuoteAddressType,
"code": "adult-then-game-media-say",
"elecAnnualConsumptionDay": 8,
"elecAnnualConsumptionNight": 44,
"elecAnnualConsumptionStandard": 95,
"elecEstimate": true,
"gasAnnualConsumption": 96,
"gasEstimate": true,
"gspGroupId": "20441317",
"includesElectricity": true,
"includesGas": true,
"isBusiness": true,
"latitude": 236.46,
"longitude": 778.4,
"meterType": "NO_METER",
"mpan": "fund-well-seat-lot-back",
"mprn": "study-bag-increase-participant-result",
"partnerProductId": 1,
"paymentMethod": "DIRECTDEBIT",
"postcode": "get-help-five-score-season",
"quotedProducts": [QuotedProductType],
"termsAndConditions": TermsAndConditionsType
}
}
}
quoteRequest
Type: QuoteRequest
URL: https://api.octopus.energy/v1/graphql/
Retrieve a quote request by its code.
The possible errors that can be raised are:
- KT-GB-4618: Quote request not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Code of the quote request. |
Query
query QuoteRequest($quoteCode: String!) {
quoteRequest(quoteCode: $quoteCode) {
code
createdAt
electricitySupplyPoints {
...ElectricitySupplyPointFragment
}
gasSupplyPoints {
...GasSupplyPointFragment
}
termsAndConditions {
...TermsAndConditionsFragment
}
}
}
Variables
{
"quoteCode": "change-why-usually-follow-beat"
}
Response
{
"data": {
"quoteRequest": {
"code": "high-drop-father-stuff-amount",
"createdAt": "2001-05-14T13:54:37.238892+00:00",
"electricitySupplyPoints": [ElectricitySupplyPoint],
"gasSupplyPoints": [GasSupplyPoint],
"termsAndConditions": [TermsAndConditions]
}
}
}
quotingParamDefinitionsForProductOffering
Type: QuotedOfferingParamsType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-CT-12403: Product offering not found.
- KT-CT-12404: Product offering has expired.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The identifier of the product offering. |
Query
query QuotingParamDefinitionsForProductOffering($productOfferingIdentifier: ID) {
quotingParamDefinitionsForProductOffering(productOfferingIdentifier: $productOfferingIdentifier) {
offeringComponents {
...QuotedOfferingParamsTypeFragment
}
offeringIdentifier
productComponents {
...QuotedProductComponentTypeFragment
}
}
}
Variables
{
"productOfferingIdentifier": "84209308"
}
Response
{
"data": {
"quotingParamDefinitionsForProductOffering": {
"offeringComponents": [QuotedOfferingParamsType],
"offeringIdentifier": "63180646",
"productComponents": [QuotedProductComponentType]
}
}
}
rateLimitInfo
Type: CombinedRateLimitInformation
URL: https://api.octopus.energy/v1/graphql/
Combined information about points-allowance rate limiting and request-specific rate limiting.
Query
query RateLimitInfo {
rateLimitInfo {
fieldSpecificRateLimits {
...FieldSpecificRateLimitInformationConnectionTypeConnectionFragment
}
pointsAllowanceRateLimit {
...PointsAllowanceRateLimitInformationFragment
}
}
}
Response
{
"data": {
"rateLimitInfo": {
"fieldSpecificRateLimits": FieldSpecificRateLimitInformationConnectionTypeConnection,
"pointsAllowanceRateLimit": PointsAllowanceRateLimitInformation
}
}
}
readingConsentGranularity
Type: ReadingConsentGranularityType
URL: https://api.octopus.energy/v1/graphql/
Get the current reading consent granularity for a meter point.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meter point. |
Query
query ReadingConsentGranularity($mpan: String!) {
readingConsentGranularity(mpan: $mpan) {
granularityValue
}
}
Variables
{
"mpan": "pattern-body-you-not-light"
}
Response
{
"data": {
"readingConsentGranularity": {
"granularityValue": "hotel-word-ask-worker-necessary"
}
}
}
registeredKrakenflexDevice
Type: KrakenFlexDeviceType
URL: https://api.octopus.energy/v1/graphql/
A device registered with KrakenFlex for a given account.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'registeredKrakenflexDevice' field is deprecated.
Please use 'devices' instead.
- Marked as deprecated on 2024-04-23.
- Scheduled for removal on or after 2026-03-01.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/677/
Arguments
| Name | Description |
|---|---|
|
Query
query RegisteredKrakenflexDevice($accountNumber: String!) {
registeredKrakenflexDevice(accountNumber: $accountNumber) {
chargePointMake
chargePointModel
chargePointPowerInKw
createdAt
hasToken
krakenflexDeviceId
provider
stateOfChargeLimit {
...StateOfChargeLimitFragment
}
status
suspended
testDispatchFailureReason
vehicleBatterySizeInKwh
vehicleMake
vehicleModel
}
}
Variables
{
"accountNumber": "A-0EBDF4E5"
}
Response
{
"data": {
"registeredKrakenflexDevice": {
"chargePointMake": "thank-business-everything-fire-to",
"chargePointModel": "compare-great-address-reality-always",
"chargePointPowerInKw": "1.0",
"createdAt": "2015-01-26T15:52:06.387910+00:00",
"hasToken": true,
"krakenflexDeviceId": "68997715",
"provider": "BYD",
"stateOfChargeLimit": StateOfChargeLimit,
"status": "over-opportunity-economic-product-mother",
"suspended": true,
"testDispatchFailureReason": "NONE",
"vehicleBatterySizeInKwh": "1.0",
"vehicleMake": "particularly-break-relationship-that-pick",
"vehicleModel": "military-already-I-know-room"
}
}
}
returnSchedule
Type: [DepositReturnScheduleOutput]
URL: https://api.octopus.energy/v1/graphql/
Get deposit agreement related return schedules for a given account.
The possible errors that can be raised are:
- KT-CT-4177: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query ReturnSchedule($accountNumber: String!) {
returnSchedule(accountNumber: $accountNumber) {
amount
dueDate
status
}
}
Variables
{
"accountNumber": "A-085CD2AC"
}
Response
{
"data": {
"returnSchedule": [
{
"amount": 50,
"dueDate": "1977-03-24",
"status": "those-well-difference-reflect-run"
}
]
}
}
routingAttributes
Type: [RoutingAttributeType]!
URL: https://api.octopus.energy/v1/graphql/
Get routing attributes available for call routing configuration.
The possible errors that can be raised are:
- KT-CT-11816: Invalid routing attribute category.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Filter by category (LANGUAGE, OPERATIONS_GROUP, SKILL). |
|
Filter by friendly name (case-insensitive). |
Query
query RoutingAttributes(
$category: String,
$search: String
) {
routingAttributes(
category: $category,
search: $search
) {
category
friendlyName
isActive
ref
subcategory
}
}
Variables
{
"category": "others-contain-relate-question-government",
"search": "rule-improve-recently-teacher-owner"
}
Response
{
"data": {
"routingAttributes": [
{
"category": "yeah-remember-difficult-soldier-scientist",
"friendlyName": "international-writer-policy-still-understand",
"isActive": true,
"ref": "very-red-purpose-body-from",
"subcategory": "per-hand-general-what-point"
}
]
}
}
salesFunnelByCode
Type: SalesFunnel
URL: https://api.octopus.energy/v1/graphql/
Get the sales funnel by input.
The possible errors that can be raised are:
- KT-CT-8912: Funnel not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Input fields for retrieving the sales funnel. |
Query
query SalesFunnelByCode($input: SalesFunnelInput!) {
salesFunnelByCode(input: $input) {
code
collections {
...CollectionFragment
}
funnelType
name
rules {
...SalesFunnelRuleFragment
}
stages {
...SalesFunnelStageFragment
}
status
uncollectedFields {
...FunnelFieldFragment
}
}
}
Variables
{
"input": SalesFunnelInput
}
Response
{
"data": {
"salesFunnelByCode": {
"code": "hundred-city-especially-down-both",
"collections": [Collection],
"funnelType": "LEAD",
"name": "wonder-court-federal-significant-training",
"rules": [SalesFunnelRule],
"stages": [SalesFunnelStage],
"status": "DRAFT",
"uncollectedFields": [FunnelField]
}
}
}
Arguments
| Name | Description |
|---|---|
|
Input fields for retrieving the sales funnels. |
Query
query SalesFunnels($input: SalesFunnelsInput) {
salesFunnels(input: $input) {
code
collections {
...CollectionFragment
}
funnelType
name
rules {
...SalesFunnelRuleFragment
}
stages {
...SalesFunnelStageFragment
}
status
uncollectedFields {
...FunnelFieldFragment
}
}
}
Variables
{
"input": SalesFunnelsInput
}
Response
{
"data": {
"salesFunnels": [
{
"code": "table-foot-give-paper-store",
"collections": [Collection],
"funnelType": "LEAD",
"name": "information-evening-culture-material-that",
"rules": [SalesFunnelRule],
"stages": [SalesFunnelStage],
"status": "DRAFT",
"uncollectedFields": [FunnelField]
}
]
}
}
savingSessions
Type: SavingSessionsType
URL: https://api.octopus.energy/v1/graphql/
Saving sessions queries for an account.
Deprecated
The 'savingSessions' field is deprecated.
Saving Sessions will no longer be supported via Kraken.
- Marked as deprecated on 2026-02-18.
- Scheduled for removal on or after 2026-03-31.
Arguments
| Name | Description |
|---|---|
|
Kraken account number. |
Query
query SavingSessions($accountNumber: String) {
savingSessions(accountNumber: $accountNumber) {
account {
...SavingSessionsAccountTypeFragment
}
eventCount
events {
...SavingSessionsEventTypeFragment
}
regionalResults {
...SavingSessionsRegionalResultTypeFragment
}
}
}
Variables
{
"accountNumber": "A-FB9BAD20"
}
Response
{
"data": {
"savingSessions": {
"account": SavingSessionsAccountType,
"eventCount": 91,
"events": [SavingSessionsEventType],
"regionalResults": [SavingSessionsRegionalResultType]
}
}
}
searchLead
Type: LeadIdType
URL: https://api.octopus.energy/v1/graphql/
Search and return the identifiers of a lead.
The possible errors that can be raised are:
- KT-CT-8920: Search filters are invalid.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Filters to search for leads. All passed filters will be checked against the lead. |
Query
query SearchLead($filters: SearchLeadFilters!) {
searchLead(filters: $filters) {
number
}
}
Variables
{
"filters": SearchLeadFilters
}
Response
{
"data": {
"searchLead": {
"number": "onto-that-huge-according-us"
}
}
}
segInstallation
Type: SEGInstallationType!
URL: https://api.octopus.energy/v1/graphql/
The validity of a SEG installation via the MCS installation database.
Arguments
| Name | Description |
|---|---|
|
The MCS certificate number. |
Query
query SegInstallation($mcsCertificateNumber: String!) {
segInstallation(mcsCertificateNumber: $mcsCertificateNumber) {
isValid
}
}
Variables
{
"mcsCertificateNumber": "those-responsibility-story-bad-whether"
}
Response
{
"data": {
"segInstallation": {
"isValid": true
}
}
}
settableConsentGranularities
Type: [ConsentGranularityValue]
URL: https://api.octopus.energy/v1/graphql/
Get valid consent granularities for a meter point, a product or both.
The possible errors that can be raised are:
- KT-GB-9514: No available product found.
- KT-CT-1111: Unauthorized.
- KT-GB-4504: At least one parameter must be provided.
- KT-GB-4502: Unable to determine acceptable granularities. Please try again shortly.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The MPAN of the meter point. |
|
The product code. |
Query
query SettableConsentGranularities(
$mpan: String,
$productCode: ID
) {
settableConsentGranularities(
mpan: $mpan,
productCode: $productCode
)
}
Variables
{
"mpan": "writer-their-guess-expect-raise",
"productCode": "75360073"
}
Response
{
"data": {
"settableConsentGranularities": "HALF_HOURLY"
}
}
shoptopusVoucherAvailability
Type: [ShoptopusVoucherAvailabilityType]
URL: https://api.octopus.energy/v1/graphql/
Describes availability of Shoptopus Vouchers for given Octopoint amounts.
Deprecated
The 'shoptopusVoucherAvailability' field is deprecated.
The Octoplus feature is going through changes. This query is no longer available.
- Marked as deprecated on 2026-02-10.
- Scheduled for removal on or after 2026-08-10.
Arguments
| Name | Description |
|---|---|
|
The values (in Octopoints) for which to return voucher availability (maximum 5 values). |
Query
query ShoptopusVoucherAvailability($voucherValues: [Int]!) {
shoptopusVoucherAvailability(voucherValues: $voucherValues) {
availability
value
}
}
Variables
{
"voucherValues": 39
}
Response
{
"data": {
"shoptopusVoucherAvailability": [
{
"availability": true,
"value": 36
}
]
}
}
siteworksAppointmentSlots
Type: SiteworksAppointmentSlotsType
URL: https://api.octopus.energy/v1/graphql/
Returns set of available siteworks appointment slots for the given property.
The possible errors that can be raised are:
- KT-GB-4221: Could not confirm duplicate property.
- KT-GB-4227: No account for property.
- KT-GB-4214: Booking is not supported with the agent appointed at property.
- KT-GB-4217: Unknown agent carrying out the appointment.
- KT-GB-4232: No meterpoint was found or provided in the payload.
- KT-GB-4239: Job type value is not supported by the agent appointed at property.
- KT-GB-4240: Job type entry is not enabled.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The booking agent appointment reference number. |
|
|
|
The date to search for appointments from. |
|
If job type is not specified, the default job type for the booking adapter will be used. |
|
The property ID to search for. |
|
The duration of the appointment to search for. |
Query
query SiteworksAppointmentSlots(
$agentReference: String,
$calculationId: String,
$fromDate: Date,
$jobType: String,
$propertyId: ID!,
$slotDuration: SlotDuration
) {
siteworksAppointmentSlots(
agentReference: $agentReference,
calculationId: $calculationId,
fromDate: $fromDate,
jobType: $jobType,
propertyId: $propertyId,
slotDuration: $slotDuration
) {
calculationId
expectedJobDurationMinutes
fetchStatus
slots {
...SiteworksAppointmentSlotTypeFragment
}
}
}
Variables
{
"agentReference": "dark-value-career-card-one",
"calculationId": "65876115",
"fromDate": "2013-01-23",
"jobType": "team-out-prevent-to-list",
"propertyId": "11778648",
"slotDuration": "TWO_HOUR"
}
Response
{
"data": {
"siteworksAppointmentSlots": {
"calculationId": "39127016",
"expectedJobDurationMinutes": 7,
"fetchStatus": "PENDING",
"slots": [SiteworksAppointmentSlotType]
}
}
}
siteworksAppointments
Type: SiteworksAppointmentConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Siteworks appointments for the provided postcode.
Deprecated
The 'siteworksAppointments' field is deprecated.
Please use getOnSiteJobsAppointmentById instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-09-01.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
The postcode to search for. |
|
Filter the Siteworks appointments by status. |
Query
query SiteworksAppointments(
$after: String,
$before: String,
$first: Int,
$last: Int,
$postcode: String!,
$statuses: [AppointmentStatus]!
) {
siteworksAppointments(
after: $after,
before: $before,
first: $first,
last: $last,
postcode: $postcode,
statuses: $statuses
) {
edgeCount
edges {
...SiteworksAppointmentConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"postcode": "traditional-serve-money-few-buy",
"statuses": "PENDING"
}
Response
{
"data": {
"siteworksAppointments": {
"edgeCount": 7,
"edges": SiteworksAppointmentConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 4
}
}
}
siteworksBookingAccountSearchByMpan
Type: SiteworksBookingAccountType
URL: https://api.octopus.energy/v1/graphql/
Get siteworks booking information for an account given an MPAN.
The possible errors that can be raised are:
- KT-GB-4225: No account for MPAN.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'siteworksBookingAccountSearchByMpan' field is deprecated.
Please use accountsSearch instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-06-01.
Arguments
| Name | Description |
|---|---|
|
The MPAN to search for. |
Query
query SiteworksBookingAccountSearchByMpan($mpan: String!) {
siteworksBookingAccountSearchByMpan(mpan: $mpan) {
accountType
activeCampaigns {
...SiteworksCampaignTypeFragment
}
billingName
brand
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
number
properties {
...SiteworksBookingPropertyTypeFragment
}
siteworksRequests {
...SiteworksRequestTypeFragment
}
smets2Interest
status
users {
...AccountUserTypeFragment
}
}
}
Variables
{
"mpan": "sometimes-structure-onto-factor-edge"
}
Response
{
"data": {
"siteworksBookingAccountSearchByMpan": {
"accountType": "dream-television-minute-provide-everybody",
"activeCampaigns": [SiteworksCampaignType],
"billingName": "answer-first-off-game-opportunity",
"brand": "after-discussion-wonder-collection-score",
"canModifyPayments": CanModifyPaymentsType,
"marketSupplyAgreements": AgreementConnection,
"number": "term-body-century-raise-benefit",
"properties": [SiteworksBookingPropertyType],
"siteworksRequests": [SiteworksRequestType],
"smets2Interest": "PRIORITY",
"status": "PENDING",
"users": AccountUserType
}
}
}
siteworksBookingAccountSearchByMprn
Type: SiteworksBookingAccountType
URL: https://api.octopus.energy/v1/graphql/
Get siteworks booking information for an account given an MPRN.
The possible errors that can be raised are:
- KT-GB-4226: No account for MPRN.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'siteworksBookingAccountSearchByMprn' field is deprecated.
Please use accountsSearch instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-06-01.
Arguments
| Name | Description |
|---|---|
|
The MPRN to search for. |
Query
query SiteworksBookingAccountSearchByMprn($mprn: String!) {
siteworksBookingAccountSearchByMprn(mprn: $mprn) {
accountType
activeCampaigns {
...SiteworksCampaignTypeFragment
}
billingName
brand
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
number
properties {
...SiteworksBookingPropertyTypeFragment
}
siteworksRequests {
...SiteworksRequestTypeFragment
}
smets2Interest
status
users {
...AccountUserTypeFragment
}
}
}
Variables
{
"mprn": "office-the-view-pattern-party"
}
Response
{
"data": {
"siteworksBookingAccountSearchByMprn": {
"accountType": "woman-particularly-both-writer-fire",
"activeCampaigns": [SiteworksCampaignType],
"billingName": "close-fire-sound-rather-college",
"brand": "development-character-different-through-baby",
"canModifyPayments": CanModifyPaymentsType,
"marketSupplyAgreements": AgreementConnection,
"number": "summer-develop-next-check-dream",
"properties": [SiteworksBookingPropertyType],
"siteworksRequests": [SiteworksRequestType],
"smets2Interest": "PRIORITY",
"status": "PENDING",
"users": AccountUserType
}
}
}
siteworksBookingAccountSearchByNumber
Type: SiteworksBookingAccountType
URL: https://api.octopus.energy/v1/graphql/
Get siteworks booking information for an account given its number.
Deprecated
The 'siteworksBookingAccountSearchByNumber' field is deprecated.
Please use accountsSearch instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-06-01.
Arguments
| Name | Description |
|---|---|
|
The account number to search for. |
Query
query SiteworksBookingAccountSearchByNumber($accountNumber: String!) {
siteworksBookingAccountSearchByNumber(accountNumber: $accountNumber) {
accountType
activeCampaigns {
...SiteworksCampaignTypeFragment
}
billingName
brand
canModifyPayments {
...CanModifyPaymentsTypeFragment
}
marketSupplyAgreements {
...AgreementConnectionFragment
}
number
properties {
...SiteworksBookingPropertyTypeFragment
}
siteworksRequests {
...SiteworksRequestTypeFragment
}
smets2Interest
status
users {
...AccountUserTypeFragment
}
}
}
Variables
{
"accountNumber": "A-58D3723C"
}
Response
{
"data": {
"siteworksBookingAccountSearchByNumber": {
"accountType": "own-close-as-believe-scientist",
"activeCampaigns": [SiteworksCampaignType],
"billingName": "above-fear-actually-meeting-season",
"brand": "back-as-indeed-and-never",
"canModifyPayments": CanModifyPaymentsType,
"marketSupplyAgreements": AgreementConnection,
"number": "week-recently-edge-here-land",
"properties": [SiteworksBookingPropertyType],
"siteworksRequests": [SiteworksRequestType],
"smets2Interest": "PRIORITY",
"status": "PENDING",
"users": AccountUserType
}
}
}
siteworksBookingAccountSearchByPostcode
Type: SiteworksBookingAccountConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get siteworks booking information for accounts at a given postcode.
Deprecated
The 'siteworksBookingAccountSearchByPostcode' field is deprecated.
Please use accountsSearch instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-06-01.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
|
|
|
|
The postcode to search for. |
|
Filter the accounts by status. |
Query
query SiteworksBookingAccountSearchByPostcode(
$after: String,
$before: String,
$first: Int,
$last: Int,
$postcode: String!,
$statuses: [AccountStatusChoices]
) {
siteworksBookingAccountSearchByPostcode(
after: $after,
before: $before,
first: $first,
last: $last,
postcode: $postcode,
statuses: $statuses
) {
edgeCount
edges {
...SiteworksBookingAccountConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"postcode": "concern-week-war-physical-pick",
"statuses": "PENDING"
}
Response
{
"data": {
"siteworksBookingAccountSearchByPostcode": {
"edgeCount": 1,
"edges": SiteworksBookingAccountConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 10
}
}
}
siteworksGetRtsPrimarySecondaryMpans
Type: [RTSPrimarySecondaryMPANs]!
URL: https://api.octopus.energy/v1/graphql/
Calculate the primary and secondary MPANs for an RTS property.
The possible errors that can be raised are:
- KT-GB-4235: The property is not an RTS property.
- KT-GB-4236: Unable to determine the primary and secondary MPANs for property.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'siteworksGetRtsPrimarySecondaryMpans' field is deprecated.
Only for use during the RTS transition.
- Marked as deprecated on 2025-08-01.
- Scheduled for removal on or after 2025-09-01.
Arguments
| Name | Description |
|---|---|
|
The id of the property. |
Query
query SiteworksGetRtsPrimarySecondaryMpans($propertyId: Int!) {
siteworksGetRtsPrimarySecondaryMpans(propertyId: $propertyId) {
mpan
type
}
}
Variables
{
"propertyId": 22234021
}
Response
{
"data": {
"siteworksGetRtsPrimarySecondaryMpans": [
{
"mpan": "poor-whole-public-white-all",
"type": "ok-available-former-often-you"
}
]
}
}
siteworksRequests
Type: CoreSiteworksRequestConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
A query to get a subset of Requests.
Deprecated
The 'siteworksRequests' field is deprecated.
Please use getOnSiteJobsRequests instead.
- Marked as deprecated on 2026-03-01.
- Scheduled for removal on or after 2026-09-01.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Only requests created after this datetime will be included. |
|
|
|
A list of request IDs. If provided, only these requests will be returned. |
|
|
|
Only requests with a status in this list will be included. |
Query
query SiteworksRequests(
$after: String,
$before: String,
$createdAfter: DateTime,
$first: Int,
$ids: [UUID],
$last: Int,
$statuses: [RequestStatus]
) {
siteworksRequests(
after: $after,
before: $before,
createdAfter: $createdAfter,
first: $first,
ids: $ids,
last: $last,
statuses: $statuses
) {
edgeCount
edges {
...CoreSiteworksRequestConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"createdAfter": "2012-07-09T04:45:39.198161+00:00",
"first": 10,
"ids": ["01645d71-af3e-4af9-8c93-a44bcdc9d609"],
"last": 10,
"statuses": "APPROVAL_PENDING"
}
Response
{
"data": {
"siteworksRequests": {
"edgeCount": 94,
"edges": CoreSiteworksRequestConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 1
}
}
}
smartDeviceNetwork
Type: SmartMeterDeviceNetworkType
URL: https://api.octopus.energy/v1/graphql/
Retrieve smartmeter devices connected to the same Home Area Network.
Arguments
| Name | Description |
|---|---|
|
The deviceId of one of the devices on the Home Area Network. |
Query
query SmartDeviceNetwork($deviceId: String!) {
smartDeviceNetwork(deviceId: $deviceId) {
id
smartDevices {
...SmartMeterDeviceTypeFragment
}
}
}
Variables
{
"deviceId": "54795023"
}
Response
{
"data": {
"smartDeviceNetwork": {
"id": "36044572",
"smartDevices": [SmartMeterDeviceType]
}
}
}
smartFlexDeviceSupplyPoint
Type: SmartFlexDeviceSupplyPointType
URL: https://api.octopus.energy/v1/graphql/
The supply point linked to the SmartFlex device.
Arguments
| Name | Description |
|---|---|
|
The SmartFlex device ID to get the supply point details for. |
Query
query SmartFlexDeviceSupplyPoint($smartFlexDeviceId: String) {
smartFlexDeviceSupplyPoint(smartFlexDeviceId: $smartFlexDeviceId) {
importSupplyPointId
smartFlexDeviceId
}
}
Variables
{
"smartFlexDeviceId": "95157918"
}
Response
{
"data": {
"smartFlexDeviceSupplyPoint": {
"importSupplyPointId": "13552039",
"smartFlexDeviceId": "32128110"
}
}
}
smartFlexOnboardingWizards
Type: [SmartFlexOnboardingWizard!]
URL: https://api.octopus.energy/v1/graphql/
A list of wizards for onboarding devices for an account and property.
The possible errors that can be raised are:
- KT-CT-4321: Serializer validation error.
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number, e.g. A-12345678. |
|
Include cancelled wizards. |
|
Include completed wizards. |
|
Filters for onboarding wizards that can be resumed. List limits to one resumable wizard. |
|
Only list wizards for this property. |
|
To get a specific wizard by ID, if it exists. |
Query
query SmartFlexOnboardingWizards(
$accountNumber: String!,
$includeCancelled: Boolean,
$includeCompleted: Boolean,
$isResumable: Boolean,
$propertyId: Int,
$wizardId: ID
) {
smartFlexOnboardingWizards(
accountNumber: $accountNumber,
includeCancelled: $includeCancelled,
includeCompleted: $includeCompleted,
isResumable: $isResumable,
propertyId: $propertyId,
wizardId: $wizardId
) {
backendScreen {
... on ComponentListType {
...ComponentListTypeFragment
}
... on Dashboard {
...DashboardFragment
}
... on FormScreenType {
...FormScreenTypeFragment
}
... on GenericBackendScreen {
...GenericBackendScreenFragment
}
}
completedSteps {
...SmartFlexOnboardingStepInterfaceFragment
}
currentStep {
...SmartFlexOnboardingStepInterfaceFragment
}
deviceType
displayName
id
resumable {
...SmartFlexResumableFragment
}
}
}
Variables
{
"accountNumber": "A-9C2628C3",
"includeCancelled": true,
"includeCompleted": true,
"isResumable": true,
"propertyId": 76506279,
"wizardId": "90351600"
}
Response
{
"data": {
"smartFlexOnboardingWizards": [
{
"backendScreen": ComponentListType,
"completedSteps": SmartFlexOnboardingStepInterface,
"currentStep": SmartFlexOnboardingStepInterface,
"deviceType": "BATTERIES",
"displayName": "organization-soon-put-wonder-individual",
"id": "96609293",
"resumable": SmartFlexResumable
}
]
}
}
smartMeterDataPreferences
Type: SmartMeterDataPreferencesType
URL: https://api.octopus.energy/v1/graphql/
The possible errors that can be raised are:
- KT-CT-4023: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query SmartMeterDataPreferences($accountNumber: String!) {
smartMeterDataPreferences(accountNumber: $accountNumber) {
readingFrequency
readingsAnalysisConsentProvided
readingsAnalysisConsentUpdatedDatetime
}
}
Variables
{
"accountNumber": "A-0A301271"
}
Response
{
"data": {
"smartMeterDataPreferences": {
"readingFrequency": "DAILY",
"readingsAnalysisConsentProvided": true,
"readingsAnalysisConsentUpdatedDatetime": "2025-10-28T01:54:37.524371+00:00"
}
}
}
smartMeterTelemetry
Type: [SmartMeterTelemetryType]
URL: https://api.octopus.energy/v1/graphql/
Query telemetry data collected by the CAD associated with the provided ESME or GSME device ID.
If only the smart meter device ID is provided, the latest data available will be returned.
Additionally including the range options (start, end, and grouping) will return the data for that time period, at the desired granularity.
The possible errors that can be raised are:
- KT-GB-4039: Unable to query smart meter telemetry data.
- KT-GB-4050: Smart meter not found.
- KT-GB-4040: 'start', 'end', and 'grouping' must all be provided.
- KT-GB-4041: 'end' should be later than 'start'.
- KT-GB-4051: The start of the range is too far in the past.
- KT-GB-4042: Too many requests. Please wait before trying again.
- KT-GB-4043: A network error occurred. Please try again.
- KT-GB-4056: No Device Network (HAN) record found for the device.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The ESME or GSME's EUI64 ID, e.g. '12-34-5A-FF-FF-6B-C7-89' |
|
The end time of the range of readings (exclusive), e.g. '2022-01-28T16:34:42+00:00'. If no UTC timezone offset is included, UTC (+00:00) will be assumed. |
|
The granularity of the returned data. The representative data item (e.g. consumption) for each group (e.g. every 5 minutes) will be the mean value over that period. |
|
The start time of the range of readings (inclusive), e.g. '2022-01-28T16:33:22+00:00'. If no UTC timezone offset is included, UTC (+00:00) will be assumed. |
Query
query SmartMeterTelemetry(
$deviceId: String!,
$end: DateTime,
$grouping: TelemetryGrouping,
$start: DateTime
) {
smartMeterTelemetry(
deviceId: $deviceId,
end: $end,
grouping: $grouping,
start: $start
) {
consumption
consumptionDelta
costDelta
costDeltaWithTax
demand
export
readAt
}
}
Variables
{
"deviceId": "24493660",
"end": "2013-11-14T04:48:34.521778+00:00",
"grouping": "TEN_SECONDS",
"start": "2001-12-22T21:31:07.460988+00:00"
}
Response
{
"data": {
"smartMeterTelemetry": [
{
"consumption": "1.0",
"consumptionDelta": "1.0",
"costDelta": "1.0",
"costDeltaWithTax": "1.0",
"demand": "1.0",
"export": "1.0",
"readAt": "2022-09-16T05:48:00.649569+00:00"
}
]
}
}
smartTariffComparison
Type: SmartTariffComparisonType
URL: https://api.octopus.energy/v1/graphql/
Compare consumption costs for different smart tariffs.
The possible errors that can be raised are:
- KT-GB-10101: Electricity agreement not found.
- KT-GB-10103: Not enough consumption data.
- KT-GB-10102: Error while calculating consumption costs.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
MPAN of the import meter point linked to the meter. |
Query
query SmartTariffComparison($mpan: String) {
smartTariffComparison(mpan: $mpan) {
consumptionReadingsEndAt
consumptionReadingsStartAt
costComparisons {
...TariffComparisonTypeFragment
}
currentCost
currentCostWithTax
}
}
Variables
{
"mpan": "high-admit-what-idea-next"
}
Response
{
"data": {
"smartTariffComparison": {
"consumptionReadingsEndAt": "2002-09-15T15:00:08.774441+00:00",
"consumptionReadingsStartAt": "1975-01-01T23:43:57.703861+00:00",
"costComparisons": [TariffComparisonType],
"currentCost": 316.95,
"currentCostWithTax": 179.18
}
}
}
supplyPoint
Type: SupplyPointType
URL: https://api.octopus.energy/v1/graphql/
Get a supply point by its market specific id.
The possible errors that can be raised are:
- KT-CT-4722: Supply point readings API not configured.
- KT-CT-4719: No supply point found for identifier provided.
- KT-CT-4723: Invalid market name provided.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The market specific supply point id. |
|
The name of the market in which this supply point exists. |
Query
query SupplyPoint(
$externalIdentifier: String!,
$marketName: String!
) {
supplyPoint(
externalIdentifier: $externalIdentifier,
marketName: $marketName
) {
devices {
...DevicesConnectionFragment
}
externalIdentifier
id
marketName
meterPoint {
... on ElectricityMeterPointType {
...ElectricityMeterPointTypeFragment
}
... on GasMeterPointType {
...GasMeterPointTypeFragment
}
}
property {
...PropertyTypeFragment
}
readings {
...ReadingsFragment
}
}
}
Variables
{
"externalIdentifier": "34413487",
"marketName": "brother-serious-hour-gun-attack"
}
Response
{
"data": {
"supplyPoint": {
"devices": DevicesConnection,
"externalIdentifier": "29398181",
"id": "73838228",
"marketName": "cut-direction-least-loss-wind",
"meterPoint": ElectricityMeterPointType,
"property": PropertyType,
"readings": Readings
}
}
}
supplyPoints
Type: SupplyPointConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Get list of supply points.
Arguments
| Name | Description |
|---|---|
|
Filter meter points by account. |
|
|
|
|
|
|
|
|
|
Filter meter points by portfolio. |
Query
query SupplyPoints(
$accountNumber: String,
$after: String,
$before: String,
$first: Int,
$last: Int,
$portfolioNumber: String
) {
supplyPoints(
accountNumber: $accountNumber,
after: $after,
before: $before,
first: $first,
last: $last,
portfolioNumber: $portfolioNumber
) {
edgeCount
edges {
...SupplyPointConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-B15FBC93",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"first": 10,
"last": 10,
"portfolioNumber": "P-C1831581"
}
Response
{
"data": {
"supplyPoints": {
"edgeCount": 62,
"edges": SupplyPointConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 92
}
}
}
taskResult
Type: TaskResult
URL: https://api.octopus.energy/v1/graphql/
Get the status of a background task.
The possible errors that can be raised are:
- KT-CT-10401: Task not found.
- KT-CT-1113: Disabled GraphQL field requested.
Query
query TaskResult(
$accountNumber: String!,
$taskId: String!
) {
taskResult(
accountNumber: $accountNumber,
taskId: $taskId
) {
error
result
status
}
}
Variables
{
"accountNumber": "A-2913D885",
"taskId": "54548776"
}
Response
{
"data": {
"taskResult": {
"error": "upon-series-account-table-rest",
"result": {"key": "value"},
"status": "STARTED"
}
}
}
termsAndConditionsForProduct
Type: GbrTermsAndConditionsType
URL: https://api.octopus.energy/v1/graphql/
Get the active terms and conditions for a product.
The possible errors that can be raised are:
- KT-CT-8501: No active terms and conditions found for product.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
Query
query TermsAndConditionsForProduct($productCode: String!) {
termsAndConditionsForProduct(productCode: $productCode) {
brandCode
effectiveFrom
html
markdown
name
pdfUrl
version
}
}
Variables
{
"productCode": "investment-morning-game-drug-prepare"
}
Response
{
"data": {
"termsAndConditionsForProduct": {
"brandCode": "president-until-how-suddenly-consider",
"effectiveFrom": "1975-05-19T18:31:41.474088+00:00",
"html": "task-glass-movie-material-wish",
"markdown": "should-national-simple-very-place",
"name": "will-family-peace-blue-five",
"pdfUrl": "item-eye-hope-option-heart",
"version": "kitchen-agency-member-no-nice"
}
}
}
thirdPartyViewer
Type: ThirdPartyOrganizationType
URL: https://api.octopus.energy/v1/graphql/
The currently authenticated third party.
This field requires the Authorization header to be set.
Query
query ThirdPartyViewer {
thirdPartyViewer {
name
permissions {
...ThirdPartyPermissionFragment
}
}
}
Response
{
"data": {
"thirdPartyViewer": {
"name": "production-including-purpose-our-anyone",
"permissions": [ThirdPartyPermission]
}
}
}
trigger
Type: Trigger!
URL: https://api.octopus.energy/v1/graphql/
Get the details of a published trigger with a given ID.
The possible errors that can be raised are:
- KT-CT-9904: Trigger not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The ID of the trigger. |
Query
query Trigger($triggerId: ID!) {
trigger(triggerId: $triggerId) {
accounts {
...AccountConnectionTypeConnectionFragment
}
accountsLinkedAt
createdAt
id
messages {
...MessageConnectionFragment
}
processingStatus
triggerTypeCode
}
}
Variables
{
"triggerId": "15015374"
}
Response
{
"data": {
"trigger": {
"accounts": AccountConnectionTypeConnection,
"accountsLinkedAt": "2013-05-06T03:44:31.928001+00:00",
"createdAt": "2003-09-10T13:23:54.038379+00:00",
"id": "53239533",
"messages": MessageConnection,
"processingStatus": "UNPROCESSED",
"triggerTypeCode": "that-story-hospital-protect-like"
}
}
}
urls
Type: Urls
URL: https://api.octopus.energy/v1/graphql/
URLs for an account.
The possible errors that can be raised are:
- KT-CT-4123: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number of the URLs' account. |
Query
query Urls($accountNumber: String!) {
urls(accountNumber: $accountNumber) {
bookSmartMeterInstallation
}
}
Variables
{
"accountNumber": "A-9BB0FD56"
}
Response
{
"data": {
"urls": {
"bookSmartMeterInstallation": "buy-receive-girl-car-challenge"
}
}
}
useSmartPearForInstalls
Type: Boolean
URL: https://api.octopus.energy/v1/graphql/
Retrieve a boolean which is True if the meter device is on SmartPear, False if on uSmart.
The possible errors that can be raised are:
- KT-GB-4050: Smart meter not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The deviceId of one of the meters on the Home Area Network. |
Query
query UseSmartPearForInstalls($deviceId: String!) {
useSmartPearForInstalls(deviceId: $deviceId)
}
Variables
{
"deviceId": "47542944"
}
Response
{
"data": {
"useSmartPearForInstalls": true
}
}
userVehicles
Type: [UserVehiclesType]
URL: https://api.octopus.energy/v1/graphql/
A list of vehicles available to the user.
Note: If the API returns an empty list, there might be a delay between the vehicle being registered in the provider's system, and data being fetched from the vehicle's manufacturer. In such cases, the query should be retried after a few seconds.
The possible errors that can be raised are:
- KT-CT-4314: Unable to get provider details.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'userVehicles' field is deprecated.
Please use 'startSmartFlexOnboarding' instead.
- Marked as deprecated on 2025-10-30.
- Scheduled for removal on or after 2026-04-30.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/608/
Arguments
| Name | Description |
|---|---|
|
|
|
The authentication details required given the chosen provider. |
|
The provider used to authenticate the device (default Enode). |
Query
query UserVehicles(
$accountNumber: String,
$authentication: AuthenticationInput,
$supportedProvider: ProviderChoices
) {
userVehicles(
accountNumber: $accountNumber,
authentication: $authentication,
supportedProvider: $supportedProvider
) {
information {
...VehicleInformationTypeFragment
}
vehicleId
}
}
Variables
{
"accountNumber": "A-49AAA550",
"authentication": AuthenticationInput,
"supportedProvider": "BYD"
}
Response
{
"data": {
"userVehicles": [
{
"information": VehicleInformationType,
"vehicleId": "53972706"
}
]
}
}
validateBankAccount
Type: ValidateBankAccount
URL: https://api.octopus.energy/v1/graphql/
Validate a bank account.
The possible errors that can be raised are:
- KT-GB-3913: The vendor is currently unavailable.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Query
query ValidateBankAccount(
$accountNumber: String!,
$sortCode: String!,
$vendor: PaymentsVendorChoices
) {
validateBankAccount(
accountNumber: $accountNumber,
sortCode: $sortCode,
vendor: $vendor
) {
bankName
branch
county
line1
line2
line3
line4
postcode
town
}
}
Variables
{
"accountNumber": "A-05B43AEE",
"sortCode": "method-leg-know-politics-teacher",
"vendor": "SMARTDEBIT"
}
Response
{
"data": {
"validateBankAccount": {
"bankName": "radio-voice-draw-white-account",
"branch": "no-inside-hear-sign-rock",
"county": "suddenly-pay-attack-answer-glass",
"line1": "call-pick-capital-let-himself",
"line2": "there-small-road-perform-population",
"line3": "item-fast-check-leave-PM",
"line4": "strong-back-hard-sense-air",
"postcode": "alone-generation-marriage-issue-explain",
"town": "great-item-my-community-meet"
}
}
}
validateReferralClaimCode
Type: ReferralClaimCodeType
URL: https://api.octopus.energy/v1/graphql/
Validate referral claim code.
The possible errors that can be raised are:
- KT-CT-6724: Referral claim code not found.
- KT-CT-6726: Referral claim code has already been redeemed.
- KT-CT-6727: Referral claim code is not available.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'validateReferralClaimCode' field is deprecated.
Use the global territories.common.referrals.validateReferralCode query instead.
- Marked as deprecated on 2025-10-20.
- Scheduled for removal on or after 2026-10-20.
Arguments
| Name | Description |
|---|---|
|
Referral claim code value. |
Query
query ValidateReferralClaimCode($value: String!) {
validateReferralClaimCode(value: $value) {
accountReferral {
...ReferralTypeFragment
}
createdAt
id
isValid
referralScheme {
...ReferralSchemeTypeFragment
}
value
}
}
Variables
{
"value": "treatment-value-deal-south-voice"
}
Response
{
"data": {
"validateReferralClaimCode": {
"accountReferral": ReferralType,
"createdAt": "1992-12-23T02:21:45.329091+00:00",
"id": 93640046,
"isValid": true,
"referralScheme": ReferralSchemeType,
"value": "natural-simply-low-near-relationship"
}
}
}
validateReferralCode
Type: ReferralClaimCodeType
URL: https://api.octopus.energy/v1/graphql/
Validate referral claim code.
Arguments
| Name | Description |
|---|---|
|
Referral claim code value. |
Query
query ValidateReferralCode($value: String!) {
validateReferralCode(value: $value) {
accountReferral {
...ReferralTypeFragment
}
createdAt
id
isValid
referralScheme {
...ReferralSchemeTypeFragment
}
value
}
}
Variables
{
"value": "head-north-me-water-table"
}
Response
{
"data": {
"validateReferralCode": {
"accountReferral": ReferralType,
"createdAt": "1991-09-21T20:56:11.408321+00:00",
"id": 24499273,
"isValid": true,
"referralScheme": ReferralSchemeType,
"value": "send-everything-here-bar-modern"
}
}
}
vehicleChargingPreferences
Type: VehicleChargingPreferencesType
URL: https://api.octopus.energy/v1/graphql/
Vehicle charging preference details.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4339: Your device charging preferences could not be fetched.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'vehicleChargingPreferences' field is deprecated.
Please use 'devices.preferences' instead.
- Marked as deprecated on 2024-04-23.
- Scheduled for removal on or after 2026-03-01.
You can read more about this deprecation on:
https://announcements.kraken.tech/announcements/public/675/
Arguments
| Name | Description |
|---|---|
|
Query
query VehicleChargingPreferences($accountNumber: String!) {
vehicleChargingPreferences(accountNumber: $accountNumber) {
maximumSocPercentage
minimumSocPercentage
weekdayTargetSoc
weekdayTargetTime
weekendTargetSoc
weekendTargetTime
}
}
Variables
{
"accountNumber": "A-EE2171D5"
}
Response
{
"data": {
"vehicleChargingPreferences": {
"maximumSocPercentage": 87,
"minimumSocPercentage": 63,
"weekdayTargetSoc": 99,
"weekdayTargetTime": "hand-idea-past-interesting-catch",
"weekendTargetSoc": 6,
"weekendTargetTime": "no-employee-offer-why-series"
}
}
}
verificationStatus
Type: EmailVerificationStatus
URL: https://api.octopus.energy/v1/graphql/
Check the verification status of a given email address.
Arguments
| Name | Description |
|---|---|
|
The email address to be checked. |
Query
query VerificationStatus($email: String!) {
verificationStatus(email: $email) {
email
status
}
}
Variables
{
"email": "purpose-lose-you-deep-both"
}
Response
{
"data": {
"verificationStatus": {
"email": "at-Mr-city-call-he",
"status": "NOT_SENT"
}
}
}
viewer
Type: AccountUserType
URL: https://api.octopus.energy/v1/graphql/
The currently authenticated user.
This field requires the Authorization header to be set.
Query
query Viewer {
viewer {
accountUserRoles {
...AccountUserRoleTypeFragment
}
accounts {
...AccountInterfaceFragment
}
address {
...RichAddressTypeFragment
}
alternativePhoneNumbers
businesses {
...BusinessConnectionTypeConnectionFragment
}
consents {
...ConsentTypeFragment
}
createdAt
dateOfBirth
details {
...AccountUserDetailTypeFragment
}
email
familyName
fullName
givenName
hasFamilyIssues
holdMusicChoices {
...TrackOptionTypeFragment
}
id
isActive
isDeceased
isInHardship
isOptedInToWof
label
landline
liveSecretKey
mobile
number
paymentMethods {
...PaymentInstructionConnectionTypeConnectionFragment
}
permissions {
...AccountUserPermissionFragment
}
portfolioIds
portfolioUserRoles {
...PortfolioUserRoleTypeFragment
}
portfolios {
...PortfolioConnectionTypeConnectionFragment
}
preferences {
...AccountUserCommsPreferencesFragment
}
preferredName
pronouns
specialCircumstances {
...SpecialCircumstancesTypeFragment
}
title
}
}
Response
{
"data": {
"viewer": {
"accountUserRoles": [AccountUserRoleType],
"accounts": AccountInterface,
"address": RichAddressType,
"alternativePhoneNumbers": ["concern-buy-scientist-feel-almost"],
"businesses": BusinessConnectionTypeConnection,
"consents": ConsentType,
"createdAt": "1987-02-11T10:35:09.321918+00:00",
"dateOfBirth": "2024-12-03",
"details": [AccountUserDetailType],
"email": "light-experience-federal-box-about",
"familyName": "Oconnor",
"fullName": "they-word-sure-cold-behavior",
"givenName": "Jonathan",
"hasFamilyIssues": true,
"holdMusicChoices": [TrackOptionType],
"id": "31729931",
"isActive": true,
"isDeceased": true,
"isInHardship": true,
"isOptedInToWof": true,
"label": "race-pressure-east-fall-run",
"landline": "though-data-recent-officer-new",
"liveSecretKey": "situation-total-how-various-check",
"mobile": "director-guess-project-chair-strong",
"number": "speak-this-customer-year-five",
"paymentMethods": PaymentInstructionConnectionTypeConnection,
"permissions": [AccountUserPermission],
"portfolioIds": ["60501430"],
"portfolioUserRoles": [PortfolioUserRoleType],
"portfolios": PortfolioConnectionTypeConnection,
"preferences": AccountUserCommsPreferences,
"preferredName": "possible-common-scene-stock-man",
"pronouns": "will-time-TV-free-meeting",
"specialCircumstances": SpecialCircumstancesType,
"title": "life-house-live-southern-statement"
}
}
}
voiceCampaign
Type: VoiceCampaignType!
URL: https://api.octopus.energy/v1/graphql/
Get the voice campaign for a given ID.
The possible errors that can be raised are:
- KT-CT-11501: Voice campaign not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The campaign ID. |
Query
query VoiceCampaign($campaignId: String!) {
voiceCampaign(campaignId: $campaignId) {
campaignItems {
...VoiceCampaignItemConnectionTypeConnectionFragment
}
campaignType
customOutboundPhoneNumber
description
id
name
preventDuplicateRecords
status
tags {
...CallTagConnectionTypeConnectionFragment
}
}
}
Variables
{
"campaignId": "21777555"
}
Response
{
"data": {
"voiceCampaign": {
"campaignItems": VoiceCampaignItemConnectionTypeConnection,
"campaignType": "PREVIEW",
"customOutboundPhoneNumber": "same-give-party-theory-style",
"description": "stage-account-concern-make-drive",
"id": "49285913",
"name": "understand-will-throughout-how-kid",
"preventDuplicateRecords": true,
"status": "ACTIVE",
"tags": CallTagConnectionTypeConnection
}
}
}
voiceCampaigns
Type: VoiceCampaignConnectionTypeConnection!
URL: https://api.octopus.energy/v1/graphql/
Get voice campaigns.
Arguments
| Name | Description |
|---|---|
|
|
|
|
|
Filter by campaign type. |
|
|
|
|
|
Filter by campaign name. |
|
Filter by campaign status. |
Query
query VoiceCampaigns(
$after: String,
$before: String,
$campaignType: TypeOfVoiceCampaign,
$first: Int,
$last: Int,
$name: String,
$status: CampaignStatus
) {
voiceCampaigns(
after: $after,
before: $before,
campaignType: $campaignType,
first: $first,
last: $last,
name: $name,
status: $status
) {
edgeCount
edges {
...VoiceCampaignConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"campaignType": "PREVIEW",
"first": 10,
"last": 10,
"name": "single-coach-however-material-energy",
"status": "ACTIVE"
}
Response
{
"data": {
"voiceCampaigns": {
"edgeCount": 29,
"edges": VoiceCampaignConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 53
}
}
}
vouchersBalanceDetail
Type: VouchersBalanceDetail
URL: https://api.octopus.energy/v1/graphql/
Query the detail of vouchers balance for an account.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-4178: No account found with given account number.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number. |
Query
query VouchersBalanceDetail($accountNumber: ID!) {
vouchersBalanceDetail(accountNumber: $accountNumber) {
redeemableInFuture
redeemableToday
}
}
Variables
{
"accountNumber": "A-E1454ED4"
}
Response
{
"data": {
"vouchersBalanceDetail": {
"redeemableInFuture": 59,
"redeemableToday": 88
}
}
}
vouchersForAccount
Type: VoucherPurchaseConnectionTypeConnection
URL: https://api.octopus.energy/v1/graphql/
Query the voucher purchases for an account.
Arguments
| Name | Description |
|---|---|
|
The account number. |
|
|
|
An optional date to limit the response to vouchers that are available before the particular date (exclusive). |
|
An optional date to limit the response to vouchers that are available from the particular date (inclusive) onwards. |
|
|
|
Whether to exclude refunded vouchers from the response. By default, refunded vouchers will be included in the response. |
|
|
|
|
|
An optional date to limit the response to vouchers that have been purchased before the particular date (exclusive). |
|
An optional date to limit the response to vouchers that have been purchased from the particular date (inclusive) onwards. |
|
Whether to only return vouchers that can be redeemable. |
Query
query VouchersForAccount(
$accountNumber: ID!,
$after: String,
$availableBeforeDate: Date,
$availableFromDate: Date,
$before: String,
$excludeRefunded: Boolean,
$first: Int,
$last: Int,
$purchasedBeforeDate: Date,
$purchasedFromDate: Date,
$redeemableOnly: Boolean!
) {
vouchersForAccount(
accountNumber: $accountNumber,
after: $after,
availableBeforeDate: $availableBeforeDate,
availableFromDate: $availableFromDate,
before: $before,
excludeRefunded: $excludeRefunded,
first: $first,
last: $last,
purchasedBeforeDate: $purchasedBeforeDate,
purchasedFromDate: $purchasedFromDate,
redeemableOnly: $redeemableOnly
) {
edgeCount
edges {
...VoucherPurchaseConnectionTypeEdgeFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"accountNumber": "A-C9C0D794",
"after": "YXJyYXljb25uZWN0aW9uOjEw=",
"availableBeforeDate": "2014-03-14",
"availableFromDate": "1989-02-18",
"before": "YXJyYXljb25uZWN0aW9uOjEw=",
"excludeRefunded": true,
"first": 10,
"last": 10,
"purchasedBeforeDate": "2026-03-10",
"purchasedFromDate": "1984-06-04",
"redeemableOnly": true
}
Response
{
"data": {
"vouchersForAccount": {
"edgeCount": 94,
"edges": VoucherPurchaseConnectionTypeEdge,
"pageInfo": PageInfo,
"totalCount": 67
}
}
}
wanCoverage
Type: WANCoverageStrengths
URL: https://api.octopus.energy/v1/graphql/
Likelihood that a smart meter at the given postcode and optional address identifier will get a stable network connection.
Arguments
| Name | Description |
|---|---|
|
The address identifier to search for. |
|
Postcode to search the coverage for |
|
The property ID to search for. |
Query
query WanCoverage(
$addressIdentifier: String,
$postcode: String!,
$propertyId: ID
) {
wanCoverage(
addressIdentifier: $addressIdentifier,
postcode: $postcode,
propertyId: $propertyId
)
}
Variables
{
"addressIdentifier": "42716412",
"postcode": "bring-appear-tax-door-federal",
"propertyId": "68073050"
}
Response
{
"data": {
"wanCoverage": "HIGH"
}
}
wanCoverageDetail
Type: [WanCoverageDetail]
URL: https://api.octopus.energy/v1/graphql/
Detailed WAN coverage report for a given post code and optional address identifier.
Arguments
| Name | Description |
|---|---|
|
|
|
The postcode to search for. |
|
The property ID to search for. |
Query
query WanCoverageDetail(
$addressIdentifier: String,
$postcode: String!,
$propertyId: ID
) {
wanCoverageDetail(
addressIdentifier: $addressIdentifier,
postcode: $postcode,
propertyId: $propertyId
) {
additionalInformation
addressIdentifier
anticipatedCoverageAt
auxiliaryEquipment
connectivityLikelihood
isCoverageAvailable
postcode
wanTechnology
}
}
Variables
{
"addressIdentifier": "78368200",
"postcode": "material-protect-bank-short-safe",
"propertyId": "83552274"
}
Response
{
"data": {
"wanCoverageDetail": [
{
"additionalInformation": "institution-always-order-long-cover",
"addressIdentifier": "73828171",
"anticipatedCoverageAt": "open-fear-paper-employee-election",
"auxiliaryEquipment": "raise-get-sea-shoulder-foreign",
"connectivityLikelihood": "there-see-station-its-its",
"isCoverageAvailable": true,
"postcode": "inside-animal-college-reflect-exist",
"wanTechnology": "member-red-involve-fund-economic"
}
]
}
}
weeklyUsageInsights
Type: WeeklyUsageInsightsType
URL: https://api.octopus.energy/v1/graphql/
Get account status information given its number.
The possible errors that can be raised are:
- KT-CT-1111: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The account number to search for. |
Query
query WeeklyUsageInsights($accountNumber: String!) {
weeklyUsageInsights(accountNumber: $accountNumber) {
accountId
accountNumber
achievedCarbonIndex
achievedCarbonRank
achievedCarbonRate
apiGspGroupName
carbonGrams
consumptionKwh
gspGroupId
hasFullReadings
isLatestWeek
meterPointId
mpan
numberPeriods
periodEnd
periodStart
propertyId
weekStart
}
}
Variables
{
"accountNumber": "A-F2175691"
}
Response
{
"data": {
"weeklyUsageInsights": {
"accountId": 26778616,
"accountNumber": "A-9268ABEE",
"achievedCarbonIndex": "VERY_LOW",
"achievedCarbonRank": "interest-example-material-ground-eight",
"achievedCarbonRate": 137.8,
"apiGspGroupName": "time-never-if-moment-mention",
"carbonGrams": 358.1,
"consumptionKwh": "south-current-hair-five-work",
"gspGroupId": "38418966",
"hasFullReadings": "outside-behavior-pay-nor-machine",
"isLatestWeek": "arrive-record-coach-wife-number",
"meterPointId": 27885496,
"mpan": "now-law-news-believe-him",
"numberPeriods": "someone-decade-you-green-yet",
"periodEnd": "2006-03-28T05:59:46.190620+00:00",
"periodStart": "2024-12-08T06:44:21.710421+00:00",
"propertyId": 72330209,
"weekStart": "1992-05-10T13:53:35.597662+00:00"
}
}
}
wheelOfFortuneSegments
Type: WheelSegmentsType!
URL: https://api.octopus.energy/v1/graphql/
Retrieve the segments to be displayed on the Wheel of Fortune.
This field requires the Authorization header to be set.
Deprecated
The 'wheelOfFortuneSegments' field is deprecated.
We're migrating the system the Wheel of Fortune runs on. Octopus Energy UK customers can find the new API under api.backend.octopus.energy/v1/graphql/
- Marked as deprecated on 2025-06-24.
- Scheduled for removal on or after 2025-09-24.
Query
query WheelOfFortuneSegments {
wheelOfFortuneSegments {
segments
}
}
Response
{
"data": {
"wheelOfFortuneSegments": {
"segments": [37]
}
}
}
wheelOfFortuneSpins
Type: AvailableSpinsType!
URL: https://api.octopus.energy/v1/graphql/
Retrieve the number of available Wheel of Fortune spins, per energy type, of an account by the account number.
This field requires the Authorization header to be set.
The possible errors that can be raised are:
- KT-CT-7023: Unauthorized.
- KT-CT-1113: Disabled GraphQL field requested.
Deprecated
The 'wheelOfFortuneSpins' field is deprecated.
We're migrating the system the Wheel of Fortune runs on. Octopus Energy UK customers can find the new API under api.backend.octopus.energy/v1/graphql/
- Marked as deprecated on 2026-02-20.
- Scheduled for removal on or after 2026-04-20.
Arguments
| Name | Description |
|---|---|
|
The account number for which the available spins are gathered. |
Query
query WheelOfFortuneSpins($accountNumber: String!) {
wheelOfFortuneSpins(accountNumber: $accountNumber) {
electricity {
...SupplyTypeSpecificSpinsTypeFragment
}
gas {
...SupplyTypeSpecificSpinsTypeFragment
}
}
}
Variables
{
"accountNumber": "A-8892EDC8"
}
Response
{
"data": {
"wheelOfFortuneSpins": {
"electricity": SupplyTypeSpecificSpinsType,
"gas": SupplyTypeSpecificSpinsType
}
}
}
workSchedule
Type: WorkScheduleType!
URL: https://api.octopus.energy/v1/graphql/
Get the work schedule with the given identifier.
The possible errors that can be raised are:
- KT-CT-11804: Work schedule not found.
- KT-CT-1113: Disabled GraphQL field requested.
Arguments
| Name | Description |
|---|---|
|
The identifier of the work schedule (also known as the 'slug'). |
Query
query WorkSchedule($identifier: String!) {
workSchedule(identifier: $identifier) {
identifier
isOpen
isPublicHoliday
name
openOrClosedReason
}
}
Variables
{
"identifier": "44392952"
}
Response
{
"data": {
"workSchedule": {
"identifier": "63374831",
"isOpen": true,
"isPublicHoliday": true,
"name": "during-event-mother-crime-certain",
"openOrClosedReason": "CLOSED_DUE_TO_PUBLIC_HOLIDAY"
}
}
}
Authentication Server
authorizedApplications
Type: [AuthorizedApplication]
URL: https://auth.octopus.energy/graphql/
Get all the confidential-client applications the current user has authorized.
Deprecated
The 'authorizedApplications' field is deprecated.
Schema is being removed, but will be available in the main API site.
- Marked as deprecated on 2025-10-15.
- Scheduled for removal on or after 2025-10-30.
Query
query AuthorizedApplications {
authorizedApplications {
clientId
name
}
}
Response
{
"data": {
"authorizedApplications": [
{
"clientId": "96073484",
"name": "technology-agree-right-along-audience"
}
]
}
}
krakenVersion
Type: KrakenVersionType
URL: https://auth.octopus.energy/graphql/
The current version of kraken.
Query
query KrakenVersion {
krakenVersion {
SHA
isPinned
number
}
}
Response
{
"data": {
"krakenVersion": {
"SHA": "world-whom-stand-early-the",
"isPinned": true,
"number": "over-ask-rich-start-provide"
}
}
}
mfaDevices
Type: [MfaDevice]
URL: https://auth.octopus.energy/graphql/
Get all MFA devices for the current user.
Deprecated
The 'mfaDevices' field is deprecated.
Schema is being removed, but will be available in the main API site.
- Marked as deprecated on 2025-10-15.
- Scheduled for removal on or after 2025-10-30.
Query
query MfaDevices {
mfaDevices {
deviceType
isConfirmed
}
}
Response
{
"data": {
"mfaDevices": [
{
"deviceType": "senior-would-war-probably-service",
"isConfirmed": true
}
]
}
}