Skip to main content

Queries

In this section

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String)

The account number to find the contract for.

identifier (String)

The identifier of the contract.

version (Int)

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

accountNumber (String!)

Account number.

propertyId (Int)

            The property's id where the device will be registered to.
            Note: in future, eligibility checks will be dependent on the property id and
            it will be a required input.

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:

Arguments

Name Description

accountNumber (String!)

Kraken account number.

paymentId (ID!)

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:

Arguments

Name Description

value (String)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

email (String)

Email associated with an account user.

externalId (ID)

External ID associated with an account user.

number (ID)

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

input (AccountUserSearchInputType)

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

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

phoneNumber (String)

A phone number to find accounts associated with.

portfolioNumber (String)

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

maxResults (Int)

The maximum number of results to return.

searchTerms (AccountSearchInputType)

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

accountType (ReferralSchemeAccountTypeOptions)

The account type for which to get the referral scheme.

subdomain (String!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

activeFrom (DateTime)

The datetime from which to filter active sales channels.

activeTo (DateTime)

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:

Arguments

Name Description

postcode (String!)

The postcode of the property to search for meterpoints.

uprn (String!)

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

after (String)

before (String)

electricityOnly (Boolean)

If it should only return addresses from the ECOES EES data source.

first (Int)

last (Int)

postcode (String!)

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

after (String)

before (String)

dataSource (DataSource)

first (Int)

last (Int)

postcode (String!)

searchDomesticOnly (Boolean)

useDes (Boolean)

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
    }
  }
}

Type: AffiliateLinkType!

URL: https://api.octopus.energy/v1/graphql/

Link object for an affiliate organization.

The possible errors that can be raised are:

Arguments

Name Description

subdomain (String!)

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"
    }
  }
}

Type: [AffiliateLinkType!]!

URL: https://api.octopus.energy/v1/graphql/

Links (urls) for the affiliate organizations.

Arguments

Name Description

agentContactEmail (String!)

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

id (Int)

The affiliate organisation ID.

number (String)

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

supportUserName (String!)

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:

Arguments

Name Description

id (ID!)

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:

Arguments

Name Description

number (String!)

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

daysBeforeExpiration (Int!)

Days before the agreement expiration.

windowSize (Int!)

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

isDomestic (Boolean)

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

mpan (String!)

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

mprn (String!)

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"
    }
  }
}

Arguments

Name Description

after (String)

before (String)

first (Int)

input (APIBrownoutInput)

Statuses to filter for. Otherwise return active and upcoming brownouts.

last (Int)

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
    }
  }
}

Arguments

Name Description

after (String)

before (String)

first (Int)

input (APIExceptionQueryInput)

Fields to filter for. Otherwise don't filter at all.

last (Int)

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

after (String)

before (String)

first (Int)

last (Int)

postcode (String)

The postcode of the address at which the app session was recorded.

subdomain (String)

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

accountNumber (String!)

after (String)

before (String)

endAt (DateTime!)

first (Int)

last (Int)

mpxn (String!)

startAt (DateTime!)

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

accountNumber (String!)

Target account number, e.g. 'A-A1B2C3D4'.

after (String)

before (String)

deviceId (String!)

Target device ID, e.g. 'A1-BC-D2-00-01-23-EF-4G'.

effectiveFrom (DateTime)

The datetime from which the auto top-up is effective, e.g. '2024-01-01T00:00:00+00:00'.

first (Int)

last (Int)

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

after (String)

autoTopupConfigId (ID!)

Target auto top-up config ID, e.g. '123'.

before (String)

failureReason (SmartDeviceAutoTopupTriggerFailureReasons)

Filter by failure reason of the auto top-up trigger event.

first (Int)

last (Int)

source (SmartDeviceAutoTopupTriggerSources)

Filter by source of the auto top-up trigger event.

status (SmartDeviceAutoTopupTriggerStatus)

Filter by status of the auto top-up trigger event.

triggersFrom (DateTime)

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:

Arguments

Name Description

displayName (String!)

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:

Arguments

Name Description

agreementId (Int!)

Agreement ID.

maxRange (Int)

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:

Arguments

Name Description

marketName (String!)

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:

Arguments

Name Description

accountNumber (String!)

Kraken account number.

availableAt (DateTime!)

includeRestrictedProducts (Boolean)

Include products with a restricted availability in the results.

mpxns ([String]!)

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

maxVersionSupported (Int)

The maximum version of backend screens supported by the client.

params ([BackendScreenParamInputType])

List of key-value pairs (strings) to pass as parameters to the screen.

screenId (ID!)

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:

Arguments

Name Description

accountNumber (String!)

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

iban (NonEmptyString!)

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:

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/

Arguments

Name Description

accountNumber (String!)

propertyId (Int!)

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

make (String)

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

details ([BusinessDetailInput])

List of business detail key-value pairs to filter by.

id (ID)

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

code (String!)

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:

Arguments

Name Description

accountNumber (String)

The account number to find the business contract for.

identifier (String)

The identifier of the contract.

version (Int)

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:

Arguments

Name Description

id (ID!)

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:

Arguments

Name Description

id (ID!)

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"
    }
  }
}

Arguments

Name Description

after (String)

before (String)

first (Int)

isActive (Boolean)

Filter by active status.

last (Int)

name (String)

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
    }
  }
}

Arguments

Name Description

accountNumber (String!)

The account number.

after (String)

before (String)

first (Int)

last (Int)

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:

Arguments

Name Description

agreementId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

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"
  }
}

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

collectionProcessRecordNumber (String!)

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:

Arguments

Name Description

complaintId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

number (String!)

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

activityTypes ([ContractActivityTypeOptions])

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:

Arguments

Name Description

filters (ContractFiltersInput!)

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"
      }
    ]
  }
}

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

accountNumber (String)

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:

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

accountNumber (String!)

frequency (DataFrequency!)

Frequency by day, week, month or year.

reportDate (Date)

The date up to which data should be relative to.

startDate (Date)

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:

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

accountNumber (String)

Account number.

fuelType (FuelType)

The energy type, i.e. ELECTRICITY or GAS.

grouping (ConsumptionGroupings!)

Aggregate cost according to this grouping.

meterId (String)

The electricity or gas meter ID.

startAt (DateTime)

Datetime the data should be queried from.

timezone (String)

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

accountNumber (String!)

The account number.

after (String)

before (String)

feedbackSource (CustomerFeedbackSourceChoices)

Feedback sources currently supported.

first (Int)

last (Int)

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

accountNumber (String!)

The account number to check event enrollment for.

after (String)

before (String)

campaignSlug (String!)

The slug of the campaign to which the event belongs.

first (Int)

last (Int)

supplyPointIdentifier (String!)

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

accountNumber (String!)

The account number of the user.

dashboardId (ID!)

The ID of the dashboard type screen to return.

ledgerId (String)

The ledger id associated to the account.

ledgerNumber (String)

The ledger number associated to the account.

maxVersionSupported (Int!)

The maximum version of dahshboard type screens supported by the client.

params ([BackendScreenParamInputType])

List of key-value pairs (strings) to pass as parameters to the screen.

propertyId (String)

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

accountNumber (String!)

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

accountNumber (String!)

The account number.

instructionType (PaymentType)

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:

Arguments

Name Description

formId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

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

accountNumber (String!)

The account number, e.g. A-12345678.

deviceId (String)

Only list the device with this ID.

integrationDeviceId (String)

Only list the device with this integration device ID.

propertyId (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

code (String!)

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

code (String!)

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

code (String!)

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

isIntegrationLive (Boolean)

Only return vehicles that are currently integrated.

make (String)

Only return vehicle types for the specified make.

supportedProvider (ProviderChoices)

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 (ID!)

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

mpan (String!)

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

accountNumber (String!)

after (String)

before (String)

eventTypes ([MeterReadingEventType])

first (Int)

last (Int)

meterId (String!)

readFrom (DateTime)

Only fetch meter readings made since this date

readTo (DateTime)

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

mpan (String!)

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:

Arguments

Name Description

accountNumber (String!)

mpan (String!)

serialNumber (String!)

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:

Arguments

Name Description

input (LoyaltyPointsProgramEligibilityInput!)

Query

query EligibilityToJoinLoyaltyPointsProgram($input: LoyaltyPointsProgramEligibilityInput!) {
  eligibilityToJoinLoyaltyPointsProgram(input: $input) {
    isEligible
    primaryIneligibilityReason
  }
}

Variables

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

accountNumber (String!)

The account number, e.g. A-12345678.

propertyId (Int)

            The property's id where the device will be registered to.
            Note: in future, eligible device types will be dependent on the property id and
            it will be a required input.

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

id (ID!)

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 (String!)

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

after (String)

availability (EnergyProductAvailability)

Filter for available or unavailable products only.

before (String)

brand (String)

Filter by a specific energy brand.

brands ([String])

Filter by these brands.

direction (EnergyProductDirection)

Energy product direction to filter products by.

excludeTags ([String])

Exclude products with these tag codes.

filterBy ([EnergyProductFilters])

Filter by the type of energy product.

first (Int)

last (Int)

postcode (String!)

Postcode to search energy products for.

tags ([String])

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:

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

accountNumber (String)

vendor (EnodeVendors)

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"
    }
  }
}

Arguments

Name Description

after (String)

before (String)

deviceId (ID)

The meter id to perform estimation on.

first (Int)

last (Int)

marketIdentifier (ID!)

This is the unique identifier used by the market to identify the supply point.

periodEnd (DateTime!)

The end of the period estimated.

periodStart (DateTime!)

The start of the period estimated.

registerId (ID)

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:

Arguments

Name Description

mpan (String!)

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

accountNumber (String!)

Account number to filter by.

after (String)

before (String)

first (Int)

last (Int)

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:

Arguments

Name Description

accountNumber (String)

The account number.

propertyId (Int)

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

after (String)

before (String)

first (Int)

last (Int)

postcode (String!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

The number of the account responsible for this FIT schedule.

scheduleId (String!)

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:

Arguments

Name Description

deviceId (String!)

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

deviceType (KrakenFlexDeviceTypes!)

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

accountNumber (String!)

Kraken account number.

electricityAgreementId (ID)

Electricity agreement Kraken ID.

gasAgreementId (ID)

Gas agreement Kraken ID.

validAt (DateTime!)

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

meterPointId (String!)

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

identifierType (String!)

The type of object the ID represents.

identifierValue (String!)

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 (ID!)

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

mprn (String!)

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

accountNumber (String!)

after (String)

before (String)

eventTypes ([MeterReadingEventType])

first (Int)

last (Int)

meterId (String!)

readFrom (DateTime)

Only fetch meter readings made since this date

readTo (DateTime)

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

mprn (String!)

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:

Arguments

Name Description

accountNumber (String!)

mprn (String!)

serialNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

The number of the account to get energy IQ data for.

includeEv (Boolean)

Should the energy IQ estimation data include EV.

includeHeatpump (Boolean)

Should the energy IQ estimation data include heatpump.

includeSolar (Boolean)

Should the energy IQ estimation data include solar.

isCurrentRecord (Boolean)

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
    }
  }
}

Arguments

Name Description

agent (OnSiteJobsAgent!)

The agent for the appointment.

externalReference (String!)

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"
    }
  }
}

Arguments

Name Description

appointmentId (UUID)

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

appointmentBookingSessionId (UUID!)

Appointment booking session ID to fetch slots for. ID can be obtained via startOnSiteJobsAppointmentBookingSession mutation.

appointmentDate (Date!)

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

jobType (String)

Job type for appointment checks.

supplyPointIdentifierToMarketNameMapping ([SupplyPointIdentifierToMarketNameMappingInput])

Supply point identifier to market name mapping. If this is provided, supplyPointInternalIds cannot be provided. Either one of them must be provided.

supplyPointInternalIds ([Int])

List of internal IDs of supply points. If this is provided, supplyPointIdentifierToMarketNameMapping cannot be provided. Either one of them must be 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

requestId (UUID!)

The ID of the request for which to fetch available job types.

workCategory (OnSiteJobsWorkCategory)

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"
      }
    ]
  }
}

Arguments

Name Description

requestId (UUID)

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"
    }
  }
}

Arguments

Name Description

after (String)

before (String)

first (Int)

last (Int)

statuses ([OnSiteJobsRequestStatus])

A list of statuses to filter requests by.

supplyPointInternalIds ([Int])

List of internal IDs of supply points to filter requests by. If this is provided, supplyPointsToMarketNamesMapping cannot be provided.

supplyPointsToMarketNamesMapping ([SupplyPointIdentifierToMarketNameMappingInput])

A list of supply point identifiers to filter requests by. If this is provided, supplyPointInternalIds cannot be 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

postcode (String!)

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:

Arguments

Name Description

accountNumber (String!)

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

fromDate (Date!)

The start date from which to pull a weeks worth of data.

postcode (String!)

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:

Arguments

Name Description

accountNumber (String!)

The account number to get comparison data for.

propertyId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

The account number to get comparison data for.

propertyId (Int!)

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]
    }
  }
}

Arguments

Name Description

after (String)

before (String)

code ([String])

Code of the products to filter by.

first (Int)

last (Int)

marketName (String!)

Market name of the products to list.

productType ([String])

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
    }
  }
}

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String)

The account number.

quoteCode (String)

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.

Arguments

Name Description

accountNumber (String!)

euid (ID!)

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:

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.

Arguments

Name Description

accountNumber (String!)

euid (ID!)

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:

Arguments

Name Description

accountNumber (String!)

propertyId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

isDeprecated (Boolean)

Only return (non-) deprecated heat pumps.

make (String)

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]
      }
    ]
  }
}

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:

Arguments

Name Description

templateIdentifier (String!)

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:

Arguments

Name Description

accountNumber (String)

The account number.

conversationRelayId (String)

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:

Arguments

Name Description

messageRelayId (String!)

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:

Arguments

Name Description

vendor (String!)

The message's vendor.

vendorId (String!)

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:

Arguments

Name Description

messageId (ID!)

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"
  }
}

Arguments

Name Description

after (String)

before (String)

first (Int)

last (Int)

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:

Arguments

Name Description

criteria (SearchCriteriaInput!)

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:

Arguments

Name Description

accountNumber (String!)

Number of the account.

accountUserNumber (String!)

Number of the account user.

callId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

Number of the account.

accountUserNumber (String!)

Number of the account user.

conversationClosedAt (DateTime!)

Datetime when the conversation was closed.

inkConversationId (Int!)

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:

Arguments

Name Description

accountNumber (String!)

The account number to check enrollment for.

campaignSlug (String!)

The slug of the campaign to check enrollment for.

supplyPointIdentifier (String!)

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

token (String!)

Password reset token to check.

userId (String!)

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:

Arguments

Name Description

number (String!)

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
    }
  }
}

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

blockListEntries (LeadBlockListValidationInput)

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:

Arguments

Name Description

number (String)

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

after (String)

before (String)

first (Int)

input (LeadsQueryInput)

Input fields for retrieving leads.

last (Int)

offset (Int)

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
}

Response

{
  "data": {
    "leads": {
      "edgeCount": 36,
      "edges": LeadsEdge,
      "pageInfo": PageInfo,
      "totalCount": 97
    }
  }
}

leaveSupplierProcess

Type: LeaveSupplierProcessType

URL: https://api.octopus.energy/v1/graphql/

Details associated with a LeaveSupplier process.

The possible errors that can be raised are:

Arguments

Name Description

leaveSupplierProcessId (ID)

The leave supplier process ID.

number (String)

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:

Arguments

Name Description

identifier (String!)

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:

Arguments

Name Description

accountNumber (String!)

The account number, e.g. A-12345678.

onlyActive (Boolean)

A flag to filter out only active/current processes.

sortOrder (LifecycleProcessesSortOrder)

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:

Arguments

Name Description

accountNumber (String!)

Kraken account number.

ledgerNumber (String)

Ledger number.

policyId (String)

Payment adequacy policy ID. If this argument is null then the default policy will be used.

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:

Arguments

Name Description

ledgerNumber (String!)

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

accountUserId (String!)

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:

Arguments

Name Description

input (LoyaltyPointLedgerEntryInput!)

Query

query LoyaltyPointLedgerEntry($input: LoyaltyPointLedgerEntryInput!) {
  loyaltyPointLedgerEntry(input: $input) {
    accountNumber
    balanceBroughtForward
    balanceCarriedForward
    id
    idempotencyKey
    ledgerType
    postedAt
    reasonCode
    value
  }
}

Variables

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:

Arguments

Name Description

input (LoyaltyPointLedgersInput)

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

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

accountNumber (String)

The account number.

input (LoyaltyPointsBalanceInput)

Query

query LoyaltyPointsBalance($input: LoyaltyPointsBalanceInput) {
  loyaltyPointsBalance(input: $input) {
    loyaltyPoints
    totalMonetaryAmount
  }
}

Variables

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:

Arguments

Name Description

identifier (String!)

linkedObjectType (LinkedObjectType)

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:

Arguments

Name Description

identifier (String!)

key (String!)

linkedObjectType (LinkedObjectType)

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

mpan (ID)

The MPAN for the electricity meterpoint to return.

mprn (ID)

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

address (AddressSearchType)

searchDomesticOnly (Boolean)

useDes (Boolean)

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

id (ID!)

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

postcode (String!)

The postcode to search for.

shortcode (String)

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

postcode (String!)

The postcode to search for.

shortcode (String)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

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.

Arguments

Name Description

accountNumber (String!)

euid (ID!)

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

accountNumber (String)

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:

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.

Arguments

Name Description

accountNumber (String!)

euid (ID!)

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:

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.

Arguments

Name Description

accountNumber (String!)

propertyId (ID!)

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

euid (ID!)

Query

query OctoHeatPumpLifetimePerformance($euid: ID!) {
  octoHeatPumpLifetimePerformance(euid: $euid) {
    energyInput {
      ...EnergyFragment
    }
    heatOutput {
      ...EnergyFragment
    }
    readAt
    seasonalCoefficientOfPerformance
  }
}

Variables

{
  "euid": "86359357"
}

Response

{
  "data": {
    "octoHeatPumpLifetimePerformance": {
      "energyInput": Energy,
      "heatOutput": Energy,
      "readAt": "1984-02-18T16:42:23.555287+00:00",
      "seasonalCoefficientOfPerformance": "1.0"
    }
  }
}

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

euid (ID!)

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.

Arguments

Name Description

endAt (DateTime!)

euid (ID!)

startAt (DateTime!)

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"
}

Response

{
  "data": {
    "octoHeatPumpTimeRangedPerformance": {
      "coefficientOfPerformance": "1.0",
      "energyInput": Energy,
      "energyOutput": Energy
    }
  }
}

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:

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

endAt (DateTime!)

euid (ID!)

performanceGrouping (PerformanceGrouping!)

startAt (DateTime!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

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

accountNumber (String!)

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
    }
  }
}

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

accountNumber (String!)

Account number for the Octoplus-enrolled account.

after (String)

before (String)

first (Int)

id (Int)

ID of the Offer Group being queried.

last (Int)

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

accountNumber (String!)

Account number for the Octoplus-enrolled account.

slug (String)

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

accountNumber (String)

Account number for the Octoplus-enrolled account.

offerSlug (String)

Slug of the offer being queried.

rewardId (Int)

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

identifier (ID)

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

identifier (ID)

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"
}

Response

{
  "data": {
    "offerGroupForQuoting": {
      "createdAt": "1975-01-20T13:23:49.683031+00:00",
      "createdBy": ActorType,
      "identifier": "56825376",
      "offers": [OfferType]
    }
  }
}

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

identifier (String)

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

after (String)

before (String)

first (Int)

input (OpportunitiesQueryInput)

Input fields for retrieving opportunities.

last (Int)

offset (Int)

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:

Arguments

Name Description

number (String)

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

number (String)

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:

Arguments

Name Description

key (String)

The key the a funnel-specific value you wish to obtain.

opportunityId (ID)

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

asHtml (Boolean)

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 (String!)

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:

Arguments

Name Description

accountNumber (String!)

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

ledgerNumber (String!)

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:

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

accountNumber (String!)

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:

Arguments

Name Description

portfolioNumber (String!)

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:

Arguments

Name Description

portfolioReference (PortfolioReferenceInput!)

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:

Arguments

Name Description

input (PossibleErrorsInputType!)

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

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:

Arguments

Name Description

deviceId (String!)

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

accountNumber (String!)

after (String)

before (String)

first (Int)

last (Int)

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:

Arguments

Name Description

batchId (ID)

The print batch ID.

printBatchId (Int)

The print batch ID.

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:

Arguments

Name Description

accountNumber (String!)

The account to which meter point belongs.

mpxn (String!)

Meter point reference/administration number.

productCode (String!)

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:

Arguments

Name Description

accountNumber (String!)

The account to which meter point belongs.

mpxn (String!)

Meter point reference/administration number.

productCode (String!)

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:

Arguments

Name Description

accountNumber (String!)

The account to which the enrolment belongs.

enrolmentId (ID!)

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

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

active (Boolean)

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

searchTerm (String!)

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

id (ID!)

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

searchTerm (String!)

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

accountNumber (String)

The account number that will be associated with the device. Required for some providers.

clientType (ClientType)

The client type the request originated from. Used when oauth_uri is different between web and app.

deviceType (KrakenFlexDeviceTypes!)

The device type to get the auth details for (as providers may support multiple).

propertyId (Int)

The ID of the property the device belongs to.

provider (ProviderChoices!)

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

deviceType (KrakenFlexDeviceTypes!)

The device type to get the virtual key details for (as providers may support multiple).

provider (ProviderChoices!)

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"
    }
  }
}

Arguments

Name Description

input (QueryComplexityInputType!)

Query and relevant variables required to calculate the complexity.

Query

query QueryComplexity($input: QueryComplexityInputType!) {
  queryComplexity(input: $input) {
    complexityValue
  }
}

Variables

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:

Arguments

Name Description

formId (Int!)

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

code (String)

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:

Arguments

Name Description

quoteCode (String!)

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:

Arguments

Name Description

productOfferingIdentifier (ID)

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

mpan (String!)

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:

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

accountNumber (String!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

category (String)

Filter by category (LANGUAGE, OPERATIONS_GROUP, SKILL).

search (String)

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:

Arguments

Name Description

input (SalesFunnelInput!)

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 (SalesFunnelsInput)

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

accountNumber (String)

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:

Arguments

Name Description

filters (SearchLeadFilters!)

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

mcsCertificateNumber (String!)

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

mpan (String)

The MPAN of the meter point.

productCode (ID)

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

voucherValues ([Int]!)

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

agentReference (String)

The booking agent appointment reference number.

calculationId (String)

fromDate (Date)

The date to search for appointments from.

jobType (String)

If job type is not specified, the default job type for the booking adapter will be used.

propertyId (ID!)

The property ID to search for.

slotDuration (SlotDuration)

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

after (String)

before (String)

first (Int)

last (Int)

postcode (String!)

The postcode to search for.

statuses ([AppointmentStatus]!)

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:

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

mpan (String!)

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:

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

mprn (String!)

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

accountNumber (String!)

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

after (String)

before (String)

first (Int)

last (Int)

postcode (String!)

The postcode to search for.

statuses ([AccountStatusChoices])

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

propertyId (Int!)

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

after (String)

before (String)

createdAfter (DateTime)

Only requests created after this datetime will be included.

first (Int)

ids ([UUID])

A list of request IDs. If provided, only these requests will be returned.

last (Int)

statuses ([RequestStatus])

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

deviceId (String!)

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]
    }
  }
}

Arguments

Name Description

smartFlexDeviceId (String)

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:

Arguments

Name Description

accountNumber (String!)

The account number, e.g. A-12345678.

includeCancelled (Boolean)

Include cancelled wizards.

includeCompleted (Boolean)

Include completed wizards.

isResumable (Boolean)

Filters for onboarding wizards that can be resumed. List limits to one resumable wizard.

propertyId (Int)

Only list wizards for this property.

wizardId (ID)

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:

Arguments

Name Description

accountNumber (String!)

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

deviceId (String!)

The ESME or GSME's EUI64 ID, e.g. '12-34-5A-FF-FF-6B-C7-89'

end (DateTime)

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.

grouping (TelemetryGrouping)

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.

start (DateTime)

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:

Arguments

Name Description

mpan (String)

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

externalIdentifier (String!)

The market specific supply point id.

marketName (String!)

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
    }
  }
}

Arguments

Name Description

accountNumber (String)

Filter meter points by account.

after (String)

before (String)

first (Int)

last (Int)

portfolioNumber (String)

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:

Arguments

Name Description

accountNumber (String!)

taskId (String!)

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

productCode (String!)

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:

Arguments

Name Description

triggerId (ID!)

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:

Arguments

Name Description

accountNumber (String!)

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:

Arguments

Name Description

deviceId (String!)

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:

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

accountNumber (String)

authentication (AuthenticationInput)

The authentication details required given the chosen provider.

supportedProvider (ProviderChoices)

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:

Arguments

Name Description

accountNumber (String!)

sortCode (String!)

vendor (PaymentsVendorChoices)

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:

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

value (String!)

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"
    }
  }
}

Arguments

Name Description

value (String!)

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:

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

accountNumber (String!)

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

email (String!)

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:

Arguments

Name Description

campaignId (String!)

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
    }
  }
}

Arguments

Name Description

after (String)

before (String)

campaignType (TypeOfVoiceCampaign)

Filter by campaign type.

first (Int)

last (Int)

name (String)

Filter by campaign name.

status (CampaignStatus)

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:

Arguments

Name Description

accountNumber (ID!)

The account number.

Query

query VouchersBalanceDetail($accountNumber: ID!) {
  vouchersBalanceDetail(accountNumber: $accountNumber) {
    redeemableInFuture
    redeemableToday
  }
}

Variables

{
  "accountNumber": "A-E1454ED4"
}

Response

{
  "data": {
    "vouchersBalanceDetail": {
      "redeemableInFuture": 59,
      "redeemableToday": 88
    }
  }
}

Arguments

Name Description

accountNumber (ID!)

The account number.

after (String)

availableBeforeDate (Date)

An optional date to limit the response to vouchers that are available before the particular date (exclusive).

availableFromDate (Date)

An optional date to limit the response to vouchers that are available from the particular date (inclusive) onwards.

before (String)

excludeRefunded (Boolean)

Whether to exclude refunded vouchers from the response. By default, refunded vouchers will be included in the response.

first (Int)

last (Int)

purchasedBeforeDate (Date)

An optional date to limit the response to vouchers that have been purchased before the particular date (exclusive).

purchasedFromDate (Date)

An optional date to limit the response to vouchers that have been purchased from the particular date (inclusive) onwards.

redeemableOnly (Boolean!)

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

addressIdentifier (String)

The address identifier to search for.

postcode (String!)

Postcode to search the coverage for

propertyId (ID)

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

addressIdentifier (String)

postcode (String!)

The postcode to search for.

propertyId (ID)

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:

Arguments

Name Description

accountNumber (String!)

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:

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

accountNumber (String!)

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:

Arguments

Name Description

identifier (String!)

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"
      }
    ]
  }
}

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
      }
    ]
  }
}