curl --request GET \
--url https://api.spirii.com/emsp/v1/locations/{location_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spirii.com/emsp/v1/locations/{location_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spirii.com/emsp/v1/locations/{location_id}', 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.spirii.com/emsp/v1/locations/{location_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spirii.com/emsp/v1/locations/{location_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spirii.com/emsp/v1/locations/{location_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spirii.com/emsp/v1/locations/{location_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cpo_id": "<string>",
"source_id": "<string>",
"address": {
"address": "<string>",
"city": "<string>",
"country": "DNK",
"coordinates": {
"latitude": "<string>",
"longitude": "<string>"
},
"postal_code": "<string>",
"state": "<string>",
"time_zone": "Europe/Copenhagen"
},
"evses": [
{
"uid": "<string>",
"status": "AVAILABLE",
"connectors": [
{
"id": "<string>",
"standard": "CHADEMO",
"format": "CABLE",
"power_type": "AC_1_PHASE",
"last_updated": "2023-11-07T05:31:56Z",
"max_voltage": 123,
"max_amperage": 123,
"max_electric_power": 123,
"tariff_ids": [
"<string>"
],
"terms_and_conditions": "<string>"
}
],
"last_updated": "2023-11-07T05:31:56Z",
"evse_id": "<string>",
"floor_level": "<string>",
"physical_reference": "<string>",
"capabilities": [
"CHARGING_PREFERENCES_CAPABLE"
],
"parking_restrictions": [
"CUSTOMERS"
],
"directions": [
{
"language": "<string>",
"text": "<string>"
}
],
"status_schedule": [
{
"period_begin": "2023-11-07T05:31:56Z",
"status": "AVAILABLE",
"period_end": "2023-11-07T05:31:56Z"
}
],
"coordinates": {
"latitude": "<string>",
"longitude": "<string>"
},
"parking": [
{
"parking_id": "<string>",
"evse_position": "CENTER",
"vehicle_types": [
"MOTORCYCLE"
]
}
],
"images": [
{
"url": "<string>",
"category": "CHARGER",
"thumbnail_url": "<string>",
"type": "<string>",
"width": 123,
"height": 123
}
],
"last_status_updated": "2023-11-07T05:31:56Z"
}
],
"last_updated": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"opening_times": {
"regular_hours": [
{
"weekday": 4,
"period_begin": "08:00",
"period_end": "20:00"
}
],
"twenty_four_seven": true,
"exceptional_openings": [
{
"period_begin": "2023-11-07T05:31:56Z",
"period_end": "2023-11-07T05:31:56Z"
}
],
"exceptional_closings": [
{
"period_begin": "2023-11-07T05:31:56Z",
"period_end": "2023-11-07T05:31:56Z"
}
]
},
"access_type": "PRIVATE",
"facilities": [
"HOTEL"
],
"parking_type": "ALONG_MOTORWAY",
"charging_when_closed": true,
"directions": [
{
"language": "<string>",
"text": "<string>"
}
],
"energy_mix": {
"is_green_energy": true,
"energy_sources": [
{
"source": "SOLAR",
"percentage": 123
}
],
"environmental_impact": [
{
"source": "CARBON_DIOXIDE",
"amount": 123
}
],
"supplier_name": "<string>",
"energy_product_name": "<string>"
},
"images": [
{
"url": "<string>",
"category": "CHARGER",
"thumbnail_url": "<string>",
"type": "<string>",
"width": 123,
"height": 123
}
],
"related_locations": [
{
"latitude": "<string>",
"longitude": "<string>",
"name": {
"language": "<string>",
"text": "<string>"
}
}
],
"operator": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"suboperator": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"site_owner": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"help_phone": "<string>",
"parking_places": [
{
"id": "<string>",
"vehicle_types": [
"MOTORCYCLE"
],
"restricted_to_type": true,
"reservation_required": true,
"parking_space_length": 123
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}Get location detail
curl --request GET \
--url https://api.spirii.com/emsp/v1/locations/{location_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.spirii.com/emsp/v1/locations/{location_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.spirii.com/emsp/v1/locations/{location_id}', 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.spirii.com/emsp/v1/locations/{location_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spirii.com/emsp/v1/locations/{location_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spirii.com/emsp/v1/locations/{location_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spirii.com/emsp/v1/locations/{location_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cpo_id": "<string>",
"source_id": "<string>",
"address": {
"address": "<string>",
"city": "<string>",
"country": "DNK",
"coordinates": {
"latitude": "<string>",
"longitude": "<string>"
},
"postal_code": "<string>",
"state": "<string>",
"time_zone": "Europe/Copenhagen"
},
"evses": [
{
"uid": "<string>",
"status": "AVAILABLE",
"connectors": [
{
"id": "<string>",
"standard": "CHADEMO",
"format": "CABLE",
"power_type": "AC_1_PHASE",
"last_updated": "2023-11-07T05:31:56Z",
"max_voltage": 123,
"max_amperage": 123,
"max_electric_power": 123,
"tariff_ids": [
"<string>"
],
"terms_and_conditions": "<string>"
}
],
"last_updated": "2023-11-07T05:31:56Z",
"evse_id": "<string>",
"floor_level": "<string>",
"physical_reference": "<string>",
"capabilities": [
"CHARGING_PREFERENCES_CAPABLE"
],
"parking_restrictions": [
"CUSTOMERS"
],
"directions": [
{
"language": "<string>",
"text": "<string>"
}
],
"status_schedule": [
{
"period_begin": "2023-11-07T05:31:56Z",
"status": "AVAILABLE",
"period_end": "2023-11-07T05:31:56Z"
}
],
"coordinates": {
"latitude": "<string>",
"longitude": "<string>"
},
"parking": [
{
"parking_id": "<string>",
"evse_position": "CENTER",
"vehicle_types": [
"MOTORCYCLE"
]
}
],
"images": [
{
"url": "<string>",
"category": "CHARGER",
"thumbnail_url": "<string>",
"type": "<string>",
"width": 123,
"height": 123
}
],
"last_status_updated": "2023-11-07T05:31:56Z"
}
],
"last_updated": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"name": "<string>",
"opening_times": {
"regular_hours": [
{
"weekday": 4,
"period_begin": "08:00",
"period_end": "20:00"
}
],
"twenty_four_seven": true,
"exceptional_openings": [
{
"period_begin": "2023-11-07T05:31:56Z",
"period_end": "2023-11-07T05:31:56Z"
}
],
"exceptional_closings": [
{
"period_begin": "2023-11-07T05:31:56Z",
"period_end": "2023-11-07T05:31:56Z"
}
]
},
"access_type": "PRIVATE",
"facilities": [
"HOTEL"
],
"parking_type": "ALONG_MOTORWAY",
"charging_when_closed": true,
"directions": [
{
"language": "<string>",
"text": "<string>"
}
],
"energy_mix": {
"is_green_energy": true,
"energy_sources": [
{
"source": "SOLAR",
"percentage": 123
}
],
"environmental_impact": [
{
"source": "CARBON_DIOXIDE",
"amount": 123
}
],
"supplier_name": "<string>",
"energy_product_name": "<string>"
},
"images": [
{
"url": "<string>",
"category": "CHARGER",
"thumbnail_url": "<string>",
"type": "<string>",
"width": 123,
"height": 123
}
],
"related_locations": [
{
"latitude": "<string>",
"longitude": "<string>",
"name": {
"language": "<string>",
"text": "<string>"
}
}
],
"operator": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"suboperator": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"site_owner": {
"name": "<string>",
"website": "<string>",
"logo_url": "<string>"
},
"help_phone": "<string>",
"parking_places": [
{
"id": "<string>",
"vehicle_types": [
"MOTORCYCLE"
],
"restricted_to_type": true,
"reservation_required": true,
"parking_space_length": 123
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}{
"type": "about:blank",
"title": "Tenant not found",
"status": 404,
"detail": "No tenant exists with id 0192...c3.",
"instance": "/v1/tenant/profile",
"code": "tenant_not_found",
"trace_id": "abc123def456",
"timestamp": "2026-06-10T09:30:00.000Z",
"errors": [
{
"field": "workspace_id",
"code": "is_uuid",
"message": "workspace_id must be a UUID"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Query Parameters
End-user token id; resolves through its token group to the reachable SUB networks.
Token group id (peer to token_id); resolves to its assigned SUB networks.
Response
The requested location.
Canonical location id.
CPO id (eMI3, e.g. DK*SPI).
Operator's own id for the location.
The structured address, coordinates and time zone.
Show child attributes
Show child attributes
The location EVSEs (each with its connectors).
Show child attributes
Show child attributes
Last-update timestamp (UTC).
Creation timestamp (UTC).
The human-readable location name.
The site opening-hours data.
Show child attributes
Show child attributes
The driver-facing public, restricted, or private access classification.
PRIVATE, PUBLIC, RESTRICTED The facilities at this location. GET /locations/facilities returns the catalogue with localized labels, icon hints and per-facility counts.
HOTEL, RESTAURANT, CAFE, MALL, SUPERMARKET, SPORT, RECREATION_AREA, NATURE, MUSEUM, BIKE_SHARING, BUS_STOP, TAXI_STAND, TRAM_STOP, METRO_STATION, TRAIN_STATION, AIRPORT, PARKING_LOT, CARPOOL_PARKING, FUEL_STATION, WIFI, OTHER The OCPI-aligned parking classification of the location.
ALONG_MOTORWAY, ON_DRIVEWAY, ON_STREET, OTHER, PARKING_GARAGE, PARKING_LOT, UNDERGROUND_GARAGE, UNKNOWN Whether charging may continue while the site is closed. Absent when the CPO did not state it — this API never substitutes a value. OCPI 2.2.1 defines the fallback for an absent value as true, so applying it is the caller’s choice.
Human-readable directions to the site (multi-language).
Show child attributes
Show child attributes
The site energy metadata.
Show child attributes
Show child attributes
The location images.
Show child attributes
Show child attributes
Additional related geo points associated with the location.
Show child attributes
Show child attributes
The operator metadata.
Show child attributes
Show child attributes
The suboperator metadata.
Show child attributes
Show child attributes
The physical site-owner metadata.
Show child attributes
Show child attributes
The driver-facing support phone number.
The parking places usable by vehicles charging at this location.
Show child attributes
Show child attributes
Was this page helpful?