curl --request POST \
--url https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"fromDate": "2025-01-01",
"toDate": "2025-01-31",
"limit": 20,
"page": 1,
"sortBy": "startTime",
"sortDirection": "DESC"
}
'import requests
url = "https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history"
payload = {
"fromDate": "2025-01-01",
"toDate": "2025-01-31",
"limit": 20,
"page": 1,
"sortBy": "startTime",
"sortDirection": "DESC"
}
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({
fromDate: '2025-01-01',
toDate: '2025-01-31',
limit: 20,
page: 1,
sortBy: 'startTime',
sortDirection: 'DESC'
})
};
fetch('https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history', 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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history",
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([
'fromDate' => '2025-01-01',
'toDate' => '2025-01-31',
'limit' => 20,
'page' => 1,
'sortBy' => 'startTime',
'sortDirection' => 'DESC'
]),
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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history"
payload := strings.NewReader("{\n \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history")
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 \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\n}"
response = http.request(request)
puts response.read_body{
"sessions": [],
"total": 0,
"hasMore": false
}{
"message": "Invalid request payload",
"details": [
"field X is required"
]
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}Get charging session history
Retrieves the charging session history for a specific user. The response includes detailed information about each session including: - Session status and duration - Energy consumption - Cost and payment details - Charging location information The results can be filtered by: - Session status - Specific charging key - Date range Pagination is supported through the cursor parameter.
curl --request POST \
--url https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"fromDate": "2025-01-01",
"toDate": "2025-01-31",
"limit": 20,
"page": 1,
"sortBy": "startTime",
"sortDirection": "DESC"
}
'import requests
url = "https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history"
payload = {
"fromDate": "2025-01-01",
"toDate": "2025-01-31",
"limit": 20,
"page": 1,
"sortBy": "startTime",
"sortDirection": "DESC"
}
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({
fromDate: '2025-01-01',
toDate: '2025-01-31',
limit: 20,
page: 1,
sortBy: 'startTime',
sortDirection: 'DESC'
})
};
fetch('https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history', 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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history",
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([
'fromDate' => '2025-01-01',
'toDate' => '2025-01-31',
'limit' => 20,
'page' => 1,
'sortBy' => 'startTime',
'sortDirection' => 'DESC'
]),
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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history"
payload := strings.NewReader("{\n \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\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://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{environment}.plugsurfing.com/drive/v1/users/{userId}/sessions/history")
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 \"fromDate\": \"2025-01-01\",\n \"toDate\": \"2025-01-31\",\n \"limit\": 20,\n \"page\": 1,\n \"sortBy\": \"startTime\",\n \"sortDirection\": \"DESC\"\n}"
response = http.request(request)
puts response.read_body{
"sessions": [],
"total": 0,
"hasMore": false
}{
"message": "Invalid request payload",
"details": [
"field X is required"
]
}{
"message": "Resource not found"
}{
"message": "Resource not found"
}Authorizations
API key for authentication
Path Parameters
The unique identifier of the user whose session history should be retrieved
Body
request
Filtering and pagination options for retrieving session history.
If not passed, only COMPLETE sessions are returned.
IMPORTANT - when handling this enum other unknown values should be handled.
CREATED, WAITING_TO_START, STARTED, WAITING_TO_STOP, STOPPED, COMPLETE, FAILED, UNKNOWN, STOP_FAILED Filter sessions by charging key identifier.
"kjG86L3wn5"
Lower bound for session start time (inclusive) in UTC.
Upper bound for session start time (inclusive) in UTC.
Cursor string - pass cursor from previous response body to get next page.
50
Number of entries
Response
Save the cursor to access next pages.
Paginated list of sessions returned by history queries.
Sessions matching the requested filters.
Show child attributes
Show child attributes
Use this exact string to get next page. If absent, it means no next page is available.
50
The total amount of sessions taking into account the filters sessionStatus, chargingKeyId, startTime and endTime, if provided.
946