ProRankedDashboard ↗

Get session analytics

GET/emsp/v1/analytics/sessions

Returns session analytics including counts, averages, and time series data.

Query parameters
periodstring · queryoptional
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
Response — 200
dataobjectoptional
totalSessionsinteger · int32optional
Total sessions started in the window.
example: 1842
completedSessionsinteger · int32optional
Sessions that completed successfully.
example: 1790
failedSessionsinteger · int32optional
Sessions that failed or errored.
example: 52
averageSessionDurationMinutesnumber · doubleoptional
Average session duration, in minutes (rounded to 2 dp).
example: 47.32
averageEnergyPerSessionKwhnumber · doubleoptional
Average energy delivered per session, in kWh (rounded to 2 dp).
example: 18.64
growthPercentagenumber · doubleoptional
Session-count growth vs the previous equal-length window, as a percentage.
example: 12.5
periodstringoptional
Time-series bucketing requested (day, week, or month).
example: "day"
fromDateobject · date-timeoptional
UTC start of the analytics window.
example: "2026-05-20T00:00:00Z"
toDateobject · date-timeoptional
UTC end of the analytics window.
example: "2026-06-19T00:00:00Z"
timelinearray of objectoptional
Session counts bucketed over the window.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/analytics/sessionsX-API-Key
curl 'https://api.proranked.com/emsp/v1/analytics/sessions' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "totalSessions": 1842,
    "completedSessions": 1790,
    "failedSessions": 52,
    "averageSessionDurationMinutes": 47.32,
    "averageEnergyPerSessionKwh": 18.64,
    "growthPercentage": 12.5,
    "period": "day",
    "fromDate": "2026-05-20T00:00:00Z",
    "toDate": "2026-06-19T00:00:00Z",
    "timeline": [
      {
        "date": "2026-06-18T00:00:00Z",
        "value": 124.5,
        "label": "Jun 18"
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get revenue analytics

GET/emsp/v1/analytics/revenue

Returns revenue analytics including totals, averages, and time series data.

Query parameters
periodstring · queryoptional
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
Response — 200
dataobjectoptional
totalRevenuenumber · doubleoptional
Total revenue in the window, in the response currency (rounded to 2 dp).
example: 26840.5
averagePerSessionnumber · doubleoptional
Average revenue per paid session, in the response currency.
example: 14.57
currencystringoptional
ISO 4217 currency code the revenue is expressed in.
example: "USD"
growthPercentagenumber · doubleoptional
Revenue growth vs the previous equal-length window, as a percentage.
example: 9.8
periodstringoptional
Time-series bucketing requested (day, week, or month).
example: "day"
fromDateobject · date-timeoptional
UTC start of the analytics window.
example: "2026-05-20T00:00:00Z"
toDateobject · date-timeoptional
UTC end of the analytics window.
example: "2026-06-19T00:00:00Z"
timelinearray of objectoptional
Revenue bucketed over the window.
revenueByLocationarray of objectoptional
Top 10 locations by revenue in the window.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/analytics/revenueX-API-Key
curl 'https://api.proranked.com/emsp/v1/analytics/revenue' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "totalRevenue": 26840.5,
    "averagePerSession": 14.57,
    "currency": "USD",
    "growthPercentage": 9.8,
    "period": "day",
    "fromDate": "2026-05-20T00:00:00Z",
    "toDate": "2026-06-19T00:00:00Z",
    "timeline": [
      {
        "date": "2026-06-18T00:00:00Z",
        "value": 124.5,
        "label": "Jun 18"
      }
    ],
    "revenueByLocation": [
      {
        "name": "Isla Verde Mall",
        "value": 842.75,
        "percentage": 31.4
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get energy consumption analytics

GET/emsp/v1/analytics/energy

Returns energy consumption analytics including totals and time series data.

Query parameters
periodstring · queryoptional
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
Response — 200
dataobjectoptional
totalEnergyKwhnumber · doubleoptional
Total energy delivered in the window, in kWh (rounded to 2 dp).
example: 34328.1
averagePerSessionKwhnumber · doubleoptional
Average energy delivered per session, in kWh.
example: 18.64
peakDayKwhnumber · doubleoptional
Energy delivered on the single highest day, in kWh.
example: 1640.2
peakDayDateobject · date-timeoptional
UTC date of the highest-energy day, or null when there are no sessions.
example: "2026-06-07T00:00:00Z"
growthPercentagenumber · doubleoptional
Energy growth vs the previous equal-length window, as a percentage.
example: 7.2
periodstringoptional
Time-series bucketing requested (day, week, or month).
example: "day"
fromDateobject · date-timeoptional
UTC start of the analytics window.
example: "2026-05-20T00:00:00Z"
toDateobject · date-timeoptional
UTC end of the analytics window.
example: "2026-06-19T00:00:00Z"
timelinearray of objectoptional
Energy delivered bucketed over the window.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/analytics/energyX-API-Key
curl 'https://api.proranked.com/emsp/v1/analytics/energy' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "totalEnergyKwh": 34328.1,
    "averagePerSessionKwh": 18.64,
    "peakDayKwh": 1640.2,
    "peakDayDate": "2026-06-07T00:00:00Z",
    "growthPercentage": 7.2,
    "period": "day",
    "fromDate": "2026-05-20T00:00:00Z",
    "toDate": "2026-06-19T00:00:00Z",
    "timeline": [
      {
        "date": "2026-06-18T00:00:00Z",
        "value": 124.5,
        "label": "Jun 18"
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List tokens

GET/emsp/v1/auth/tokens

Returns a paginated list of tokens for a user.

Query parameters
userIdstring · uuid · queryoptional
tokenTypestring · queryoptional
validboolean · queryoptional
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
Response — 200
dataarray of objectoptional
The page of tokens.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
paginationobjectoptional
totalCountinteger · int32optional
Total number of tokens across all pages.
example: 42
pageinteger · int32optional
1-based page index of this result set.
example: 1
pageSizeinteger · int32optional
Items per page (1–100; defaults to 20).
example: 20
totalPagesinteger · int32optional
Total number of pages at the current pageSize.
example: 3
hasNextPagebooleanoptional
True when a page after this one exists.
example: true
hasPreviousPagebooleanoptional
True when a page before this one exists.
example: false
GET /emsp/v1/auth/tokensX-API-Key
curl 'https://api.proranked.com/emsp/v1/auth/tokens' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70",
      "uid": "A1B2C3D4E5F6",
      "contractId": "US-PHV-A1B2C3D4",
      "tokenType": "APP_USER",
      "alias": "Maya's app token",
      "valid": true,
      "userId": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
      "createdAt": "2026-06-19T18:42:09Z",
      "expiresAt": "2027-06-19T00:00:00Z",
      "lastUsedAt": "2026-06-18T14:05:33Z"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z",
  "pagination": {
    "totalCount": 42,
    "page": 1,
    "pageSize": 20,
    "totalPages": 3,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}
Try itruns against your network · response is live

Create authentication token

POST/emsp/v1/auth/tokens

Creates a new authentication token for a user. The token can be used for charging sessions.

Request body
userIdstring · uuidrequired
tokenTypestringoptional
uidstringoptional
aliasstringoptional
expiresAtobject · date-timeoptional
Response — 201
dataobjectoptional
idstring · uuidoptional
Stable token UUID. Use it in GET /auth/tokens/{id} and DELETE /auth/tokens/{id}.
example: "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
uidstringoptional
Token UID — the credential a charger reads (RFID card serial or app-issued identifier). Auto-generated (12-char alphanumeric) when not supplied on create.
example: "A1B2C3D4E5F6"
contractIdstringoptional
OCPI-style eMA contract id (COUNTRY-PARTY-UNIQUE), generated per token from the owning network.
example: "US-PHV-A1B2C3D4"
tokenTypestringoptional
Token category: RFID, APP_USER, AD_HOC_USER, or OTHER.
example: "APP_USER"
aliasstringoptional
Optional human-friendly label for the token.
example: "Maya's app token"
validbooleanoptional
Whether the token may currently be used to authorize charging. Set to false by DELETE /auth/tokens/{id}.
example: true
userIdstring · uuidoptional
UUID of the driver (user) this token belongs to.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
createdAtobject · date-timeoptional
UTC timestamp when the token was created.
example: "2026-06-19T18:42:09Z"
expiresAtobject · date-timeoptional
Optional UTC expiry. Null means the token does not expire.
example: "2027-06-19T00:00:00Z"
lastUsedAtobject · date-timeoptional
UTC timestamp the token was last used to authorize a session, or null if never used.
example: "2026-06-18T14:05:33Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/tokensX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/tokens' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "id": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70",
    "uid": "A1B2C3D4E5F6",
    "contractId": "US-PHV-A1B2C3D4",
    "tokenType": "APP_USER",
    "alias": "Maya's app token",
    "valid": true,
    "userId": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "createdAt": "2026-06-19T18:42:09Z",
    "expiresAt": "2027-06-19T00:00:00Z",
    "lastUsedAt": "2026-06-18T14:05:33Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get token details

GET/emsp/v1/auth/tokens/{id}

Returns detailed information about a specific token.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable token UUID. Use it in GET /auth/tokens/{id} and DELETE /auth/tokens/{id}.
example: "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
uidstringoptional
Token UID — the credential a charger reads (RFID card serial or app-issued identifier). Auto-generated (12-char alphanumeric) when not supplied on create.
example: "A1B2C3D4E5F6"
contractIdstringoptional
OCPI-style eMA contract id (COUNTRY-PARTY-UNIQUE), generated per token from the owning network.
example: "US-PHV-A1B2C3D4"
tokenTypestringoptional
Token category: RFID, APP_USER, AD_HOC_USER, or OTHER.
example: "APP_USER"
aliasstringoptional
Optional human-friendly label for the token.
example: "Maya's app token"
validbooleanoptional
Whether the token may currently be used to authorize charging. Set to false by DELETE /auth/tokens/{id}.
example: true
userIdstring · uuidoptional
UUID of the driver (user) this token belongs to.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
createdAtobject · date-timeoptional
UTC timestamp when the token was created.
example: "2026-06-19T18:42:09Z"
expiresAtobject · date-timeoptional
Optional UTC expiry. Null means the token does not expire.
example: "2027-06-19T00:00:00Z"
lastUsedAtobject · date-timeoptional
UTC timestamp the token was last used to authorize a session, or null if never used.
example: "2026-06-18T14:05:33Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/auth/tokens/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/auth/tokens/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70",
    "uid": "A1B2C3D4E5F6",
    "contractId": "US-PHV-A1B2C3D4",
    "tokenType": "APP_USER",
    "alias": "Maya's app token",
    "valid": true,
    "userId": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "createdAt": "2026-06-19T18:42:09Z",
    "expiresAt": "2027-06-19T00:00:00Z",
    "lastUsedAt": "2026-06-18T14:05:33Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Invalidate a token

DELETE/emsp/v1/auth/tokens/{id}

Invalidates (soft-deletes) a token so it can no longer be used for authorization.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
tokenIdstring · uuidoptional
UUID of the token the action was applied to.
example: "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70"
actionstringoptional
The action that was performed (e.g. "invalidate").
example: "invalidate"
successbooleanoptional
True when the action completed successfully.
example: true
messagestringoptional
Human-readable description of the outcome.
example: "Token has been invalidated successfully"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
DELETE /emsp/v1/auth/tokens/{id}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/auth/tokens/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "tokenId": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70",
    "action": "invalidate",
    "success": true,
    "message": "Token has been invalidated successfully"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Register a new driver account

POST/emsp/v1/auth/driver/register
Request body
emailstringrequired
passwordstringrequired
firstNamestringrequired
lastNamestringrequired
phonestringoptional
Response — 201
dataobjectoptional
accessTokenstringoptional
Short-lived bearer access token (JWT). Send it as `Authorization: Bearer <token>` on driver-scoped requests.
example: "eyJ...<access-token>..."
refreshTokenstringoptional
Long-lived refresh token. Exchange it at /auth/driver/refresh for a new access token. Store it securely; treat it as a credential.
example: "<refresh-token>"
expiresIninteger · int32optional
Lifetime of the access token, in seconds.
example: 3600
tokenTypestringoptional
Authorization scheme for the access token — always "Bearer".
example: "Bearer"
driverobjectoptional
idstring · uuidoptional
Stable driver (user) UUID — the sub the token is bound to.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
emailstringoptional
Driver's email address.
example: "maya@example.com"
firstNamestringoptional
Driver's first name.
example: "Maya"
lastNamestringoptional
Driver's last name.
example: "Rivera"
tokenUidstringoptional
UID of the charging token auto-provisioned for the driver, or null if none was issued.
example: "A1B2C3D4E5F6"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/driver/registerX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/driver/register' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "accessToken": "eyJ...<access-token>...",
    "refreshToken": "<refresh-token>",
    "expiresIn": 3600,
    "tokenType": "Bearer",
    "driver": {
      "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
      "email": "maya@example.com",
      "firstName": "Maya",
      "lastName": "Rivera",
      "tokenUid": "A1B2C3D4E5F6"
    }
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Login with email and password

POST/emsp/v1/auth/driver/login
Request body
emailstringrequired
passwordstringrequired
Response — 200
dataobjectoptional
accessTokenstringoptional
Short-lived bearer access token (JWT). Send it as `Authorization: Bearer <token>` on driver-scoped requests.
example: "eyJ...<access-token>..."
refreshTokenstringoptional
Long-lived refresh token. Exchange it at /auth/driver/refresh for a new access token. Store it securely; treat it as a credential.
example: "<refresh-token>"
expiresIninteger · int32optional
Lifetime of the access token, in seconds.
example: 3600
tokenTypestringoptional
Authorization scheme for the access token — always "Bearer".
example: "Bearer"
driverobjectoptional
idstring · uuidoptional
Stable driver (user) UUID — the sub the token is bound to.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
emailstringoptional
Driver's email address.
example: "maya@example.com"
firstNamestringoptional
Driver's first name.
example: "Maya"
lastNamestringoptional
Driver's last name.
example: "Rivera"
tokenUidstringoptional
UID of the charging token auto-provisioned for the driver, or null if none was issued.
example: "A1B2C3D4E5F6"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/driver/loginX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/driver/login' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "accessToken": "eyJ...<access-token>...",
    "refreshToken": "<refresh-token>",
    "expiresIn": 3600,
    "tokenType": "Bearer",
    "driver": {
      "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
      "email": "maya@example.com",
      "firstName": "Maya",
      "lastName": "Rivera",
      "tokenUid": "A1B2C3D4E5F6"
    }
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Refresh access token using refresh token

POST/emsp/v1/auth/driver/refresh
Request body
refreshTokenstringrequired
Response — 200
dataobjectoptional
accessTokenstringoptional
A freshly issued short-lived bearer access token (JWT).
example: "eyJ...<access-token>..."
refreshTokenstringoptional
The rotated refresh token, or the same token on a benign within-grace duplicate refresh.
example: "<refresh-token>"
expiresIninteger · int32optional
Lifetime of the new access token, in seconds.
example: 3600
tokenTypestringoptional
Authorization scheme for the access token — always "Bearer".
example: "Bearer"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/driver/refreshX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/driver/refresh' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "accessToken": "eyJ...<access-token>...",
    "refreshToken": "<refresh-token>",
    "expiresIn": 3600,
    "tokenType": "Bearer"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Request a password reset email

POST/emsp/v1/auth/driver/forgot-password
Request body
emailstringrequired
Response — 200
dataobjectoptional
messagestringoptional
Human-readable outcome message. For forgot-password it is deliberately generic to prevent email enumeration.
example: "If the email exists, a password reset link has been sent."
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/driver/forgot-passwordX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/driver/forgot-password' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "message": "If the email exists, a password reset link has been sent."
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Reset password using token from email

POST/emsp/v1/auth/driver/reset-password
Request body
tokenstringrequired
newPasswordstringrequired
Response — 200
dataobjectoptional
messagestringoptional
Human-readable outcome message. For forgot-password it is deliberately generic to prevent email enumeration.
example: "If the email exists, a password reset link has been sent."
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/auth/driver/reset-passwordX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/auth/driver/reset-password' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "message": "If the email exists, a password reset link has been sent."
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get authenticated driver's profile

GET/emsp/v1/auth/driver/me
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable driver (user) UUID.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
Emailstringoptional
Driver's email address.
example: "maya@example.com"
FirstNamestringoptional
Driver's first name.
example: "Maya"
LastNamestringoptional
Driver's last name.
example: "Rivera"
PhoneNumberstringoptional
Driver's phone number.
example: "+17875551234"
Addressstringoptional
Street address, or null.
example: "123 Calle Sol"
Citystringoptional
City, or null.
example: "San Juan"
Statestringoptional
State/region, or null.
example: "PR"
PostalCodestringoptional
Postal code, or null.
example: "00901"
Countrystringoptional
Country, or null.
example: "US"
CreatedAtobject · date-timeoptional
UTC timestamp when the driver account was created.
example: "2026-01-15T09:30:00Z"
tokensarray of objectoptional
The driver's currently valid charging tokens.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/auth/driver/meX-API-Key
curl 'https://api.proranked.com/emsp/v1/auth/driver/me' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "Email": "maya@example.com",
    "FirstName": "Maya",
    "LastName": "Rivera",
    "PhoneNumber": "+17875551234",
    "Address": "123 Calle Sol",
    "City": "San Juan",
    "State": "PR",
    "PostalCode": "00901",
    "Country": "US",
    "CreatedAt": "2026-01-15T09:30:00Z",
    "tokens": [
      {
        "TokenUuid": "7c1e2a44-9b3d-4e6f-8a01-2b3c4d5e6f70",
        "Uid": "A1B2C3D4E5F6",
        "TokenType": "APP_USER"
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List all chargers

GET/emsp/v1/chargers

Returns a paginated list of chargers in the network.

Query parameters
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
statusstring · queryoptional
Filter the results by status.
locationIdstring · uuid · queryoptional
Filter by location UUID.
isPublicboolean · queryoptional
Response — 200
dataarray of objectoptional
The page of chargers.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
paginationobjectoptional
totalCountinteger · int32optional
Total number of items across all pages.
example: 137
pageinteger · int32optional
1-based page index of this result set.
example: 1
pageSizeinteger · int32optional
Items requested per page (1–100; defaults to 20).
example: 20
totalPagesinteger · int32optional
Total number of pages at the current pageSize.
example: 7
hasNextPagebooleanoptional
True if there is a page after this one.
example: true
hasPreviousPagebooleanoptional
True if there is a page before this one.
example: false
GET /emsp/v1/chargersX-API-Key
curl 'https://api.proranked.com/emsp/v1/chargers' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
      "uid": "CP-IslaVerde-01",
      "evseId": "PR*PHX*E001234",
      "status": "AVAILABLE",
      "locationId": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
      "locationName": "Isla Verde Mall",
      "isPublic": true,
      "maxPowerKw": 150,
      "connectorCount": 2,
      "lastHeartbeat": "2026-06-19T18:42:07Z",
      "isOnline": true,
      "lastUpdated": "2026-06-19T18:42:07Z",
      "networkId": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
      "networkName": "Phevnix PR"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z",
  "pagination": {
    "totalCount": 137,
    "page": 1,
    "pageSize": 20,
    "totalPages": 7,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}
Try itruns against your network · response is live

Get charger details

GET/emsp/v1/chargers/{id}

Returns detailed information about a specific charger including its connectors.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable charger UUID.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
uidstringoptional
OCPP charge-point identity (chargePointId).
example: "CP-IslaVerde-01"
evseIdstringoptional
eMI3/OCPI EVSE identifier, if assigned.
example: "PR*PHX*E001234"
statusstringoptional
Last OCPP status reported by the station. Cross-check isOnline for liveness.
example: "AVAILABLE"
locationIdstring · uuidoptional
UUID of the assigned location/site, or null.
example: "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
locationNamestringoptional
Display name of the assigned location, or null.
example: "Isla Verde Mall"
isPublicbooleanoptional
True if the charger is publicly listed/usable.
example: true
maxPowerKwnumber · doubleoptional
Rated maximum power of the charger, in kW. Falls back to the strongest connector's rating when the charger-level value is unset.
example: 150
connectorCountinteger · int32optional
Number of active (non-deleted) connectors on this charger.
example: 2
lastHeartbeatobject · date-timeoptional
UTC timestamp of the last OCPP heartbeat / StatusNotification.
example: "2026-06-19T18:42:07Z"
isOnlinebooleanoptional
True only if a heartbeat arrived within the last 5 minutes.
example: true
lastUpdatedobject · date-timeoptional
UTC timestamp the charger record was last updated.
example: "2026-06-19T18:42:07Z"
networkIdstring · uuidoptional
UUID of the owning network (operator).
example: "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
networkNamestringoptional
Display name of the owning network.
example: "Phevnix PR"
serialNumberstringoptional
Manufacturer hardware serial number, if the station reported one.
example: "SN-A1B2C3D4"
manufacturerstringoptional
Charger manufacturer name, if known.
example: "ABB"
modelstringoptional
Charger model name, if known.
example: "Terra 184"
firmwareVersionstringoptional
Firmware version last reported via OCPP BootNotification.
example: "1.5.32"
ocppVersionstringoptional
OCPP protocol the station negotiated (e.g. 1.6 or 2.0.1).
example: "1.6"
installationDateobject · date-timeoptional
UTC date the charger was installed/commissioned, if recorded.
example: "2025-09-01T00:00:00Z"
floorLevelstringoptional
Floor/level the charger sits on (e.g. "P1"), if recorded.
example: "P1"
physicalReferencestringoptional
Free-text physical reference printed at the bay (e.g. a stall number).
example: "Bay 14"
coordinatesobjectoptional
connectorsarray of objectoptional
The charger's connectors, ordered by connector number.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/chargers/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/chargers/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "uid": "CP-IslaVerde-01",
    "evseId": "PR*PHX*E001234",
    "status": "AVAILABLE",
    "locationId": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "locationName": "Isla Verde Mall",
    "isPublic": true,
    "maxPowerKw": 150,
    "connectorCount": 2,
    "lastHeartbeat": "2026-06-19T18:42:07Z",
    "isOnline": true,
    "lastUpdated": "2026-06-19T18:42:07Z",
    "networkId": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
    "networkName": "Phevnix PR",
    "serialNumber": "SN-A1B2C3D4",
    "manufacturer": "ABB",
    "model": "Terra 184",
    "firmwareVersion": "1.5.32",
    "ocppVersion": "1.6",
    "installationDate": "2025-09-01T00:00:00Z",
    "floorLevel": "P1",
    "physicalReference": "Bay 14",
    "coordinates": null,
    "connectors": [
      {
        "id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
        "connectorNumber": 1,
        "connectorIdentifier": "CP-IslaVerde-01-1",
        "status": "AVAILABLE",
        "standard": "IEC_62196_T2",
        "format": "SOCKET",
        "powerType": "AC_3_PHASE",
        "maxVoltage": 400,
        "maxAmperage": 32,
        "maxElectricPowerWatts": 22000,
        "lastUpdated": "2026-06-19T18:42:07Z"
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Reboot a charger

POST/emsp/v1/chargers/{id}/reboot

Sends a reset command to the charger. Use 'Soft' for firmware restart or 'Hard' for power cycle.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
UUID of the charger the reset command was sent to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
statusstringoptional
Command acknowledgement status, e.g. "Accepted".
example: "Accepted"
messagestringoptional
Human-readable confirmation of the command result.
example: "Soft reset command sent successfully"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/chargers/{id}/rebootX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/chargers/{id}/reboot' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "status": "Accepted",
    "message": "Soft reset command sent successfully"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get charger info for QR code scanning

GET/emsp/v1/chargers/{identifier}/info

Returns charger information with pricing details for QR code scanning. Accepts UUID, Uid, or SerialNumber as identifier. Only returns public chargers at published locations.

Path & query parameters
identifierstring · pathrequired
Response — 200
dataobjectoptional
chargerUuidstring · uuidoptional
Stable charger UUID.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
chargerUidstringoptional
OCPP charge-point identity (chargePointId).
example: "CP-IslaVerde-01"
chargerNamestringoptional
Display name for the charger (currently mirrors the Uid).
example: "CP-IslaVerde-01"
llmLookupIdstringoptional
Short human code printed on the station (e.g. "SHD54S") — a driver references the charger by this, including by voice.
example: "SHD54S"
statusstringoptional
Last OCPP status reported by the station.
example: "AVAILABLE"
isOnlinebooleanoptional
True only if a heartbeat arrived within the last 5 minutes.
example: true
locationUuidstring · uuidoptional
UUID of the location/site this charger sits at.
example: "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
locationNamestringoptional
Display name of the location/site.
example: "Isla Verde Mall"
addressstringoptional
Street address of the location.
example: "8169 Calle Marginal"
citystringoptional
City of the location.
example: "Carolina"
latitudenumber · doubleoptional
Latitude of the location (or charger fallback), in decimal degrees.
example: 18.4319
longitudenumber · doubleoptional
Longitude of the location (or charger fallback), in decimal degrees.
example: -66.0617
networkUuidstring · uuidoptional
UUID of the owning network (operator).
example: "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
networkNamestringoptional
Display name of the owning network.
example: "Phevnix PR"
networkLogoUrlstringoptional
URL of the network's logo, for white-label theming. Null if unset.
example: "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg"
networkPrimaryColorstringoptional
Network primary brand color (hex, e.g. "#0EA5E9") for white-label UI. Null if unset.
example: "#0EA5E9"
networkSecondaryColorstringoptional
Network secondary brand color (hex). Null if unset.
example: "#0F172A"
currencystringoptional
ISO 4217 currency code the network prices in.
example: "USD"
connectorsarray of objectoptional
The charger's connectors with their applicable pricing.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/chargers/{identifier}/infoX-API-Key
curl 'https://api.proranked.com/emsp/v1/chargers/{identifier}/info' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerUuid": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "chargerUid": "CP-IslaVerde-01",
    "chargerName": "CP-IslaVerde-01",
    "llmLookupId": "SHD54S",
    "status": "AVAILABLE",
    "isOnline": true,
    "locationUuid": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "locationName": "Isla Verde Mall",
    "address": "8169 Calle Marginal",
    "city": "Carolina",
    "latitude": 18.4319,
    "longitude": -66.0617,
    "networkUuid": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
    "networkName": "Phevnix PR",
    "networkLogoUrl": "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg",
    "networkPrimaryColor": "#0EA5E9",
    "networkSecondaryColor": "#0F172A",
    "currency": "USD",
    "connectors": [
      {
        "connectorUuid": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
        "connectorIdentifier": "CP-IslaVerde-01-1",
        "connectorNumber": 1,
        "standard": "IEC_62196_T2",
        "format": "SOCKET",
        "powerType": "AC_3_PHASE",
        "maxPowerKw": 22,
        "status": "AVAILABLE",
        "tariffId": "TARIFF-STD-AC",
        "tariffName": "Standard AC",
        "energyRate": 0.35,
        "timeRate": 0,
        "sessionFee": 0.5,
        "idleRate": 0.4,
        "idleFeeEnabled": true,
        "idleGracePeriodMinutes": 10
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List charging sessions

GET/emsp/v1/charging/sessions

Returns a paginated list of charging sessions for the network.

Query parameters
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
statusstring · queryoptional
Filter the results by status.
chargerIdstring · uuid · queryoptional
Filter by charger UUID.
locationIdstring · uuid · queryoptional
Filter by location UUID.
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
Response — 200
dataarray of objectoptional
The page of charging sessions, most-recent start first.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
paginationobjectoptional
totalCountinteger · int32optional
Total number of sessions matching the filter, across all pages.
example: 248
pageinteger · int32optional
1-based page index of this result set.
example: 1
pageSizeinteger · int32optional
Items per page (1–100; defaults to 20).
example: 20
totalPagesinteger · int32optional
Total number of pages at the current pageSize.
example: 13
hasNextPagebooleanoptional
True when a page after this one exists.
example: true
hasPreviousPagebooleanoptional
True when a page before this one exists.
example: false
GET /emsp/v1/charging/sessionsX-API-Key
curl 'https://api.proranked.com/emsp/v1/charging/sessions' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "status": "string",
      "chargerId": "00000000-0000-0000-0000-000000000000",
      "chargerUid": "string",
      "connectorId": "00000000-0000-0000-0000-000000000000",
      "connectorNumber": 0,
      "locationId": "00000000-0000-0000-0000-000000000000",
      "locationName": "string",
      "startTime": null,
      "endTime": null,
      "durationSeconds": 0,
      "energyDeliveredKwh": 0,
      "total": 0,
      "currency": "string",
      "maxPowerKw": 0,
      "currentPowerKw": 0,
      "currentSocPercent": 0
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z",
  "pagination": {
    "totalCount": 248,
    "page": 1,
    "pageSize": 20,
    "totalPages": 13,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}
Try itruns against your network · response is live

Get session details

GET/emsp/v1/charging/sessions/{id}

Returns detailed information about a specific charging session including cost breakdown.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
authMethodstringoptional
idTagstringoptional
startMeterValuenumber · doubleoptional
endMeterValuenumber · doubleoptional
currentMeterValuenumber · doubleoptional
startReasonstringoptional
stopReasonstringoptional
idleTimeSecondsinteger · int32optional
isInIdleStatebooleanoptional
paymentStatusstringoptional
costsobjectoptional
subtotalnumber · doubleoptional
taxesnumber · doubleoptional
sessionFeesnumber · doubleoptional
idleFeesnumber · doubleoptional
timeFeesnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
idstring · uuidoptional
statusstringoptional
chargerIdstring · uuidoptional
chargerUidstringoptional
connectorIdstring · uuidoptional
connectorNumberinteger · int32optional
locationIdstring · uuidoptional
locationNamestringoptional
startTimeobject · date-timeoptional
endTimeobject · date-timeoptional
durationSecondsinteger · int32optional
energyDeliveredKwhnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
maxPowerKwnumber · doubleoptional
currentPowerKwnumber · doubleoptional
currentSocPercentnumber · doubleoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/charging/sessions/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/charging/sessions/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "authMethod": "string",
    "idTag": "string",
    "startMeterValue": 0,
    "endMeterValue": 0,
    "currentMeterValue": 0,
    "startReason": "string",
    "stopReason": "string",
    "idleTimeSeconds": 0,
    "isInIdleState": true,
    "paymentStatus": "string",
    "costs": {
      "subtotal": 0,
      "taxes": 0,
      "sessionFees": 0,
      "idleFees": 0,
      "timeFees": 0,
      "total": 0,
      "currency": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "status": "string",
    "chargerId": "00000000-0000-0000-0000-000000000000",
    "chargerUid": "string",
    "connectorId": "00000000-0000-0000-0000-000000000000",
    "connectorNumber": 0,
    "locationId": "00000000-0000-0000-0000-000000000000",
    "locationName": "string",
    "startTime": null,
    "endTime": null,
    "durationSeconds": 0,
    "energyDeliveredKwh": 0,
    "total": 0,
    "currency": "string",
    "maxPowerKw": 0,
    "currentPowerKw": 0,
    "currentSocPercent": 0
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Start a charging session

POST/emsp/v1/charging/start

Initiates a charging session on the specified charger and connector using the provided authorization ID tag.

Request body
chargerIdstring · uuidrequired
connectorNumberinteger · int32required
idTagstringrequired
Response — 200
dataobjectoptional
idstring · uuidoptional
sessionIdstring · uuidoptional
correlationIdstring · uuidoptional
statusstringoptional
chargerIdstring · uuidoptional
connectorNumberinteger · int32optional
startTimeobject · date-timeoptional
messagestringoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/charging/startX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/charging/start' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "sessionId": "00000000-0000-0000-0000-000000000000",
    "correlationId": "00000000-0000-0000-0000-000000000000",
    "status": "string",
    "chargerId": "00000000-0000-0000-0000-000000000000",
    "connectorNumber": 0,
    "startTime": null,
    "message": "string"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Stop a charging session

POST/emsp/v1/charging/stop

Stops an active charging session and returns the final session details with cost breakdown.

Request body
sessionIdstring · uuidrequired
Response — 200
dataobjectoptional
authMethodstringoptional
idTagstringoptional
startMeterValuenumber · doubleoptional
endMeterValuenumber · doubleoptional
currentMeterValuenumber · doubleoptional
startReasonstringoptional
stopReasonstringoptional
idleTimeSecondsinteger · int32optional
isInIdleStatebooleanoptional
paymentStatusstringoptional
costsobjectoptional
subtotalnumber · doubleoptional
taxesnumber · doubleoptional
sessionFeesnumber · doubleoptional
idleFeesnumber · doubleoptional
timeFeesnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
idstring · uuidoptional
statusstringoptional
chargerIdstring · uuidoptional
chargerUidstringoptional
connectorIdstring · uuidoptional
connectorNumberinteger · int32optional
locationIdstring · uuidoptional
locationNamestringoptional
startTimeobject · date-timeoptional
endTimeobject · date-timeoptional
durationSecondsinteger · int32optional
energyDeliveredKwhnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
maxPowerKwnumber · doubleoptional
currentPowerKwnumber · doubleoptional
currentSocPercentnumber · doubleoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/charging/stopX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/charging/stop' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "authMethod": "string",
    "idTag": "string",
    "startMeterValue": 0,
    "endMeterValue": 0,
    "currentMeterValue": 0,
    "startReason": "string",
    "stopReason": "string",
    "idleTimeSeconds": 0,
    "isInIdleState": true,
    "paymentStatus": "string",
    "costs": {
      "subtotal": 0,
      "taxes": 0,
      "sessionFees": 0,
      "idleFees": 0,
      "timeFees": 0,
      "total": 0,
      "currency": "string"
    },
    "id": "00000000-0000-0000-0000-000000000000",
    "status": "string",
    "chargerId": "00000000-0000-0000-0000-000000000000",
    "chargerUid": "string",
    "connectorId": "00000000-0000-0000-0000-000000000000",
    "connectorNumber": 0,
    "locationId": "00000000-0000-0000-0000-000000000000",
    "locationName": "string",
    "startTime": null,
    "endTime": null,
    "durationSeconds": 0,
    "energyDeliveredKwh": 0,
    "total": 0,
    "currency": "string",
    "maxPowerKw": 0,
    "currentPowerKw": 0,
    "currentSocPercent": 0
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Schedule a charging session for a future time

POST/emsp/v1/charging/schedule
Request body
chargerIdstring · uuidoptional
connectorNumberinteger · int32optional
idTagstringoptional
scheduledTimeobject · date-timeoptional
Response — 201
dataobjectoptional
idstring · uuidoptional
Stable scheduled-charge UUID. Use it in DELETE /charging/schedule/{id} to cancel.
example: "7c1f0a23-9b4d-4e5a-8c6f-1d2e3f4a5b6c"
chargerIdstring · uuidoptional
UUID of the charger the session will be started on at the scheduled time.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) the session will start on.
example: 1
scheduledTimeobject · date-timeoptional
UTC time at which the background trigger will fire the remote start.
example: "2026-06-20T06:00:00Z"
statusstringoptional
Lifecycle state: Pending (waiting to fire), Fired (start dispatched), Failed, or Cancelled.
example: "Pending"
statusReasonstringoptional
Why the schedule reached its current status (e.g. the charger's rejection reason on Failed). Null while Pending or on a clean fire.
example: "Charger did not respond"
firedAtobject · date-timeoptional
UTC time the start was actually dispatched, or null if it has not fired yet.
example: "2026-06-20T06:00:01Z"
createdAtobject · date-timeoptional
UTC time the schedule was created.
example: "2026-06-19T22:14:55Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T22:14:55Z"
POST /emsp/v1/charging/scheduleX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/charging/schedule' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "id": "7c1f0a23-9b4d-4e5a-8c6f-1d2e3f4a5b6c",
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "connectorNumber": 1,
    "scheduledTime": "2026-06-20T06:00:00Z",
    "status": "Pending",
    "statusReason": "Charger did not respond",
    "firedAt": "2026-06-20T06:00:01Z",
    "createdAt": "2026-06-19T22:14:55Z"
  },
  "success": true,
  "timestamp": "2026-06-19T22:14:55Z"
}
Try itruns against your network · response is live

List your scheduled charges

GET/emsp/v1/charging/schedules
Response — 200
dataarray of objectoptional
The driver's scheduled charges, most-recent scheduledTime first (capped at 100).
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T22:14:55Z"
GET /emsp/v1/charging/schedulesX-API-Key
curl 'https://api.proranked.com/emsp/v1/charging/schedules' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "7c1f0a23-9b4d-4e5a-8c6f-1d2e3f4a5b6c",
      "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
      "connectorNumber": 1,
      "scheduledTime": "2026-06-20T06:00:00Z",
      "status": "Pending",
      "statusReason": "Charger did not respond",
      "firedAt": "2026-06-20T06:00:01Z",
      "createdAt": "2026-06-19T22:14:55Z"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T22:14:55Z"
}
Try itruns against your network · response is live

Cancel a scheduled charge

DELETE/emsp/v1/charging/schedule/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
DELETE /emsp/v1/charging/schedule/{id}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/charging/schedule/{id}' \
  -H 'X-API-Key: pr_live_…'
Try itruns against your network · response is live

Get connector status

GET/emsp/v1/connectors/{id}/status

Returns the current status and details of a specific connector.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable connector UUID.
example: "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
connectorNumberinteger · int32optional
Connector number on the charger (1-based).
example: 1
connectorIdentifierstringoptional
Stable connector identifier string (e.g. the OCPI connector id).
example: "CP-IslaVerde-01-1"
statusstringoptional
Live connector status (AVAILABLE, CHARGING, PREPARING, FINISHING, FAULTED, …) or UNKNOWN if never reported.
example: "AVAILABLE"
standardstringoptional
Plug standard (e.g. IEC_62196_T2, CHADEMO, IEC_62196_T1_COMBO).
example: "IEC_62196_T2"
formatstringoptional
Connector format: CABLE (tethered) or SOCKET (untethered).
example: "SOCKET"
powerTypestringoptional
Power delivery type (AC_1_PHASE, AC_3_PHASE, DC).
example: "AC_3_PHASE"
maxVoltageinteger · int32optional
Maximum voltage the connector supports, in volts.
example: 400
maxAmperageinteger · int32optional
Maximum current the connector supports, in amperes.
example: 32
maxElectricPowerWattsinteger · int32optional
Maximum power this connector can deliver, in watts.
example: 22000
lastUpdatedobject · date-timeoptional
UTC timestamp the connector record was last updated.
example: "2026-06-19T18:42:07Z"
chargerIdstring · uuidoptional
UUID of the charger this connector belongs to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
chargerUidstringoptional
OCPP charge-point identity of the owning charger (chargePointId).
example: "CP-IslaVerde-01"
locationIdstring · uuidoptional
UUID of the location/site the charger is assigned to, or null.
example: "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
locationNamestringoptional
Display name of the assigned location, or null.
example: "Isla Verde Mall"
lastStatusUpdateobject · date-timeoptional
UTC timestamp of the last OCPP StatusNotification for this connector.
example: "2026-06-19T18:41:55Z"
hasRfidReaderbooleanoptional
True if the connector has an RFID reader.
example: true
hasDisplaybooleanoptional
True if the connector has a display.
example: false
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/connectors/{id}/statusX-API-Key
curl 'https://api.proranked.com/emsp/v1/connectors/{id}/status' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
    "connectorNumber": 1,
    "connectorIdentifier": "CP-IslaVerde-01-1",
    "status": "AVAILABLE",
    "standard": "IEC_62196_T2",
    "format": "SOCKET",
    "powerType": "AC_3_PHASE",
    "maxVoltage": 400,
    "maxAmperage": 32,
    "maxElectricPowerWatts": 22000,
    "lastUpdated": "2026-06-19T18:42:07Z",
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "chargerUid": "CP-IslaVerde-01",
    "locationId": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "locationName": "Isla Verde Mall",
    "lastStatusUpdate": "2026-06-19T18:41:55Z",
    "hasRfidReader": true,
    "hasDisplay": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

SSE event stream for real-time updates

GET/emsp/v1/events/stream
Query parameters
eventTypesstring · queryoptional
stationIdsstring · queryoptional
GET /emsp/v1/events/streamX-API-Key
curl 'https://api.proranked.com/emsp/v1/events/stream' \
  -H 'X-API-Key: pr_live_…'
Try itruns against your network · response is live

List the driver's favorites

GET/emsp/v1/favorites
Response — 200
dataarray of objectoptional
The driver's favorites, newest first.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/favoritesX-API-Key
curl 'https://api.proranked.com/emsp/v1/favorites' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
      "targetType": "location",
      "targetId": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
      "label": "Home charger",
      "createdAt": "2026-06-18T14:05:33Z"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Save a favorite

POST/emsp/v1/favorites
Request body
targetTypestringoptional
targetIdstring · uuidoptional
labelstringoptional
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable favorite UUID. Use it in DELETE /favorites/{id}.
example: "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a"
targetTypestringoptional
What was favorited: "location" or "charger".
example: "location"
targetIdstring · uuidoptional
Stable UUID of the favorited location or charger. May be null if the target could not be resolved.
example: "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d"
labelstringoptional
Friendly label — the caller-supplied label, falling back to the target's name. May be null.
example: "Home charger"
createdAtobject · date-timeoptional
UTC timestamp when the favorite was saved.
example: "2026-06-18T14:05:33Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/favoritesX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/favorites' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "5d4c3b2a-1f0e-4d9c-8b7a-6e5f4d3c2b1a",
    "targetType": "location",
    "targetId": "9f1c2b30-4d5e-6a7b-8c9d-0e1f2a3b4c5d",
    "label": "Home charger",
    "createdAt": "2026-06-18T14:05:33Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Remove a favorite

DELETE/emsp/v1/favorites/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
DELETE /emsp/v1/favorites/{id}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/favorites/{id}' \
  -H 'X-API-Key: pr_live_…'
Try itruns against your network · response is live

Generate invoice

POST/emsp/v1/invoices

Generates an invoice for one or more transactions.

Request body
transactionIdstring · uuidoptional
transactionIdsarray of string · uuidoptional
Response — 201
dataobjectoptional
idstring · uuidoptional
invoiceNumberstringoptional
issueDateobject · date-timeoptional
dueDateobject · date-timeoptional
userIdstring · uuidoptional
userNamestringoptional
userEmailstringoptional
lineItemsarray of objectoptional
subtotalnumber · doubleoptional
taxnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
statusstringoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/invoicesX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/invoices' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "invoiceNumber": "string",
    "issueDate": null,
    "dueDate": null,
    "userId": "00000000-0000-0000-0000-000000000000",
    "userName": "string",
    "userEmail": "string",
    "lineItems": [
      {
        "transactionId": "00000000-0000-0000-0000-000000000000",
        "sessionDate": null,
        "locationName": "string",
        "energyKwh": 0,
        "amount": 0
      }
    ],
    "subtotal": 0,
    "tax": 0,
    "total": 0,
    "currency": "string",
    "status": "string"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List locations

GET/emsp/v1/locations
Query parameters
citystring · queryoptional
qstring · queryoptional
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
Response — 200
dataarray of objectoptional
The locations (with charger counts and, for /search, distanceKm).
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/locationsX-API-Key
curl 'https://api.proranked.com/emsp/v1/locations' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
      "name": "Isla Verde Mall",
      "address": "8169 Calle Marginal",
      "city": "Carolina",
      "state": "PR",
      "country": "US",
      "latitude": 18.4319,
      "longitude": -66.0617,
      "hasParking": true,
      "hasRestrooms": true,
      "hasWifi": false,
      "phone": "+1-787-555-0142",
      "chargerCount": 4,
      "availableCount": 3,
      "maxPowerKw": 150,
      "connectorTypes": [
        "string"
      ],
      "distanceKm": 2.137
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get a location

GET/emsp/v1/locations/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable location UUID.
example: "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
namestringoptional
Display name of the location/site.
example: "Isla Verde Mall"
addressstringoptional
Street address of the location.
example: "8169 Calle Marginal"
citystringoptional
City the location is in.
example: "Carolina"
statestringoptional
State / region the location is in.
example: "PR"
countrystringoptional
ISO country code of the location.
example: "US"
latitudenumber · doubleoptional
Latitude in decimal degrees (WGS84).
example: 18.4319
longitudenumber · doubleoptional
Longitude in decimal degrees (WGS84).
example: -66.0617
hasParkingbooleanoptional
True if the site offers parking.
example: true
hasRestroomsbooleanoptional
True if the site offers restrooms.
example: true
hasWifibooleanoptional
True if the site offers WiFi.
example: false
phonestringoptional
Site contact phone number, or null.
example: "+1-787-555-0142"
openingHoursobjectoptional
imagesarray of objectoptional
Images attached to the location.
chargerCountinteger · int32optional
Total number of active chargers at this location.
example: 4
availableCountinteger · int32optional
Number of chargers that are AVAILABLE and online right now.
example: 3
ratingAverageobject · doubleoptional
Average driver star rating (1–5), rounded to one decimal, or null if there are no reviews.
example: 4.6
ratingCountinteger · int32optional
Number of driver reviews for this location.
example: 28
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/locations/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/locations/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "c1a2b3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "name": "Isla Verde Mall",
    "address": "8169 Calle Marginal",
    "city": "Carolina",
    "state": "PR",
    "country": "US",
    "latitude": 18.4319,
    "longitude": -66.0617,
    "hasParking": true,
    "hasRestrooms": true,
    "hasWifi": false,
    "phone": "+1-787-555-0142",
    "openingHours": null,
    "images": [
      {
        "url": "https://cdn.phevnix.com/locations/isla-verde/1.jpg",
        "thumbnailUrl": "https://cdn.phevnix.com/locations/isla-verde/1_thumb.jpg",
        "type": "location",
        "width": 1280,
        "height": 720
      }
    ],
    "chargerCount": 4,
    "availableCount": 3,
    "ratingAverage": 4.6,
    "ratingCount": 28
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List chargers at a location

GET/emsp/v1/locations/{id}/chargers
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataarray of objectoptional
The chargers at this location.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/locations/{id}/chargersX-API-Key
curl 'https://api.proranked.com/emsp/v1/locations/{id}/chargers' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
      "serialNumber": "SN-A1B2C3D4",
      "status": "AVAILABLE",
      "lastHeartbeat": "2026-06-19T18:42:07Z",
      "isOnline": true,
      "connectorCount": 2
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Driver reviews + rating summary for a location

GET/emsp/v1/locations/{id}/reviews
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
summaryobjectoptional
averageobject · doubleoptional
Average star rating (1–5), rounded to one decimal; 0 when there are no reviews.
example: 4.6
countinteger · int32optional
Number of reviews.
example: 28
reviewsarray of objectoptional
Up to 50 most-recent reviews.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/locations/{id}/reviewsX-API-Key
curl 'https://api.proranked.com/emsp/v1/locations/{id}/reviews' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "summary": {
      "average": 4.6,
      "count": 28
    },
    "reviews": [
      {
        "id": "7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f",
        "rating": 5,
        "comment": "Fast chargers, easy to find.",
        "authorName": "Maya",
        "isMine": false,
        "createdAt": "2026-05-02T14:10:00Z",
        "updatedAt": "2026-05-02T14:10:00Z"
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Create or update the driver's review for a location

POST/emsp/v1/locations/{id}/reviews
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Request body
ratinginteger · int32optional
commentstringoptional
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable review UUID.
example: "7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f"
ratinginteger · int32optional
Star rating, 1–5.
example: 5
commentstringoptional
Free-text review comment, or null.
example: "Fast chargers, easy to find."
createdAtobject · date-timeoptional
UTC time the review was created.
example: "2026-05-02T14:10:00Z"
updatedAtobject · date-timeoptional
UTC time the review was last updated.
example: "2026-06-19T18:42:09Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/locations/{id}/reviewsX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/locations/{id}/reviews' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "7e6d5c4b-3a2b-1c0d-9e8f-7a6b5c4d3e2f",
    "rating": 5,
    "comment": "Fast chargers, easy to find.",
    "createdAt": "2026-05-02T14:10:00Z",
    "updatedAt": "2026-06-19T18:42:09Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Report a problem at a location (raises an operator alert)

POST/emsp/v1/locations/{id}/report
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Request body
categorystringoptional
notestringoptional
chargerIdstring · uuidoptional
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable UUID of the operator alert raised from this report.
example: "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d"
statusstringoptional
Receipt status — always "received".
example: "received"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/locations/{id}/reportX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/locations/{id}/report' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
    "status": "received"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Public network branding (name, logo, colors) for white-label theming

GET/emsp/v1/networks/{networkId}/branding
Path & query parameters
networkIdstring · uuid · pathrequired
Response — 200
dataobjectoptional
networkIdstring · uuidoptional
UUID of the network the branding belongs to (echoes the path parameter).
example: "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b"
namestringoptional
Public display name of the network (operator).
example: "Phevnix PR"
logoUrlstringoptional
URL of the network's logo, or null if unset.
example: "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg"
faviconUrlstringoptional
URL of the network's favicon, or null if unset.
example: "https://cdn.phevnix.com/networks/phevnix-pr/favicon.ico"
logoBackgroundstringoptional
Recommended background tone for the logo — always either "light" or "dark".
example: "light"
primaryColorstringoptional
Primary brand color (hex, e.g. "#0EA5E9"), or null if unset.
example: "#0EA5E9"
secondaryColorstringoptional
Secondary brand color (hex), or null if unset.
example: "#0F172A"
termsUrlstringoptional
URL of the network's Terms of Service, or null if unset.
example: "https://phevnix.com/terms"
privacyUrlstringoptional
URL of the network's Privacy Policy, or null if unset.
example: "https://phevnix.com/privacy"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/networks/{networkId}/brandingX-API-Key
curl 'https://api.proranked.com/emsp/v1/networks/{networkId}/branding' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "networkId": "3f9a1c20-6b7d-4e8f-9a0b-1c2d3e4f5a6b",
    "name": "Phevnix PR",
    "logoUrl": "https://cdn.phevnix.com/networks/phevnix-pr/logo.svg",
    "faviconUrl": "https://cdn.phevnix.com/networks/phevnix-pr/favicon.ico",
    "logoBackground": "light",
    "primaryColor": "#0EA5E9",
    "secondaryColor": "#0F172A",
    "termsUrl": "https://phevnix.com/terms",
    "privacyUrl": "https://phevnix.com/privacy"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get the driver's notification preferences

GET/emsp/v1/notifications/preferences
Response — 200
dataobjectoptional
channelsobjectoptional
pushbooleanoptional
Whether web/app push notifications are enabled.
example: true
emailbooleanoptional
Whether email notifications are enabled.
example: true
smsbooleanoptional
Whether SMS notifications are enabled.
example: false
eventsobjectoptional
sessionStartedbooleanoptional
Notify when a charging session starts.
example: true
sessionStoppedbooleanoptional
Notify when a charging session stops.
example: true
sessionFailedbooleanoptional
Notify when a charging session fails to start or is interrupted.
example: true
reservationReminderbooleanoptional
Notify ahead of an upcoming reservation.
example: true
paymentbooleanoptional
Notify on payment events (charge captured, payment failed).
example: true
contactobjectoptional
emailstringoptional
Email address notifications are sent to, or null to use the driver's account email.
example: "driver@example.com"
phoneNumberstringoptional
Phone number SMS notifications are sent to (E.164), or null.
example: "+17875551234"
updatedAtobject · date-timeoptional
UTC time the preferences were last updated.
example: "2026-06-19T18:42:09Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/notifications/preferencesX-API-Key
curl 'https://api.proranked.com/emsp/v1/notifications/preferences' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "channels": {
      "push": true,
      "email": true,
      "sms": false
    },
    "events": {
      "sessionStarted": true,
      "sessionStopped": true,
      "sessionFailed": true,
      "reservationReminder": true,
      "payment": true
    },
    "contact": {
      "email": "driver@example.com",
      "phoneNumber": "+17875551234"
    },
    "updatedAt": "2026-06-19T18:42:09Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Update the driver's notification preferences

PUT/emsp/v1/notifications/preferences
Request body
pushEnabledbooleanoptional
emailEnabledbooleanoptional
smsEnabledbooleanoptional
notifySessionStartedbooleanoptional
notifySessionStoppedbooleanoptional
notifySessionFailedbooleanoptional
notifyReservationReminderbooleanoptional
notifyPaymentbooleanoptional
emailstringoptional
phoneNumberstringoptional
Response — 200
dataobjectoptional
channelsobjectoptional
pushbooleanoptional
Whether web/app push notifications are enabled.
example: true
emailbooleanoptional
Whether email notifications are enabled.
example: true
smsbooleanoptional
Whether SMS notifications are enabled.
example: false
eventsobjectoptional
sessionStartedbooleanoptional
Notify when a charging session starts.
example: true
sessionStoppedbooleanoptional
Notify when a charging session stops.
example: true
sessionFailedbooleanoptional
Notify when a charging session fails to start or is interrupted.
example: true
reservationReminderbooleanoptional
Notify ahead of an upcoming reservation.
example: true
paymentbooleanoptional
Notify on payment events (charge captured, payment failed).
example: true
contactobjectoptional
emailstringoptional
Email address notifications are sent to, or null to use the driver's account email.
example: "driver@example.com"
phoneNumberstringoptional
Phone number SMS notifications are sent to (E.164), or null.
example: "+17875551234"
updatedAtobject · date-timeoptional
UTC time the preferences were last updated.
example: "2026-06-19T18:42:09Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
PUT /emsp/v1/notifications/preferencesX-API-Key
curl -X PUT 'https://api.proranked.com/emsp/v1/notifications/preferences' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "channels": {
      "push": true,
      "email": true,
      "sms": false
    },
    "events": {
      "sessionStarted": true,
      "sessionStopped": true,
      "sessionFailed": true,
      "reservationReminder": true,
      "payment": true
    },
    "contact": {
      "email": "driver@example.com",
      "phoneNumber": "+17875551234"
    },
    "updatedAt": "2026-06-19T18:42:09Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Discover how this network handles payment

GET/emsp/v1/payments/config
Response — 200
dataobjectoptional
paymentModestringoptional
Always 'phevnix_managed' here — the operator opted into Phevnix billing rails.
example: "phevnix_managed"
phevnixBillingAvailablebooleanoptional
True only when the network's payment settings are configured and enabled.
example: true
providerstringoptional
Payment provider in use; 'stripe' unless a different provider is configured.
example: "stripe"
publishableKeystringoptional
The PUBLIC (publishable) Stripe key the app uses to initialize Stripe.js. Never a secret/webhook key.
example: "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx"
currencystringoptional
ISO-4217 currency code charges are settled in (falls back to the network's default currency).
example: "USD"
methodsarray of stringoptional
The payment method types enabled for this network (e.g. card, apple_pay).
preAuthorizationAmountnumber · doubleoptional
Amount, in the network currency, held as a pre-authorization at session start. Null if none.
example: 25
minimumAmountnumber · doubleoptional
Minimum chargeable amount for a session, in the network currency. Null if unset.
example: 1
maximumAmountnumber · doubleoptional
Maximum chargeable amount for a session, in the network currency. Null if unset.
example: 500
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/payments/configX-API-Key
curl 'https://api.proranked.com/emsp/v1/payments/config' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "paymentMode": "phevnix_managed",
    "phevnixBillingAvailable": true,
    "provider": "stripe",
    "publishableKey": "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx",
    "currency": "USD",
    "methods": [
      "string"
    ],
    "preAuthorizationAmount": 25,
    "minimumAmount": 1,
    "maximumAmount": 500
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List the driver's saved cards (phevnix_managed only)

GET/emsp/v1/payments/methods
Response — 200
dataobjectoptional
paymentModestringoptional
Always 'phevnix_managed' — saved cards only exist for managed networks.
example: "phevnix_managed"
methodsarray of objectoptional
The driver's saved cards.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/payments/methodsX-API-Key
curl 'https://api.proranked.com/emsp/v1/payments/methods' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "paymentMode": "phevnix_managed",
    "methods": [
      {
        "id": "pm_1AbCdEfGhIjKlMnOpQrStUvW",
        "brand": "visa",
        "last4": "4242",
        "expMonth": 12,
        "expYear": 2029,
        "isDefault": true
      }
    ]
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Begin saving a card — returns a SetupIntent client_secret for the app

POST/emsp/v1/payments/setup-intent
Response — 200
dataobjectoptional
clientSecretstringoptional
Stripe SetupIntent client_secret — pass to confirmCardSetup() / the Payment Element to save the card.
example: "seti_1AbCdEfGhIjKl_secret_MnOpQrStUvWxYz"
publishableKeystringoptional
The publishable Stripe key to initialize Stripe.js with for this SetupIntent.
example: "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/payments/setup-intentX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/payments/setup-intent' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "clientSecret": "seti_1AbCdEfGhIjKl_secret_MnOpQrStUvWxYz",
    "publishableKey": "pk_live_51AbCdEfGhIjKlMnOpQrStUvWx"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Begin saving a card via a Stripe-HOSTED page — returns a URL the driver opens in a browser

POST/emsp/v1/payments/setup-checkout
Response — 200
dataobjectoptional
urlstringoptional
Stripe-hosted card-setup page URL. Open it in a browser; Stripe redirects back to the return URL when done.
example: "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/payments/setup-checkoutX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/payments/setup-checkout' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "url": "https://checkout.stripe.com/c/pay/cs_test_a1B2c3D4e5F6"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Make a saved card the default

POST/emsp/v1/payments/methods/{id}/default
Path & query parameters
idstring · pathrequired
The resource identifier.
Response — 403
errorstringoptional
Stable machine-readable error slug (e.g. driver_required, payments_not_enabled, stripe_error).
example: "payments_not_enabled"
messagestringoptional
Human-readable explanation of the error.
example: "Payments are not enabled for this network."
codestringoptional
Stable machine-readable error code (defaults to the error slug when not set explicitly).
example: "payments_not_enabled"
timestampobject · date-timeoptional
UTC time the error was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/payments/methods/{id}/defaultX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/payments/methods/{id}/default' \
  -H 'X-API-Key: pr_live_…'
Response · 403
{
  "error": "payments_not_enabled",
  "message": "Payments are not enabled for this network.",
  "code": "payments_not_enabled",
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Remove a saved card

DELETE/emsp/v1/payments/methods/{id}
Path & query parameters
idstring · pathrequired
The resource identifier.
Response — 403
errorstringoptional
Stable machine-readable error slug (e.g. driver_required, payments_not_enabled, stripe_error).
example: "payments_not_enabled"
messagestringoptional
Human-readable explanation of the error.
example: "Payments are not enabled for this network."
codestringoptional
Stable machine-readable error code (defaults to the error slug when not set explicitly).
example: "payments_not_enabled"
timestampobject · date-timeoptional
UTC time the error was generated.
example: "2026-06-19T18:42:09Z"
DELETE /emsp/v1/payments/methods/{id}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/payments/methods/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 403
{
  "error": "payments_not_enabled",
  "message": "Payments are not enabled for this network.",
  "code": "payments_not_enabled",
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Report a session's payment status (managed networks capture automatically at stop)

POST/emsp/v1/payments/checkout
Request body
sessionIdstring · uuidoptional
amountnumber · doubleoptional
currencystringoptional
Response — 200
dataobjectoptional
paymentModestringoptional
Always 'phevnix_managed' here.
example: "phevnix_managed"
sessionIdstring · uuidoptional
The charging session UUID this status is for.
example: "7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f"
sessionStatusstringoptional
Current session status (active, completed, …).
example: "completed"
paymentStatusstringoptional
Payment lifecycle: null (no charge yet / free), authorized (pre-auth hold), captured, failed, refunded.
example: "captured"
isFreebooleanoptional
True if the session is free (no charge applies).
example: false
totalnumber · doubleoptional
The session's total amount in the network currency.
example: 8.45
currencystringoptional
ISO-4217 currency code for the total.
example: "USD"
capturedbooleanoptional
True when the final amount has already been captured (paymentStatus == 'captured').
example: true
notestringoptional
Guidance: capture happens automatically at session stop; no manual checkout is needed.
example: "Capture happens automatically when the session stops; no manual checkout is needed for managed networks. A pre-authorization hold is placed at session start and the final amount is captured on stop."
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/payments/checkoutX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/payments/checkout' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "paymentMode": "phevnix_managed",
    "sessionId": "7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f",
    "sessionStatus": "completed",
    "paymentStatus": "captured",
    "isFree": false,
    "total": 8.45,
    "currency": "USD",
    "captured": true,
    "note": "Capture happens automatically when the session stops; no manual checkout is needed for managed networks. A pre-authorization hold is placed at session start and the final amount is captured on stop."
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Calculate charging cost

POST/emsp/v1/pricing/calculate

Calculates the estimated cost for a charging session based on tariff rates.

Request body
tariffIdstring · uuidoptional
chargerIdstring · uuidoptional
connectorIdstring · uuidoptional
energyKwhnumber · doublerequired
durationMinutesnumber · doubleoptional
idleMinutesnumber · doubleoptional
Response — 200
dataobjectoptional
energyCostnumber · doubleoptional
timeCostnumber · doubleoptional
sessionFeenumber · doubleoptional
idleFeenumber · doubleoptional
subtotalnumber · doubleoptional
taxnumber · doubleoptional
totalnumber · doubleoptional
currencystringoptional
tariffNamestringoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/pricing/calculateX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/pricing/calculate' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "energyCost": 0,
    "timeCost": 0,
    "sessionFee": 0,
    "idleFee": 0,
    "subtotal": 0,
    "tax": 0,
    "total": 0,
    "currency": "string",
    "tariffName": "string"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Register this device's web-push subscription

POST/emsp/v1/push/subscribe
Request body
endpointstringoptional
keysobjectoptional
Response — 200
dataobjectoptional
statusstringoptional
Always 'subscribed' — the device's web-push subscription is now registered.
example: "subscribed"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/push/subscribeX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/push/subscribe' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "status": "subscribed"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Remove a web-push subscription

POST/emsp/v1/push/unsubscribe
Request body
endpointstringoptional
POST /emsp/v1/push/unsubscribeX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/push/unsubscribe' \
  -H 'X-API-Key: pr_live_…'
Try itruns against your network · response is live

Send a test push to the driver's devices

POST/emsp/v1/push/test
Response — 200
dataobjectoptional
sentinteger · int32optional
Number of devices the test push was successfully delivered to.
example: 2
subscriptionsinteger · int32optional
Total number of registered device subscriptions for the driver (some may have been pruned if gone).
example: 2
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/push/testX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/push/test' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "sent": 2,
    "subscriptions": 2
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Unlock a connector

POST/emsp/v1/remote-control/{chargerId}/unlock
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
Request body
connectorNumberinteger · int32optional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
The charger UUID the command was sent to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
connectorNumberinteger · int32optional
The connector number that was asked to unlock (defaults to 1).
example: 1
acceptedbooleanoptional
Whether the charger accepted the command. False means the charger rejected it or did not respond.
example: true
reasonstringoptional
Public-facing reason when not accepted, or null on success.
example: "The charger rejected the request."
retryablebooleanoptional
True when the failure was transient (e.g. charger unreachable) and the request can be retried.
example: false
successbooleanoptional
Always true on a 2xx response (the command was dispatched; see data.accepted for the charger's verdict).
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/remote-control/{chargerId}/unlockX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/remote-control/{chargerId}/unlock' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "connectorNumber": 1,
    "accepted": true,
    "reason": "The charger rejected the request.",
    "retryable": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Ask the charger to re-send a message

POST/emsp/v1/remote-control/{chargerId}/trigger
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
Request body
messagestringoptional
connectorNumberinteger · int32optional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
The charger UUID the command was sent to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
messagestringoptional
The OCPP message the charger was asked to re-send (BootNotification, StatusNotification, MeterValues, …).
example: "StatusNotification"
acceptedbooleanoptional
Whether the charger accepted the command.
example: true
reasonstringoptional
Public-facing reason when not accepted, or null on success.
example: "The charger rejected the request."
retryablebooleanoptional
True when the failure was transient and the request can be retried.
example: false
successbooleanoptional
Always true on a 2xx response (the command was dispatched; see data.accepted).
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/remote-control/{chargerId}/triggerX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/remote-control/{chargerId}/trigger' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "message": "StatusNotification",
    "accepted": true,
    "reason": "The charger rejected the request.",
    "retryable": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Reset a charger

POST/emsp/v1/remote-control/{chargerId}/reset
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
Request body
typestringoptional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
The charger UUID the command was sent to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
typestringoptional
The reset type actually issued: Soft (default) or Hard. Driver-authenticated callers are forced to Soft even if they request Hard.
example: "Soft"
acceptedbooleanoptional
Whether the charger accepted the command.
example: true
reasonstringoptional
Public-facing reason when not accepted, or null on success.
example: "The charger rejected the request."
retryablebooleanoptional
True when the failure was transient and the request can be retried.
example: false
successbooleanoptional
Always true on a 2xx response (the command was dispatched; see data.accepted).
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/remote-control/{chargerId}/resetX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/remote-control/{chargerId}/reset' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "type": "Soft",
    "accepted": true,
    "reason": "The charger rejected the request.",
    "retryable": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Export custom reports

GET/emsp/v1/reports/export

Exports reports in JSON or CSV format. Supported types: daily-sales, by-location, by-user, sessions-summary.

Query parameters
typestring · queryoptional
formatstring · queryoptional
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
locationIdstring · uuid · queryoptional
Filter by location UUID.
userIdstring · uuid · queryoptional
Response — 200
dataobjectoptional
reportTypestringoptional
The report type that was generated (daily-sales, by-location, by-user, sessions-summary).
example: "daily-sales"
generatedAtobject · date-timeoptional
UTC time the report was generated.
example: "2026-06-19T18:42:09Z"
fromDateobject · date-timeoptional
UTC start of the report window.
example: "2026-05-20T00:00:00Z"
toDateobject · date-timeoptional
UTC end of the report window.
example: "2026-06-19T00:00:00Z"
formatstringoptional
Export format requested (json or csv).
example: "json"
recordCountinteger · int32optional
Number of rows in the report.
example: 30
dataobjectoptional
The report rows — an array whose row shape depends on reportType (daily-sales, by-location, by-user, or sessions-summary).
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/reports/exportX-API-Key
curl 'https://api.proranked.com/emsp/v1/reports/export' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "reportType": "daily-sales",
    "generatedAt": "2026-06-19T18:42:09Z",
    "fromDate": "2026-05-20T00:00:00Z",
    "toDate": "2026-06-19T00:00:00Z",
    "format": "json",
    "recordCount": 30,
    "data": null
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List reservations

GET/emsp/v1/reservations
Query parameters
statusstring · queryoptional
Filter the results by status.
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
Response — 200
dataarray of objectoptional
The matching reservations, most-recent created first (capped at the page size).
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:45:01Z"
GET /emsp/v1/reservationsX-API-Key
curl 'https://api.proranked.com/emsp/v1/reservations' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70",
      "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
      "chargerName": "CP-IslaVerde-01",
      "connectorNumber": 1,
      "status": "Accepted",
      "statusReason": "Rejected by charger",
      "idTag": "DRV-7F3A91C2",
      "expiryDate": "2026-06-19T19:00:00Z",
      "createdAt": "2026-06-19T18:45:00Z",
      "cancelledAt": "2026-06-19T18:52:00Z"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:45:01Z"
}
Try itruns against your network · response is live

Reserve a connector

POST/emsp/v1/reservations

Holds a connector for the authenticated driver until the expiry time (OCPP ReserveNow).

Request body
chargerIdstring · uuidoptional
connectorNumberinteger · int32optional
idTagstringoptional
expiryMinutesinteger · int32optional
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable reservation UUID. Use it in GET/DELETE /reservations/{id}.
example: "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70"
chargerIdstring · uuidoptional
UUID of the charger holding the reservation.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
chargerNamestringoptional
Display name of the charger (serial number, falling back to the OCPP UID). Null if the charger could not be resolved.
example: "CP-IslaVerde-01"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) that is reserved.
example: 1
statusstringoptional
Reservation lifecycle state: Pending, Accepted (held by the charger), Rejected, Cancelled, or Expired.
example: "Accepted"
statusReasonstringoptional
Why the reservation reached its current status (e.g. the charger's rejection reason). Null on a clean Accepted.
example: "Rejected by charger"
idTagstringoptional
Authorization id-tag the reservation is bound to — only this token may start the held session.
example: "DRV-7F3A91C2"
expiryDateobject · date-timeoptional
UTC time the hold expires; the connector is released automatically afterwards.
example: "2026-06-19T19:00:00Z"
createdAtobject · date-timeoptional
UTC time the reservation was created.
example: "2026-06-19T18:45:00Z"
cancelledAtobject · date-timeoptional
UTC time the reservation was cancelled, or null if it was never cancelled.
example: "2026-06-19T18:52:00Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:45:01Z"
POST /emsp/v1/reservationsX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/reservations' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70",
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "chargerName": "CP-IslaVerde-01",
    "connectorNumber": 1,
    "status": "Accepted",
    "statusReason": "Rejected by charger",
    "idTag": "DRV-7F3A91C2",
    "expiryDate": "2026-06-19T19:00:00Z",
    "createdAt": "2026-06-19T18:45:00Z",
    "cancelledAt": "2026-06-19T18:52:00Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:45:01Z"
}
Try itruns against your network · response is live

Get a reservation

GET/emsp/v1/reservations/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable reservation UUID. Use it in GET/DELETE /reservations/{id}.
example: "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70"
chargerIdstring · uuidoptional
UUID of the charger holding the reservation.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
chargerNamestringoptional
Display name of the charger (serial number, falling back to the OCPP UID). Null if the charger could not be resolved.
example: "CP-IslaVerde-01"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) that is reserved.
example: 1
statusstringoptional
Reservation lifecycle state: Pending, Accepted (held by the charger), Rejected, Cancelled, or Expired.
example: "Accepted"
statusReasonstringoptional
Why the reservation reached its current status (e.g. the charger's rejection reason). Null on a clean Accepted.
example: "Rejected by charger"
idTagstringoptional
Authorization id-tag the reservation is bound to — only this token may start the held session.
example: "DRV-7F3A91C2"
expiryDateobject · date-timeoptional
UTC time the hold expires; the connector is released automatically afterwards.
example: "2026-06-19T19:00:00Z"
createdAtobject · date-timeoptional
UTC time the reservation was created.
example: "2026-06-19T18:45:00Z"
cancelledAtobject · date-timeoptional
UTC time the reservation was cancelled, or null if it was never cancelled.
example: "2026-06-19T18:52:00Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:45:01Z"
GET /emsp/v1/reservations/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/reservations/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70",
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "chargerName": "CP-IslaVerde-01",
    "connectorNumber": 1,
    "status": "Accepted",
    "statusReason": "Rejected by charger",
    "idTag": "DRV-7F3A91C2",
    "expiryDate": "2026-06-19T19:00:00Z",
    "createdAt": "2026-06-19T18:45:00Z",
    "cancelledAt": "2026-06-19T18:52:00Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:45:01Z"
}
Try itruns against your network · response is live

Cancel a reservation

DELETE/emsp/v1/reservations/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable reservation UUID. Use it in GET/DELETE /reservations/{id}.
example: "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70"
chargerIdstring · uuidoptional
UUID of the charger holding the reservation.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
chargerNamestringoptional
Display name of the charger (serial number, falling back to the OCPP UID). Null if the charger could not be resolved.
example: "CP-IslaVerde-01"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) that is reserved.
example: 1
statusstringoptional
Reservation lifecycle state: Pending, Accepted (held by the charger), Rejected, Cancelled, or Expired.
example: "Accepted"
statusReasonstringoptional
Why the reservation reached its current status (e.g. the charger's rejection reason). Null on a clean Accepted.
example: "Rejected by charger"
idTagstringoptional
Authorization id-tag the reservation is bound to — only this token may start the held session.
example: "DRV-7F3A91C2"
expiryDateobject · date-timeoptional
UTC time the hold expires; the connector is released automatically afterwards.
example: "2026-06-19T19:00:00Z"
createdAtobject · date-timeoptional
UTC time the reservation was created.
example: "2026-06-19T18:45:00Z"
cancelledAtobject · date-timeoptional
UTC time the reservation was cancelled, or null if it was never cancelled.
example: "2026-06-19T18:52:00Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:45:01Z"
DELETE /emsp/v1/reservations/{id}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/reservations/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "a3f9c812-6e7b-4d1a-9f0c-2b3e4d5f6a70",
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "chargerName": "CP-IslaVerde-01",
    "connectorNumber": 1,
    "status": "Accepted",
    "statusReason": "Rejected by charger",
    "idTag": "DRV-7F3A91C2",
    "expiryDate": "2026-06-19T19:00:00Z",
    "createdAt": "2026-06-19T18:45:00Z",
    "cancelledAt": "2026-06-19T18:52:00Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:45:01Z"
}
Try itruns against your network · response is live

Get the effective charging limit for a connector

GET/emsp/v1/smart-charging/{chargerId}/limit
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
connectorinteger · int32 · queryoptional
unitstring · queryoptional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
UUID of the charger the schedule was queried from.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) the schedule applies to.
example: 1
unitstringoptional
Charging-rate unit of the schedule: A (amps) or W (watts).
example: "A"
acceptedbooleanoptional
True if the charger answered the GetCompositeSchedule request successfully.
example: true
scheduleobjectoptional
The raw OCPP composite schedule the charger returned (chargingSchedulePeriod entries), or null when the charger reported none. Shape is pass-through from OCPP 1.6.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/smart-charging/{chargerId}/limitX-API-Key
curl 'https://api.proranked.com/emsp/v1/smart-charging/{chargerId}/limit' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "connectorNumber": 1,
    "unit": "A",
    "accepted": true,
    "schedule": null
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Set a max charging speed for a connector

PUT/emsp/v1/smart-charging/{chargerId}/limit
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
Request body
connectorNumberinteger · int32optional
unitstringoptional
limitnumber · doubleoptional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
UUID of the charger the limit was applied to.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) the limit applies to.
example: 1
unitstringoptional
Charging-rate unit of the requested limit: A (amps) or W (watts).
example: "A"
limitnumber · doubleoptional
The requested maximum charging rate in the given unit. A driver cap only ever reduces the rate — the network's load-balancing ceiling still applies.
example: 16
profileIdinteger · int32optional
The OCPP charging-profile id used for this driver cap (reserved 90000+connector range so it is individually clearable).
example: 90001
acceptedbooleanoptional
True if the charger accepted the SetChargingProfile command.
example: true
reasonstringoptional
Why the charger rejected the request, or null when accepted.
example: "The charger rejected the request."
retryablebooleanoptional
True when a failed command is worth retrying shortly (charger unreachable now but may reconnect); false for a definitive rejection.
example: false
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
PUT /emsp/v1/smart-charging/{chargerId}/limitX-API-Key
curl -X PUT 'https://api.proranked.com/emsp/v1/smart-charging/{chargerId}/limit' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "connectorNumber": 1,
    "unit": "A",
    "limit": 16,
    "profileId": 90001,
    "accepted": true,
    "reason": "The charger rejected the request.",
    "retryable": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Clear the driver-set charging limit on a connector

DELETE/emsp/v1/smart-charging/{chargerId}/limit
Path & query parameters
chargerIdstring · uuid · pathrequired
Filter by charger UUID.
connectorinteger · int32 · queryoptional
Response — 200
dataobjectoptional
chargerIdstring · uuidoptional
UUID of the charger the limit was cleared on.
example: "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b"
connectorNumberinteger · int32optional
Connector number on the charger (1-based) the cleared limit applied to.
example: 1
profileIdinteger · int32optional
The OCPP charging-profile id that was targeted for removal (reserved 90000+connector range).
example: 90001
acceptedbooleanoptional
True if the charger accepted the ClearChargingProfile command.
example: true
reasonstringoptional
Why the charger rejected the request, or null when accepted.
example: "The charger rejected the request."
retryablebooleanoptional
True when a failed command is worth retrying shortly; false for a definitive rejection.
example: false
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
DELETE /emsp/v1/smart-charging/{chargerId}/limitX-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/smart-charging/{chargerId}/limit' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "chargerId": "4b2e9c10-7d8a-4a6e-9b1f-2c3d4e5f6a7b",
    "connectorNumber": 1,
    "profileId": 90001,
    "accepted": true,
    "reason": "The charger rejected the request.",
    "retryable": false
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List available tariffs

GET/emsp/v1/tariffs
Query parameters
activeOnlyboolean · queryoptional
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
Response — 200
dataarray of objectoptional
The available tariffs.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/tariffsX-API-Key
curl 'https://api.proranked.com/emsp/v1/tariffs' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "d4c3b2a1-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
      "name": "Standard AC",
      "description": "Default rate for AC chargers.",
      "type": "REGULAR",
      "currency": "USD",
      "isFree": false,
      "energyRate": 0.35,
      "timeRate": 0,
      "idleRate": 0.4,
      "sessionFee": 0.5,
      "minimumSessionFee": 1,
      "maximumSessionFee": 50,
      "taxRate": 11.5,
      "effectiveFrom": "2026-01-01T00:00:00Z",
      "effectiveTo": "2026-12-31T23:59:59Z"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get a tariff

GET/emsp/v1/tariffs/{id}
Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable tariff UUID. Use it in GET /tariffs/{id}.
example: "d4c3b2a1-6f5e-4d3c-2b1a-0f9e8d7c6b5a"
namestringoptional
Display name of the tariff.
example: "Standard AC"
descriptionstringoptional
Free-text description of the tariff.
example: "Default rate for AC chargers."
typestringoptional
Tariff type/category (e.g. REGULAR, AD_HOC_PAYMENT, PROFILE_GREEN).
example: "REGULAR"
currencystringoptional
ISO 4217 currency code the rates are expressed in.
example: "USD"
isFreebooleanoptional
True if charging under this tariff is free (all rates ignored).
example: false
energyRatenumber · doubleoptional
Per-kWh energy rate, in the tariff currency.
example: 0.35
timeRatenumber · doubleoptional
Per-minute charging-time rate, in the tariff currency.
example: 0
idleRatenumber · doubleoptional
Per-minute idle fee charged after the grace period, in the tariff currency.
example: 0.4
sessionFeenumber · doubleoptional
Flat per-session fee, in the tariff currency.
example: 0.5
minimumSessionFeenumber · doubleoptional
Minimum total charged for any session under this tariff.
example: 1
maximumSessionFeenumber · doubleoptional
Maximum (capped) total charged for any session under this tariff.
example: 50
taxRatenumber · doubleoptional
Tax rate applied to the session total, as a percentage.
example: 11.5
effectiveFromobject · date-timeoptional
UTC timestamp the tariff becomes effective.
example: "2026-01-01T00:00:00Z"
effectiveToobject · date-timeoptional
UTC timestamp the tariff stops being effective, or null if open-ended.
example: "2026-12-31T23:59:59Z"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/tariffs/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/tariffs/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "d4c3b2a1-6f5e-4d3c-2b1a-0f9e8d7c6b5a",
    "name": "Standard AC",
    "description": "Default rate for AC chargers.",
    "type": "REGULAR",
    "currency": "USD",
    "isFree": false,
    "energyRate": 0.35,
    "timeRate": 0,
    "idleRate": 0.4,
    "sessionFee": 0.5,
    "minimumSessionFee": 1,
    "maximumSessionFee": 50,
    "taxRate": 11.5,
    "effectiveFrom": "2026-01-01T00:00:00Z",
    "effectiveTo": "2026-12-31T23:59:59Z"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List transactions

GET/emsp/v1/transactions

Returns a paginated list of transactions (CDRs) for the network.

Query parameters
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
fromobject · date-time · queryoptional
Start of the time range (inclusive), ISO-8601.
toobject · date-time · queryoptional
End of the time range (inclusive), ISO-8601.
userIdstring · uuid · queryoptional
statusstring · queryoptional
Filter the results by status.
Response — 200
dataarray of objectoptional
The page of transactions (charge detail records), most-recent end time first.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
paginationobjectoptional
totalCountinteger · int32optional
Total number of transactions (CDRs) matching the filter, across all pages.
example: 412
pageinteger · int32optional
1-based page index of this result set.
example: 1
pageSizeinteger · int32optional
Items per page (1–100; defaults to 20).
example: 20
totalPagesinteger · int32optional
Total number of pages at the current pageSize.
example: 21
hasNextPagebooleanoptional
True when a page after this one exists.
example: true
hasPreviousPagebooleanoptional
True when a page before this one exists.
example: false
GET /emsp/v1/transactionsX-API-Key
curl 'https://api.proranked.com/emsp/v1/transactions' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "ocpiId": "string",
      "sessionId": "00000000-0000-0000-0000-000000000000",
      "userId": "00000000-0000-0000-0000-000000000000",
      "startTime": null,
      "endTime": null,
      "totalEnergyKwh": 0,
      "amount": 0,
      "currency": "string",
      "paymentStatus": "string",
      "locationName": "string"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z",
  "pagination": {
    "totalCount": 412,
    "page": 1,
    "pageSize": 20,
    "totalPages": 21,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}
Try itruns against your network · response is live

Get transaction details

GET/emsp/v1/transactions/{id}

Returns detailed information about a specific transaction including cost breakdown.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
ocpiIdstringoptional
sessionIdstring · uuidoptional
userIdstring · uuidoptional
startTimeobject · date-timeoptional
endTimeobject · date-timeoptional
totalEnergyKwhnumber · doubleoptional
totalTimeMinutesnumber · doubleoptional
currencystringoptional
paymentStatusstringoptional
locationIdstring · uuidoptional
locationNamestringoptional
locationAddressstringoptional
chargerUidstringoptional
connectorNumberinteger · int32optional
costBreakdownobjectoptional
energyCostnumber · doubleoptional
timeCostnumber · doubleoptional
sessionFeenumber · doubleoptional
idleFeenumber · doubleoptional
subtotalnumber · doubleoptional
taxnumber · doubleoptional
totalnumber · doubleoptional
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/transactions/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/transactions/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "ocpiId": "string",
    "sessionId": "00000000-0000-0000-0000-000000000000",
    "userId": "00000000-0000-0000-0000-000000000000",
    "startTime": null,
    "endTime": null,
    "totalEnergyKwh": 0,
    "totalTimeMinutes": 0,
    "currency": "string",
    "paymentStatus": "string",
    "locationId": "00000000-0000-0000-0000-000000000000",
    "locationName": "string",
    "locationAddress": "string",
    "chargerUid": "string",
    "connectorNumber": 0,
    "costBreakdown": {
      "energyCost": 0,
      "timeCost": 0,
      "sessionFee": 0,
      "idleFee": 0,
      "subtotal": 0,
      "tax": 0,
      "total": 0
    }
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List users

GET/emsp/v1/users

Returns a paginated list of users in the network.

Query parameters
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
searchstring · queryoptional
Response — 200
dataarray of objectoptional
The page of users.
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
paginationobjectoptional
totalCountinteger · int32optional
Total number of users across all pages.
example: 137
pageinteger · int32optional
1-based page index of this result set.
example: 1
pageSizeinteger · int32optional
Items per page (1–100; defaults to 20).
example: 20
totalPagesinteger · int32optional
Total number of pages at the current pageSize.
example: 7
hasNextPagebooleanoptional
True when a page after this one exists.
example: true
hasPreviousPagebooleanoptional
True when a page before this one exists.
example: false
GET /emsp/v1/usersX-API-Key
curl 'https://api.proranked.com/emsp/v1/users' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
      "email": "maya@example.com",
      "firstName": "Maya",
      "lastName": "Rivera",
      "phoneNumber": "+17875551234",
      "address": "123 Calle Sol",
      "city": "San Juan",
      "state": "PR",
      "postalCode": "00901",
      "country": "US",
      "createdAt": "2026-01-15T09:30:00Z",
      "lastUpdated": "2026-06-18T14:05:33Z",
      "totalSessions": 27,
      "totalEnergyKwh": 412.5,
      "totalSpent": 186.4,
      "currency": "USD"
    }
  ],
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z",
  "pagination": {
    "totalCount": 137,
    "page": 1,
    "pageSize": 20,
    "totalPages": 7,
    "hasNextPage": true,
    "hasPreviousPage": false
  }
}
Try itruns against your network · response is live

Create a new user

POST/emsp/v1/users

Creates a new user/driver in the network. Returns the created user with statistics.

Request body
emailstringrequired
firstNamestringrequired
lastNamestringrequired
phoneNumberstringoptional
addressstringoptional
citystringoptional
statestringoptional
postalCodestringoptional
countrystringoptional
Response — 201
dataobjectoptional
idstring · uuidoptional
Stable user (driver) UUID. Use it in GET/PUT /users/{id}.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
emailstringoptional
User's email address (unique within a network).
example: "maya@example.com"
firstNamestringoptional
User's first name.
example: "Maya"
lastNamestringoptional
User's last name.
example: "Rivera"
phoneNumberstringoptional
User's phone number, or null.
example: "+17875551234"
addressstringoptional
Street address, or null.
example: "123 Calle Sol"
citystringoptional
City, or null.
example: "San Juan"
statestringoptional
State/region, or null.
example: "PR"
postalCodestringoptional
Postal code, or null.
example: "00901"
countrystringoptional
Country, or null.
example: "US"
createdAtobject · date-timeoptional
UTC timestamp when the user was created.
example: "2026-01-15T09:30:00Z"
lastUpdatedobject · date-timeoptional
UTC timestamp the user was last updated, or null if never updated since creation.
example: "2026-06-18T14:05:33Z"
totalSessionsinteger · int32optional
Number of charging sessions the user has across the key's accessible networks.
example: 27
totalEnergyKwhnumber · doubleoptional
Total energy delivered to the user across all sessions, in kWh.
example: 412.5
totalSpentnumber · doubleoptional
Total amount the user has spent across all sessions, in the network currency.
example: 186.4
currencystringoptional
ISO-4217 currency code for totalSpent (from the primary network; defaults to USD).
example: "USD"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/usersX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/users' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "email": "maya@example.com",
    "firstName": "Maya",
    "lastName": "Rivera",
    "phoneNumber": "+17875551234",
    "address": "123 Calle Sol",
    "city": "San Juan",
    "state": "PR",
    "postalCode": "00901",
    "country": "US",
    "createdAt": "2026-01-15T09:30:00Z",
    "lastUpdated": "2026-06-18T14:05:33Z",
    "totalSessions": 27,
    "totalEnergyKwh": 412.5,
    "totalSpent": 186.4,
    "currency": "USD"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Get user details

GET/emsp/v1/users/{id}

Returns detailed information about a user including charging statistics.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable user (driver) UUID. Use it in GET/PUT /users/{id}.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
emailstringoptional
User's email address (unique within a network).
example: "maya@example.com"
firstNamestringoptional
User's first name.
example: "Maya"
lastNamestringoptional
User's last name.
example: "Rivera"
phoneNumberstringoptional
User's phone number, or null.
example: "+17875551234"
addressstringoptional
Street address, or null.
example: "123 Calle Sol"
citystringoptional
City, or null.
example: "San Juan"
statestringoptional
State/region, or null.
example: "PR"
postalCodestringoptional
Postal code, or null.
example: "00901"
countrystringoptional
Country, or null.
example: "US"
createdAtobject · date-timeoptional
UTC timestamp when the user was created.
example: "2026-01-15T09:30:00Z"
lastUpdatedobject · date-timeoptional
UTC timestamp the user was last updated, or null if never updated since creation.
example: "2026-06-18T14:05:33Z"
totalSessionsinteger · int32optional
Number of charging sessions the user has across the key's accessible networks.
example: 27
totalEnergyKwhnumber · doubleoptional
Total energy delivered to the user across all sessions, in kWh.
example: 412.5
totalSpentnumber · doubleoptional
Total amount the user has spent across all sessions, in the network currency.
example: 186.4
currencystringoptional
ISO-4217 currency code for totalSpent (from the primary network; defaults to USD).
example: "USD"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
GET /emsp/v1/users/{id}X-API-Key
curl 'https://api.proranked.com/emsp/v1/users/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "email": "maya@example.com",
    "firstName": "Maya",
    "lastName": "Rivera",
    "phoneNumber": "+17875551234",
    "address": "123 Calle Sol",
    "city": "San Juan",
    "state": "PR",
    "postalCode": "00901",
    "country": "US",
    "createdAt": "2026-01-15T09:30:00Z",
    "lastUpdated": "2026-06-18T14:05:33Z",
    "totalSessions": 27,
    "totalEnergyKwh": 412.5,
    "totalSpent": 186.4,
    "currency": "USD"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

Update user information

PUT/emsp/v1/users/{id}

Updates an existing user's information. Only provided fields are updated.

Path & query parameters
idstring · uuid · pathrequired
The resource identifier.
Request body
emailstringoptional
firstNamestringoptional
lastNamestringoptional
phoneNumberstringoptional
addressstringoptional
citystringoptional
statestringoptional
postalCodestringoptional
countrystringoptional
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable user (driver) UUID. Use it in GET/PUT /users/{id}.
example: "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f"
emailstringoptional
User's email address (unique within a network).
example: "maya@example.com"
firstNamestringoptional
User's first name.
example: "Maya"
lastNamestringoptional
User's last name.
example: "Rivera"
phoneNumberstringoptional
User's phone number, or null.
example: "+17875551234"
addressstringoptional
Street address, or null.
example: "123 Calle Sol"
citystringoptional
City, or null.
example: "San Juan"
statestringoptional
State/region, or null.
example: "PR"
postalCodestringoptional
Postal code, or null.
example: "00901"
countrystringoptional
Country, or null.
example: "US"
createdAtobject · date-timeoptional
UTC timestamp when the user was created.
example: "2026-01-15T09:30:00Z"
lastUpdatedobject · date-timeoptional
UTC timestamp the user was last updated, or null if never updated since creation.
example: "2026-06-18T14:05:33Z"
totalSessionsinteger · int32optional
Number of charging sessions the user has across the key's accessible networks.
example: 27
totalEnergyKwhnumber · doubleoptional
Total energy delivered to the user across all sessions, in kWh.
example: 412.5
totalSpentnumber · doubleoptional
Total amount the user has spent across all sessions, in the network currency.
example: 186.4
currencystringoptional
ISO-4217 currency code for totalSpent (from the primary network; defaults to USD).
example: "USD"
successbooleanoptional
Always true on a 2xx response.
example: true
timestampobject · date-timeoptional
UTC time the response was generated.
example: "2026-06-19T18:42:09Z"
PUT /emsp/v1/users/{id}X-API-Key
curl -X PUT 'https://api.proranked.com/emsp/v1/users/{id}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "1ae38f39-2c4b-4d5e-9f10-3a4b5c6d7e8f",
    "email": "maya@example.com",
    "firstName": "Maya",
    "lastName": "Rivera",
    "phoneNumber": "+17875551234",
    "address": "123 Calle Sol",
    "city": "San Juan",
    "state": "PR",
    "postalCode": "00901",
    "country": "US",
    "createdAt": "2026-01-15T09:30:00Z",
    "lastUpdated": "2026-06-18T14:05:33Z",
    "totalSessions": 27,
    "totalEnergyKwh": 412.5,
    "totalSpent": 186.4,
    "currency": "USD"
  },
  "success": true,
  "timestamp": "2026-06-19T18:42:09Z"
}
Try itruns against your network · response is live

List webhook subscriptions

GET/emsp/v1/webhooks
Response — 200
dataarray of objectoptional
The operator's webhook subscriptions.
GET /emsp/v1/webhooksX-API-Key
curl 'https://api.proranked.com/emsp/v1/webhooks' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
      "url": "https://example.com/hooks/phevnix",
      "events": "session.started,session.completed",
      "description": "Billing pipeline hook",
      "is_active": true,
      "consecutive_failures": 0,
      "disabled_at": "2026-06-19T18:42:09Z",
      "disabled_reason": "Too many consecutive delivery failures",
      "created_at": "2026-06-19T18:42:09Z",
      "updated_at": "2026-06-19T18:42:09Z"
    }
  ]
}
Try itruns against your network · response is live

Create webhook subscription

POST/emsp/v1/webhooks
Request body
urlstringrequired
eventsstringrequired
descriptionstringrequired
Response — 201
dataobjectoptional
idstring · uuidoptional
Stable webhook subscription UUID.
example: "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
urlstringoptional
HTTPS endpoint events are delivered to.
example: "https://example.com/hooks/phevnix"
eventsstringoptional
Comma-separated subscribed event types, or '*'.
example: "session.started,session.completed"
descriptionstringoptional
Operator-supplied description.
example: "Billing pipeline hook"
hmac_secretstringoptional
The HMAC signing secret for verifying delivery signatures. Shown ONLY at creation — store it securely; it cannot be retrieved later.
example: "whsec_REDACTED_store_this_value_now"
is_activebooleanoptional
Whether the subscription is active (true on creation).
example: true
created_atobject · date-timeoptional
UTC time the subscription was created.
example: "2026-06-19T18:42:09Z"
POST /emsp/v1/webhooksX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/webhooks' \
  -H 'X-API-Key: pr_live_…'
Response · 201
{
  "data": {
    "id": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
    "url": "https://example.com/hooks/phevnix",
    "events": "session.started,session.completed",
    "description": "Billing pipeline hook",
    "hmac_secret": "whsec_REDACTED_store_this_value_now",
    "is_active": true,
    "created_at": "2026-06-19T18:42:09Z"
  }
}
Try itruns against your network · response is live

Update webhook subscription

PATCH/emsp/v1/webhooks/{webhookId}
Path & query parameters
webhookIdstring · uuid · pathrequired
Request body
urlstringrequired
eventsarray of stringrequired
descriptionstringrequired
isActivebooleanrequired
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable webhook subscription UUID. Use it in the /webhooks/{webhookId} routes.
example: "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
urlstringoptional
HTTPS endpoint events are delivered to (POST).
example: "https://example.com/hooks/phevnix"
eventsstringoptional
Comma-separated list of subscribed event types, or '*' for all events.
example: "session.started,session.completed"
descriptionstringoptional
Operator-supplied description of the subscription.
example: "Billing pipeline hook"
is_activebooleanoptional
Whether the subscription is currently active and receiving deliveries.
example: true
consecutive_failuresinteger · int32optional
Number of consecutive failed deliveries; the subscription auto-disables past a threshold.
example: 0
disabled_atobject · date-timeoptional
UTC time the subscription was auto-disabled after repeated failures, or null if active.
example: "2026-06-19T18:42:09Z"
disabled_reasonstringoptional
Why the subscription was disabled, or null if active.
example: "Too many consecutive delivery failures"
created_atobject · date-timeoptional
UTC time the subscription was created.
example: "2026-06-19T18:42:09Z"
updated_atobject · date-timeoptional
UTC time the subscription was last updated.
example: "2026-06-19T18:42:09Z"
PATCH /emsp/v1/webhooks/{webhookId}X-API-Key
curl -X PATCH 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
    "url": "https://example.com/hooks/phevnix",
    "events": "session.started,session.completed",
    "description": "Billing pipeline hook",
    "is_active": true,
    "consecutive_failures": 0,
    "disabled_at": "2026-06-19T18:42:09Z",
    "disabled_reason": "Too many consecutive delivery failures",
    "created_at": "2026-06-19T18:42:09Z",
    "updated_at": "2026-06-19T18:42:09Z"
  }
}
Try itruns against your network · response is live

Delete webhook subscription

DELETE/emsp/v1/webhooks/{webhookId}
Path & query parameters
webhookIdstring · uuid · pathrequired
Response — 403
errorstringoptional
Stable machine-readable error slug (forbidden, unauthorized, invalid_url, invalid_events, not_found).
example: "not_found"
messagestringoptional
Human-readable explanation of the error.
example: "Webhook subscription not found"
DELETE /emsp/v1/webhooks/{webhookId}X-API-Key
curl -X DELETE 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}' \
  -H 'X-API-Key: pr_live_…'
Response · 403
{
  "error": "not_found",
  "message": "Webhook subscription not found"
}
Try itruns against your network · response is live

Send test event to webhook

POST/emsp/v1/webhooks/{webhookId}/test
Path & query parameters
webhookIdstring · uuid · pathrequired
Response — 200
dataobjectoptional
webhook_idstring · uuidoptional
The subscription UUID the test event was enqueued for.
example: "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
test_enqueuedbooleanoptional
Always true — the test delivery was queued for the worker.
example: true
POST /emsp/v1/webhooks/{webhookId}/testX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}/test' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "webhook_id": "3a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d",
    "test_enqueued": true
  }
}
Try itruns against your network · response is live

List webhook deliveries

GET/emsp/v1/webhooks/{webhookId}/deliveries
Path & query parameters
webhookIdstring · uuid · pathrequired
pageinteger · int32 · queryoptional
Page number (1-based). Defaults to 1.
pageSizeinteger · int32 · queryoptional
Number of items per page (1–100). Defaults to 50.
Response — 200
dataarray of objectoptional
The page of webhook deliveries, newest first.
paginationobjectoptional
pageinteger · int32optional
1-based page index of this result set.
example: 1
page_sizeinteger · int32optional
Items requested per page (1–100; defaults to 20).
example: 20
total_countinteger · int32optional
Total number of deliveries across all pages.
example: 57
total_pagesinteger · int32optional
Total number of pages at the current page_size.
example: 3
GET /emsp/v1/webhooks/{webhookId}/deliveriesX-API-Key
curl 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}/deliveries' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    {
      "id": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f",
      "event_type": "session.completed",
      "http_status": 200,
      "success": true,
      "status": "Delivered",
      "attempts": 1,
      "created_at": "2026-06-19T18:42:09Z",
      "completed_at": "2026-06-19T18:42:11Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 20,
    "total_count": 57,
    "total_pages": 3
  }
}
Try itruns against your network · response is live

Get webhook delivery detail

GET/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}
Path & query parameters
webhookIdstring · uuid · pathrequired
deliveryIdstring · uuid · pathrequired
Response — 200
dataobjectoptional
idstring · uuidoptional
Stable delivery UUID.
example: "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f"
event_typestringoptional
The event type that triggered this delivery.
example: "session.completed"
payloadstringoptional
The raw JSON payload (as a string) that was POSTed to the destination.
example: "{\"event\":\"session.completed\",\"sessionId\":\"7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}"
http_statusinteger · int32optional
HTTP status code returned by the destination, or null if no response.
example: 200
response_bodystringoptional
Response body returned by the destination (truncated), or null.
example: "OK"
successbooleanoptional
True when the delivery reached the Delivered terminal state.
example: true
statusstringoptional
Delivery state (Pending, Delivered, Failed, …).
example: "Delivered"
attemptsinteger · int32optional
Number of delivery attempts made so far.
example: 1
max_attemptsinteger · int32optional
Maximum number of delivery attempts before the delivery is abandoned.
example: 5
duration_msinteger · int32optional
How long the last delivery attempt took, in milliseconds, or null.
example: 142
next_retry_atobject · date-timeoptional
UTC time the next retry is scheduled for, or null if none pending.
example: "2026-06-19T18:47:09Z"
created_atobject · date-timeoptional
UTC time the delivery was created.
example: "2026-06-19T18:42:09Z"
completed_atobject · date-timeoptional
UTC time the delivery reached a terminal state, or null.
example: "2026-06-19T18:42:11Z"
GET /emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}X-API-Key
curl 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": {
    "id": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f",
    "event_type": "session.completed",
    "payload": "{\"event\":\"session.completed\",\"sessionId\":\"7c6f5e40-1a2b-3c4d-5e6f-7a8b9c0d1e2f\"}",
    "http_status": 200,
    "response_body": "OK",
    "success": true,
    "status": "Delivered",
    "attempts": 1,
    "max_attempts": 5,
    "duration_ms": 142,
    "next_retry_at": "2026-06-19T18:47:09Z",
    "created_at": "2026-06-19T18:42:09Z",
    "completed_at": "2026-06-19T18:42:11Z"
  }
}
Try itruns against your network · response is live

Retry a webhook delivery

POST/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry
Path & query parameters
webhookIdstring · uuid · pathrequired
deliveryIdstring · uuid · pathrequired
Response — 202
dataobjectoptional
delivery_idstring · uuidoptional
The delivery UUID that was re-enqueued.
example: "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f"
retry_enqueuedbooleanoptional
Always true — the delivery was queued for one immediate re-processing pass.
example: true
POST /emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retryX-API-Key
curl -X POST 'https://api.proranked.com/emsp/v1/webhooks/{webhookId}/deliveries/{deliveryId}/retry' \
  -H 'X-API-Key: pr_live_…'
Response · 202
{
  "data": {
    "delivery_id": "6f5e4d3c-2b1a-0e9f-8d7c-6b5a4c3d2e1f",
    "retry_enqueued": true
  }
}
Try itruns against your network · response is live

List available webhook event types

GET/emsp/v1/webhooks/event-types
Response — 200
dataarray of stringoptional
All event types a subscription may subscribe to.
GET /emsp/v1/webhooks/event-typesX-API-Key
curl 'https://api.proranked.com/emsp/v1/webhooks/event-types' \
  -H 'X-API-Key: pr_live_…'
Response · 200
{
  "data": [
    "string"
  ]
}
Try itruns against your network · response is live