Tibber GraphQL API

Tibber's long-standing GraphQL API. A single HTTPS endpoint serves the `viewer` query (with nested `homes`, `currentSubscription`, `priceInfo`, `consumption`, `production`, and `features`), the `liveMeasurement` websocket subscription that streams sub-second power, voltage, and current readings from a paired Tibber Pulse, and the `sendMeterReading`, `updateHome`, and `sendPushNotification` mutations. Authentication is a personal access token issued at developer.tibber.com.

Operations 1

POST /gql Execute GraphQL Operation #

Documentation

Specifications

Schemas & Data

Other Resources

🔗
Sandbox
https://developer.tibber.com/explorer
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/examples/tibber-current-price-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/examples/tibber-consumption-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/examples/tibber-live-measurement-example.json
🔗
GraphQL
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/graphql/tibber-graphql.md
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/apis.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-consumption-report-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-current-price-by-home-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-inspect-connected-device-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-price-alert-push-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-production-report-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-pull-device-history-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-realtime-power-readiness-workflow.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/tibber/refs/heads/main/arazzo/tibber-submit-meter-reading-workflow.yml

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tibber-graphql-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tibber-graphql-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Tibber Data Devices Graph QL API
  description: Tibber's modern OAuth 2.0 REST API exposing third-party connected IoT devices and their historical time series. The API returns raw, normalized device telemetry for vehicles, EV chargers, thermostats, heat pumps, space heaters, solar inverters, and home batteries that customers have linked inside the Tibber mobile app. Authentication uses the Authorization Code Flow (PKCE recommended) at https://thewall.tibber.com/connect/authorize and https://thewall.tibber.com/connect/token. Tibber Pulse live streaming, pricing, and proprietary optimization logic are out of scope and remain on the legacy GraphQL API.
  version: v1
  contact:
    name: Tibber Data API
    url: https://data-api.tibber.com/docs/
servers:
- url: https://data-api.tibber.com
  description: Tibber Data API (production)
security:
- oauth2: []
tags:
- name: GraphQL
  description: Single GraphQL endpoint serving Query, RootMutation, and RootSubscription.
paths:
  /gql:
    post:
      tags:
      - GraphQL
      summary: Execute GraphQL Operation
      operationId: executeGraphQL
      description: Single HTTPS endpoint that accepts every GraphQL query, mutation, and introspection request. The schema exposes the authenticated `viewer` plus their `homes`, hourly `priceInfo`, paginated `consumption` and `production` time series, and the `sendMeterReading`, `updateHome`, and `sendPushNotification` mutations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphQLRequest'
            examples:
              currentPrice:
                summary: Current hourly price
                value:
                  query: '{ viewer { homes { currentSubscription { priceInfo { current { total energy tax startsAt currency level } } } } } }'
              consumption:
                summary: Last 24 hourly consumption nodes
                value:
                  query: '{ viewer { homes { consumption(resolution: HOURLY, last: 24) { nodes { from to consumption consumptionUnit cost currency } } } } }'
      responses:
        '200':
          description: GraphQL response payload (data and/or errors).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '401':
          description: Missing or invalid bearer token.
        '429':
          description: Rate limit exceeded.
components:
  schemas:
    GraphQLRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          description: GraphQL document (query, mutation, or subscription registration).
        operationName:
          type: string
        variables:
          type: object
          additionalProperties: true
    GraphQLResponse:
      type: object
      properties:
        data:
          type: object
          additionalProperties: true
        errors:
          type: array
          items:
            type: object
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 Authorization Code Flow with optional PKCE.
      flows:
        authorizationCode:
          authorizationUrl: https://thewall.tibber.com/connect/authorize
          tokenUrl: https://thewall.tibber.com/connect/token
          refreshUrl: https://thewall.tibber.com/connect/token
          scopes:
            openid: OpenID identity.
            profile: User profile.
            email: User email.
            offline_access: Issue refresh tokens.
            data-api-user-read: Basic user context (required baseline).
            data-api-homes-read: List the user's homes.
            data-api-vehicles-read: Read connected electric vehicles.
            data-api-chargers-read: Read EV chargers and EVSE equipment.
            data-api-thermostats-read: Read thermostats, heat pumps, and space heaters.
            data-api-energy-systems-read: Read home batteries and hybrid systems.
            data-api-inverters-read: Read solar inverters.