Link meters
curl --request POST \
--url https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"externalMeters": [
"8413731391660801"
]
}
'import requests
url = "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters"
payload = { "externalMeters": ["8413731391660801"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalMeters: ['8413731391660801']})
};
fetch('https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalMeters' => [
'8413731391660801'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters"
payload := strings.NewReader("{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"isLinked": true,
"vendor": "FRONIUS",
"name": "Fronius Primary Meter",
"externalId": "8413731391660801",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"siteName": "My Home"
}
]Connect Home Power Device
Link meters
Connects the provided list of meters from the vendor account to the Energy Hub.
POST
/
v1.0.0
/
link
/
users
/
{userId}
/
vendor-accounts
/
{vendorAccountId}
/
meters
Link meters
curl --request POST \
--url https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"externalMeters": [
"8413731391660801"
]
}
'import requests
url = "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters"
payload = { "externalMeters": ["8413731391660801"] }
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalMeters: ['8413731391660801']})
};
fetch('https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalMeters' => [
'8413731391660801'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters"
payload := strings.NewReader("{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.energy-hub.io/v1.0.0/link/users/{userId}/vendor-accounts/{vendorAccountId}/meters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalMeters\": [\n \"8413731391660801\"\n ]\n}"
response = http.request(request)
puts response.read_body[
{
"isLinked": true,
"vendor": "FRONIUS",
"name": "Fronius Primary Meter",
"externalId": "8413731391660801",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"siteName": "My Home"
}
]Authorizations
API key used for authorization and authentication.
Body
application/json
Object for meters IDs request that should be added to the Energy Hub.
List of external IDs of meters to be linked to the Energy Hub.
List of external IDs of meters to be linked to the Energy Hub.
Example:
["8413731391660801"]
Response
Created
Indicates if the meter is linked to the Energy Hub.
The vendor of the meter.
Available options:
FRONIUS, TESLA, HUAWEI, SMA The display name of the meter.
Example:
"Fronius Primary Meter"
The ID of the meter in external vendor system.
Example:
"8413731391660801"
The ID of the meter.
The site name of the home energy device.
Example:
"My Home"
⌘I

