VÀlkommen till utvecklardokumentationen för Spotprisoptimering. HÀr hittar du allt du behöver för att integrera vÄra tjÀnster i dina egna applikationer, oavsett om du anvÀnder PHP, Python, JavaScript eller Shelly-skript.
https://www.spotprisoptimering.se/api/
HTTPS krÀvs
Huvud-API för vÀrmepumpsstyrning. Returnerar signal baserad pÄ aktuellt elpris och anvÀndarens tröskelvÀrden.
| Parameter | Typ | Beskrivning |
|---|---|---|
api_key |
string | Din API-nyckel |
area |
string | ElomrÄde (SE1, SE2, SE3, SE4). Default: anvÀndarens instÀllning |
curl "https://www.spotprisoptimering.se/api/signal.php?api_key=DIN_API_NYCKEL"
{
"success": true,
"timestamp": "2026-03-05T22:05:05+01:00",
"api_version": "2.0.0",
"signal": "SAVE",
"message": "Högt pris - sÀnk temperaturen temporÀrt",
"price": {
"current": 1.346,
"area": "SE4",
"unit": "SEK\/kWh",
"source": "cache"
},
"thresholds": {
"low": 0.5,
"high": 1.1
},
"level": "HIGH",
"recommendation": {
"short": "Spara!",
"action": "SÀnk 2-3°C eller aktivera nattsÀnkning",
"duration": "nÀsta timme"
}
}
Returnerar detaljerad information om optimal laddning för elbil, inklusive prisprognos, laddningsschema och varningar.
| Parameter | Typ | Beskrivning |
|---|---|---|
api_key |
string | Din API-nyckel |
area |
string | ElomrÄde (SE1-SE4). Default: anvÀndarens instÀllning |
hours |
integer | Antal timmar prognos (max 72). Default: 48 |
curl "https://www.spotprisoptimering.se/api/car.php?api_key=DIN_API_NYCKEL&hours=24"
{
"success": true,
"timestamp": "2026-03-05T22:05:05+01:00",
"api_version": "2.0.0",
"vehicle": {
"name": "Min elbil",
"brand": null,
"model": null,
"battery_capacity": 60,
"current_charge": 30,
"target_charge": 80,
"min_charge": 50,
"charger_power": 11,
"departure_time": "07:30:00",
"smart_charging": true,
"is_active": false
},
"price_forecast": {
"area": "SE4",
"hours": 48,
"current_price": 1.346,
"min_price": 0.638,
"max_price": 2.429,
"avg_price": 1.283,
"forecast": []
},
"charging": {
"can_achieve_target": true,
"hours_to_departure": 10,
"hours_needed": 3,
"current_kwh": 18,
"needed_kwh": 30,
"schedule": [],
"total_energy": 33,
"total_cost": 37.48,
"avg_price": 1.136,
"final_charge": 85,
"alerts": [
{
"level": "critical",
"message": "Batteriet Ă€r under 50% - ladda OMGĂ
ENDE!"
}
],
"recommendations": []
},
"chargers": [],
"recommendations": [],
"alerts": [
{
"level": "critical",
"message": "Batteriet Ă€r under 50% - ladda OMGĂ
ENDE!"
}
],
"signal": "CHARGE"
}
Enkelt textbaserat API för Shelly-relÀer och enkla IoT-enheter. Returnerar bara en textstrÀng.
| Parameter | Typ | Beskrivning |
|---|---|---|
api_key |
string | Din API-nyckel |
curl "https://www.spotprisoptimering.se/api/car_signal.php?api_key=DIN_API_NYCKEL"
"CHARGE"
API för varmvattenstyrning. Returnerar enkel text eller JSON beroende pÄ format-parameter.
| Parameter | Typ | Beskrivning |
|---|---|---|
api_key |
string | Din API-nyckel |
format |
string | VÀlj "json" för JSON-svar, annars text |
curl "https://www.spotprisoptimering.se/api/water.php?api_key=DIN_API_NYCKEL"
null
NORMAL
API för solcells- och batteristyrning. Returnerar status och rekommendationer.
| Parameter | Typ | Beskrivning |
|---|---|---|
api_key |
string | Din API-nyckel |
action |
string | VĂ€lj "status", "optimize" eller "signal" |
format |
string | VÀlj "json" (default) eller "text" för enkel signal |
curl "https://www.spotprisoptimering.se/api/solar.php?api_key=DIN_API_NYCKEL"
{
"success": true,
"timestamp": "2026-03-05T22:05:05+01:00",
"api_version": "1.0.0",
"user_id": 1,
"area": "SE4",
"settings": {
"has_solar": false,
"has_battery": false,
"solar_capacity": 10,
"solar_orientation": "south",
"solar_tilt": 35,
"battery_capacity": 13.5,
"battery_power": 5,
"strategy": "self_consumption",
"is_active": false
},
"current": {
"price": 1.346,
"price_level": "NORMAL"
},
"recommendation": {
"action": "idle",
"message": "AnvÀnd dashboarden för att konfigurera din anlÀggning"
}
}
Ăppet API för elpriser. KrĂ€ver ingen API-nyckel. Returnerar priser för valt datum och omrĂ„de.
| Parameter | Typ | Beskrivning |
|---|---|---|
area |
string | ElomrÄde (SE1, SE2, SE3, SE4). Default: SE3 |
date |
string | Datum (YYYY-MM-DD). Default: idag |
days |
integer | Antal dagar (max 7). Default: 1 |
curl "https://www.spotprisoptimering.se/api/prices.php?area=SE4&days=2"
{
"success": true,
"area": "SE4",
"currency": "SEK",
"data": [
{
"date": "2026-03-05",
"prices": [
{
"hour": 0,
"price": 1.137,
"level": "NORMAL"
},
{
"hour": 1,
"price": 1.135,
"level": "NORMAL"
},
{
"hour": 2,
"price": 1.135,
"level": "NORMAL"
},
{
"hour": 3,
"price": 1.138,
"level": "NORMAL"
},
{
"hour": 4,
"price": 1.198,
"level": "NORMAL"
},
{
"hour": 5,
"price": 1.477,
"level": "HIGH"
},
{
"hour": 6,
"price": 1.728,
"level": "HIGH"
},
{
"hour": 7,
"price": 1.554,
"level": "HIGH"
},
{
"hour": 8,
"price": 1.078,
"level": "NORMAL"
},
{
"hour": 9,
"price": 0.746,
"level": "NORMAL"
},
{
"hour": 10,
"price": 0.638,
"level": "LOW"
},
{
"hour": 11,
"price": 0.638,
"level": "LOW"
},
{
"hour": 12,
"price": 0.64,
"level": "LOW"
},
{
"hour": 13,
"price": 0.663,
"level": "NORMAL"
},
{
"hour": 14,
"price": 0.767,
"level": "NORMAL"
},
{
"hour": 15,
"price": 1.248,
"level": "NORMAL"
},
{
"hour": 16,
"price": 1.572,
"level": "HIGH"
},
{
"hour": 17,
"price": 2.429,
"level": "HIGH"
},
{
"hour": 18,
"price": 1.685,
"level": "HIGH"
},
{
"hour": 19,
"price": 1.527,
"level": "HIGH"
},
{
"hour": 20,
"price": 1.35,
"level": "HIGH"
},
{
"hour": 21,
"price": 1.196,
"level": "NORMAL"
},
{
"hour": 22,
"price": 1.346,
"level": "NORMAL"
},
{
"hour": 23,
"price": 1.178,
"level": "NORMAL"
}
],
"statistics": {
"min": 0.638,
"max": 2.429,
"avg": 1.217
}
}
]
}
curl "https://www.spotprisoptimering.se/api/signal.php?api_key=DIN_API_NYCKEL"
curl -H "Authorization: Bearer DIN_API_NYCKEL" https://www.spotprisoptimering.se/api/signal.php
curl "https://www.spotprisoptimering.se/api/prices.php?area=SE3"
<?php $api_key = "DIN_API_NYCKEL"; $url = "https://www.spotprisoptimering.se/api/signal.php?api_key=" . $api_key; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); echo "Signal: " . $data["signal"];
<?php
$api_key = "DIN_API_NYCKEL";
$url = "https://www.spotprisoptimering.se/api/car.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer " . $api_key
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo "Laddningsbehov: " . ($data["signal"] ?? "okÀnt");
import requests
api_key = "DIN_API_NYCKEL"
url = f"https://www.spotprisoptimering.se/api/signal.php?api_key={api_key}"
response = requests.get(url)
data = response.json()
print(f"Signal: {data["signal"]}")
print(f"Pris: {data["price"]["current"]} kr")
import requests
api_key = "DIN_API_NYCKEL"
url = "https://www.spotprisoptimering.se/api/car.php"
headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(url, headers=headers)
data = response.json()
print(f"Laddning: {data["signal"]}")
const apiKey = "DIN_API_NYCKEL";
fetch(`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`)
.then(response => response.json())
.then(data => {
console.log("Signal:", data.signal);
console.log("Pris:", data.price.current, "kr");
console.log("Rekommendation:", data.recommendation.action);
})
.catch(error => console.error("Fel:", error));
fetch("https://www.spotprisoptimering.se/api/car.php", {
headers: {
"Authorization": `Bearer ${apiKey}`
}
})
.then(response => response.json())
.then(data => {
if (data.alerts.length > 0) {
console.log("Varning:", data.alerts[0].message);
}
});
async function getPriceSignal() {
const apiKey = "DIN_API_NYCKEL";
try {
const response = await fetch(`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`);
const data = await response.json();
document.getElementById("status").innerHTML = `
<strong>Signal:</strong> ${data.signal}<br>
<strong>Pris:</strong> ${data.price.current} kr/kWh
`;
} catch (error) {
console.error("Fel vid API-anrop:", error);
}
}
const axios = require("axios");
const apiKey = "DIN_API_NYCKEL";
axios.get(`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`)
.then(response => {
console.log("Signal:", response.data.signal);
console.log("Pris:", response.data.price.current);
})
.catch(error => {
console.error("API-fel:", error.message);
});
const express = require("express");
const axios = require("axios");
const app = express();
app.get("/styr-varmepump", async (req, res) => {
try {
const apiKey = process.env.API_KEY;
const response = await axios.get(
`https://www.spotprisoptimering.se/api/signal.php?api_key=${apiKey}`
);
const signal = response.data.signal;
// Styr vÀrmepumpen baserat pÄ signal
if (signal === "HEAT") {
// SlÄ pÄ pumpen
await styrPump(true);
} else if (signal === "SAVE") {
// SĂ€nk temperaturen
await sÀnkTemperatur(2);
}
res.json({ success: true, signal });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
# configuration.yaml
rest_command:
spotpris_signal:
url: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
automation:
- alias: "Styr vÀrmepump efter pris"
trigger:
platform: time_pattern
minutes: "/5"
action:
- service: rest_command.spotpris_signal
# configuration.yaml
sensor:
- platform: rest
name: "Spotpris Signal"
resource: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
value_template: "{{ value_json.signal }}"
json_attributes:
- price
- level
- recommendation
scan_interval: 300
- platform: template
sensors:
spotpris_action:
value_template: "{{ state_attr('sensor.spotpris_signal', 'recommendation').action }}"
friendly_name: "Rekommendation"
# configuration.yaml
rest_command:
spotpris_car:
url: "https://www.spotprisoptimering.se/api/car_signal.php?api_key=API_NYCKEL"
automation:
- alias: "Ladda bil vid lÄgt pris"
trigger:
platform: time_pattern
minutes: "/10"
condition:
condition: template
value_template: "{{ states('sensor.spotpris_car') == 'CHARGE' }}"
action:
- service: switch.turn_on
entity_id: switch.charger
// Shelly script för vÀrmepumpsstyrning
function checkPrice() {
Shelly.call("HTTP.GET", {
url: "https://www.spotprisoptimering.se/api/signal.php?api_key=API_NYCKEL"
}, function(response) {
try {
let data = JSON.parse(response.body);
let signal = data.signal;
if (signal === "HEAT") {
// SlÄ pÄ relÀ (starta pump)
Shelly.call("Switch.Set", { id: 0, on: true });
console.log("LÄgt pris - startar pump");
} else if (signal === "SAVE") {
// StÀng av relÀ (stoppa pump)
Shelly.call("Switch.Set", { id: 0, on: false });
console.log("Högt pris - stoppar pump");
}
} catch (e) {
console.log("Fel vid parsning:", e);
}
});
}
// Kör var 15:e minut
Timer.set(900000, true, checkPrice);
// Shelly script för bil-laddning
function checkCarSignal() {
Shelly.call("HTTP.GET", {
url: "https://www.spotprisoptimering.se/api/car_signal.php?api_key=API_NYCKEL"
}, function(response) {
let signal = response.body; // Ren text
if (signal === "CHARGE" || signal === "CHARGE_NOW") {
// SlÄ pÄ relÀ (starta laddning)
Shelly.call("Switch.Set", { id: 0, on: true });
console.log("Laddar bil -", signal);
} else {
// StÀng av relÀ
Shelly.call("Switch.Set", { id: 0, on: false });
console.log("VĂ€ntar med laddning -", signal);
}
});
}
// Kör var 10:e minut
Timer.set(600000, true, checkCarSignal);
// Shelly script för varmvatten
function checkWaterHeater() {
Shelly.call("HTTP.GET", {
url: "https://www.spotprisoptimering.se/api/water.php?api_key=API_NYCKEL"
}, function(response) {
let signal = response.body;
if (signal === "START") {
Shelly.call("Switch.Set", { id: 0, on: true });
Shelly.call("Notify", { message: "VÀrmer vatten - lÄgt pris" });
} else if (signal === "STOPP") {
Shelly.call("Switch.Set", { id: 0, on: false });
}
});
}
// Kör var 30:e minut
Timer.set(1800000, true, checkWaterHeater);
| HTTP Status | Felkod | Beskrivning | Lösning |
|---|---|---|---|
| 401 | MISSING_API_KEY |
Ingen API-nyckel skickades med | LĂ€gg till ?api_key=DIN_NYCKEL i URL:en eller Authorization: Bearer header |
| 401 | INVALID_API_KEY |
Ogiltig eller inaktiv API-nyckel | Kontrollera att nyckeln Àr rÀtt och aktiv i dashboarden |
| 402 | SUBSCRIPTION_INACTIVE |
Prenumerationen Àr inte aktiv | Förnya din prenumeration i dashboarden |
| 404 | NOT_FOUND |
Endpoint hittades inte | Kontrollera att URL:en Àr korrekt |
| 405 | METHOD_NOT_ALLOWED |
Fel HTTP-metod anvÀndes | AnvÀnd GET (endast GET stöds) |
| 429 | RATE_LIMIT_EXCEEDED |
För mÄnga anrop | Max 100 anrop per minut. VÀnta en stund. |
| 500 | SERVER_ERROR |
Internt serverfel | Försök igen om nÄgra sekunder. Kontakta support om problemet kvarstÄr. |
| 503 | DB_ERROR |
TillfÀlligt databasfel | Försök igen om nÄgra sekunder |
| "Ingen API-nyckel" | Du har glömt att skicka med ?api_key= i URL:en |
| "Ogiltig API-nyckel" | Kontrollera att du kopierat rÀtt nyckel frÄn dashboarden |
| "Prenumeration ej aktiv" | Förnya din prenumeration i dashboarden |
| Tomt svar eller HTML | Du anropar troligen fel URL - kontrollera att du anvÀnder /api/... |
StandardvÀrdena Àr:
Dessa vÀrden kan justeras av varje anvÀndare i dashboarden under "InstÀllningar". API:et anvÀnder alltid anvÀndarens egna tröskelvÀrden.
NÀr priset Àr högt rekommenderar vi att du:
NÀr priset Àr lÄgt rekommenderar vi att du:
Har du fler frÄgor? Kontakta oss pÄ support@spotprisoptimering.se
FÄ din API-nyckel direkt i dashboarden och börja integrera pÄ 5 minuter. Första mÄnaden gratis!