Skip to content

ev.energy v2 API (2.0)

The official API for ev.energy, version 2.

Download OpenAPI description
Overview
Languages
Servers
Mock server
https://developers.ev.energy/_mock/ev.energy-api-v2
Live API for both production and sandbox requests.
https://api.ev.energy/v2
Staging server for internal testing only.
https://api-staging.ev.energy/v2

Carbon

Endpoints for interacting with carbon intensity data.

Schemas
Operations

Charging Sessions

Endpoints related to records of charging.

Schemas
Operations
Webhooks

CSV

Endpoints that return CSV responses only and are not linkable to other endpoint data.

EVSEs

Endpoints for interacting with EVSEs.

Schemas
Operations

Notifications

Endpoints for communicating notifications.

Operations

Programs

Endpoints related to incentivised charging programs.

Operations

Rebates

Endpoints for interacting with rebates.

Schemas
Operations

Root

The root endpoint which lists all the top-level collections.

Operations

Schedules

Schema definitions for charging schedules.

Schemas

Sites

Endpoints for interacting with sites containing multiple EVSEs.

Operations

Solar

Endpoints for interacting with solar arrays and inverters.

Operations

Subscriptions

Endpoints for interacting with user subscriptions.

Operations

Support Tickets

Endpoints for interacting with customer support tickets.

Schemas
Operations

Support Ticket

A resource that represents a support ticket from a customer support system.

idstringtick[A-Z\d]{26}read-onlyrequired

Unique identifier for the given support ticket.

Example: "tick01HN2NJ9NMRZBXT1H6FT9N7735"
urlstring(uri)read-onlyrequired
Example: "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735"
user(string or null) or (User (object or null)) or (null or null)read-only

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
One of:

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
string or null(uri)read-only
external_ticket_idstringread-onlyrequired

External ticket ID from Freshdesk or other support system.

Example: "12345"
positionintegerread-onlyrequired

The position in the conversation history. 0 is the first message.

Example: 0
message_typestring(Support Ticket Message Type)read-onlyrequired

The type of message in the ticket conversation.

Enum"INITIAL_REQUEST""CUSTOMER_RESPONSE""HUMAN_AGENT_RESPONSE""AI_AGENT_RESPONSE"
Example: "INITIAL_REQUEST"
subjectstring or nullread-only

The subject or title of the ticket.

Example: "Unable to connect my vehicle"
statusstring or nullread-only

Status name (e.g., Open, Resolved, Closed).

Example: "Open"
prioritystring or nullread-only

Priority name (e.g., Low, Medium, High, Urgent).

Example: "Medium"
sourcestring or nullread-only

Source name (e.g., Email, Phone, Feedback Widget).

Example: "Email"
human_verified_categorySupport Ticket Category (string) or null

Human verified category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
human_verified_subcategorySupport Ticket Subcategory (string) or null

Human verified subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
ai_generated_categorySupport Ticket Category (string) or null

AI generated category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
ai_generated_subcategorySupport Ticket Subcategory (string) or null

AI generated subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
type_deprecatedstring or nullread-only

Legacy ticket type (phased out for category/subcategory system).

Example: "Vehicle API error"
tagsArray of stringsread-only

List of tags (e.g., ['ai-categorised', 'escalated']).

Example: ["ai-categorised"]
messagestringread-onlyrequired

The message from the agent or customer.

Example: "I am having trouble connecting my Tesla to the app."
message_cleanstring or nullread-only

A cleaned version of the message with all unnecessary text removed.

Example: "Having trouble connecting Tesla to app."
conversation_summarystring or nullread-only

An AI generated summary of the conversation.

Example: "Customer experiencing issues with Tesla vehicle connection to mobile app."
custom_fieldsobjectread-only

Additional custom fields from support system (e.g., car_manufacturer, mobile_app, legal_country, membership_level).

Example: {"car_manufacturer":"Tesla","mobile_app":"iOS"}
attributesobjectread-only

Additional information about the user and their hardware.

Example: {"evse_model":"ChargePoint Home Flex"}
created_atstring(date-time)read-onlyrequired

When the ticket was created in the support system.

Example: "2019-08-24T14:15:22Z"
ticket_updated_atstring or null(date-time)read-only

When the ticket was last updated in the support system.

Example: "2019-08-24T15:30:00Z"
resolved_atstring or null(date-time)read-only

When the ticket was resolved in the support system.

Example: "2019-08-25T10:00:00Z"
{ "id": "tick01HN2NJ9NMRZBXT1H6FT9N7735", "url": "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735", "user": "https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735", "external_ticket_id": "12345", "position": 0, "message_type": "INITIAL_REQUEST", "subject": "Unable to connect my vehicle", "status": "Open", "priority": "Medium", "source": "Email", "human_verified_category": "VEHICLE", "human_verified_subcategory": "TELEMATICS_ISSUE", "ai_generated_category": "VEHICLE", "ai_generated_subcategory": "TELEMATICS_ISSUE", "type_deprecated": "Vehicle API error", "tags": [ "ai-categorised" ], "message": "I am having trouble connecting my Tesla to the app.", "message_clean": "Having trouble connecting Tesla to app.", "conversation_summary": "Customer experiencing issues with Tesla vehicle connection to mobile app.", "custom_fields": { "car_manufacturer": "Tesla", "mobile_app": "iOS" }, "attributes": { "evse_model": "ChargePoint Home Flex" }, "created_at": "2019-08-24T14:15:22Z", "ticket_updated_at": "2019-08-24T15:30:00Z", "resolved_at": "2019-08-25T10:00:00Z" }

List support tickets

Request

List all support tickets that the authorization token has access to.

Access control:

  • User-scoped tokens: Returns only tickets belonging to that user
  • Organization-scoped tokens: Returns only tickets belonging to users in that organization
  • Tokens with access_all_areas: Returns all tickets including those without a user

Note: Tickets without a user (null user field) are only accessible to applications with access_all_areas permission. These tickets represent inquiries from channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Security
oauth2(Required scopes:
support:read
)
Query
page_beforestring[a-z]{4}[A-Z\d]{26}

Return results from the page after this ID.

Example: page_before=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR
page_afterstring[a-z]{4}[A-Z\d]{26}

Return results from the page before this ID.

Example: page_after=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR
page_sizeinteger[ 1 .. 100 ]

Specify the number of results to return per page.

Default 25
Example: page_size=10
expandArray of strings

Specify a url field to expand into a nested resource.

Items Value"user"
external_ticket_idstring

Filter by external ticket ID from support system

human_verified_categorystring

Filter by human verified category

human_verified_subcategorystring

Filter by human verified subcategory

ai_generated_categorystring

Filter by AI generated category

ai_generated_subcategorystring

Filter by AI generated subcategory

human_verified_category__isnullboolean

Filter for tickets with or without human verified category

human_verified_subcategory__isnullboolean

Filter for tickets with or without human verified subcategory

ai_generated_category__isnullboolean

Filter for tickets with or without AI generated category

ai_generated_subcategory__isnullboolean

Filter for tickets with or without AI generated subcategory

statusstring

Filter by ticket status (e.g., Open, Resolved, Closed)

status__instring

Filter by multiple status values (comma-separated)

prioritystring

Filter by ticket priority (e.g., Low, Medium, High, Urgent)

priority__instring

Filter by multiple priority values (comma-separated)

priority__isnullboolean

Filter for tickets with or without priority

created_at__gtestring(date-time)

Filter tickets created on or after this date

created_at__ltestring(date-time)

Filter tickets created on or before this date

created_at__rangestring

Filter tickets created within a date range (comma-separated start and end dates)

userstring(uri)

Filter tickets by a specific user ID

user__isnullboolean

Filter for tickets with or without an associated user

tagsstring

Filter by tag (checks if the tag exists in the tags array)

message_typestring

Filter by message type (Initial Request, Customer Response, Human Agent Response, AI Agent Response)

message_type__instring

Filter by multiple message types (comma-separated)

sourcestring

Filter by ticket source (e.g., Email, Phone, Feedback Widget)

source__instring

Filter by multiple sources (comma-separated)

resolved_at__gtestring(date-time)

Filter tickets resolved on or after this date

resolved_at__ltestring(date-time)

Filter tickets resolved on or before this date

resolved_at__rangestring

Filter tickets resolved within a date range (comma-separated start and end dates)

resolved_at__isnullboolean

Filter for unresolved tickets (true) or resolved tickets (false)

ticket_updated_at__gtestring(date-time)

Filter tickets updated on or after this date

ticket_updated_at__ltestring(date-time)

Filter tickets updated on or before this date

ticket_updated_at__rangestring

Filter tickets updated within a date range (comma-separated start and end dates)

ticket_updated_at__isnullboolean

Filter for tickets with or without an update timestamp

positioninteger

Filter by message position in the conversation (0 is first message)

position__gteinteger

Filter for messages at or after this position

position__lteinteger

Filter for messages at or before this position

Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  'https://developers.ev.energy/_mock/ev.energy-api-v2/support_tickets?page_before=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR&page_after=xmpl01HNFZM7Q8FXASZXYZ6XM3TQRR&page_size=10&expand=user&external_ticket_id=string&human_verified_category=string&human_verified_subcategory=string&ai_generated_category=string&ai_generated_subcategory=string&human_verified_category__isnull=true&human_verified_subcategory__isnull=true&ai_generated_category__isnull=true&ai_generated_subcategory__isnull=true&status=string&status__in=string&priority=string&priority__in=string&priority__isnull=true&created_at__gte=2019-08-24T14%3A15%3A22Z&created_at__lte=2019-08-24T14%3A15%3A22Z&created_at__range=string&user=http%3A%2F%2Fexample.com&user__isnull=true&tags=string&message_type=string&message_type__in=string&source=string&source__in=string&resolved_at__gte=2019-08-24T14%3A15%3A22Z&resolved_at__lte=2019-08-24T14%3A15%3A22Z&resolved_at__range=string&resolved_at__isnull=true&ticket_updated_at__gte=2019-08-24T14%3A15%3A22Z&ticket_updated_at__lte=2019-08-24T14%3A15%3A22Z&ticket_updated_at__range=string&ticket_updated_at__isnull=true&position=0&position__gte=0&position__lte=0' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns a list of support tickets.

Headers
Linkstring

Provides links to the previous and next pages of data, if they exist.

Example: "<https://api.ev.energy/v2/vehicles?page_size=25&page_before=vhcl01HRFF3SEVSCRAV9B3CHVDFN0H>; rel=\"previous\", <https://api.ev.energy/v2/vehicles?page_size=25&page_after=vhcl01HRFF3SEVSCRAV9B3CHVDFN0H>; rel=\"next\""
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/jsonArray [
idstringtick[A-Z\d]{26}read-onlyrequired

Unique identifier for the given support ticket.

Example: "tick01HN2NJ9NMRZBXT1H6FT9N7735"
urlstring(uri)read-onlyrequired
Example: "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735"
user(string or null) or (User (object or null)) or (null or null)read-only

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
One of:

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
string or null(uri)read-only
external_ticket_idstringread-onlyrequired

External ticket ID from Freshdesk or other support system.

Example: "12345"
positionintegerread-onlyrequired

The position in the conversation history. 0 is the first message.

Example: 0
message_typestring(Support Ticket Message Type)read-onlyrequired

The type of message in the ticket conversation.

Enum"INITIAL_REQUEST""CUSTOMER_RESPONSE""HUMAN_AGENT_RESPONSE""AI_AGENT_RESPONSE"
Example: "INITIAL_REQUEST"
subjectstring or nullread-only

The subject or title of the ticket.

Example: "Unable to connect my vehicle"
statusstring or nullread-only

Status name (e.g., Open, Resolved, Closed).

Example: "Open"
prioritystring or nullread-only

Priority name (e.g., Low, Medium, High, Urgent).

Example: "Medium"
sourcestring or nullread-only

Source name (e.g., Email, Phone, Feedback Widget).

Example: "Email"
human_verified_categorySupport Ticket Category (string) or null

Human verified category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
human_verified_subcategorySupport Ticket Subcategory (string) or null

Human verified subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
ai_generated_categorySupport Ticket Category (string) or null

AI generated category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
ai_generated_subcategorySupport Ticket Subcategory (string) or null

AI generated subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
type_deprecatedstring or nullread-only

Legacy ticket type (phased out for category/subcategory system).

Example: "Vehicle API error"
tagsArray of stringsread-only

List of tags (e.g., ['ai-categorised', 'escalated']).

Example: ["ai-categorised"]
messagestringread-onlyrequired

The message from the agent or customer.

Example: "I am having trouble connecting my Tesla to the app."
message_cleanstring or nullread-only

A cleaned version of the message with all unnecessary text removed.

Example: "Having trouble connecting Tesla to app."
conversation_summarystring or nullread-only

An AI generated summary of the conversation.

Example: "Customer experiencing issues with Tesla vehicle connection to mobile app."
custom_fieldsobjectread-only

Additional custom fields from support system (e.g., car_manufacturer, mobile_app, legal_country, membership_level).

Example: {"car_manufacturer":"Tesla","mobile_app":"iOS"}
attributesobjectread-only

Additional information about the user and their hardware.

Example: {"evse_model":"ChargePoint Home Flex"}
created_atstring(date-time)read-onlyrequired

When the ticket was created in the support system.

Example: "2019-08-24T14:15:22Z"
ticket_updated_atstring or null(date-time)read-only

When the ticket was last updated in the support system.

Example: "2019-08-24T15:30:00Z"
resolved_atstring or null(date-time)read-only

When the ticket was resolved in the support system.

Example: "2019-08-25T10:00:00Z"
]
Response
application/json
[ { "id": "tick01HN2NJ9NMRZBXT1H6FT9N7735", "url": "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735", "user": "https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735", "external_ticket_id": "12345", "position": 0, "message_type": "INITIAL_REQUEST", "subject": "Unable to connect my vehicle", "status": "Open", "priority": "Medium", "source": "Email", "human_verified_category": "VEHICLE", "human_verified_subcategory": "TELEMATICS_ISSUE", "ai_generated_category": "VEHICLE", "ai_generated_subcategory": "TELEMATICS_ISSUE", "type_deprecated": "Vehicle API error", "tags": [ … ], "message": "I am having trouble connecting my Tesla to the app.", "message_clean": "Having trouble connecting Tesla to app.", "conversation_summary": "Customer experiencing issues with Tesla vehicle connection to mobile app.", "custom_fields": { … }, "attributes": { … }, "created_at": "2019-08-24T14:15:22Z", "ticket_updated_at": "2019-08-24T15:30:00Z", "resolved_at": "2019-08-25T10:00:00Z" } ]

Retrieve support ticket

Request

Retrieve information about a single, specific support ticket.

Access control:

  • User-scoped tokens: Can only access tickets belonging to that user
  • Organization-scoped tokens: Can only access tickets belonging to users in that organization
  • Tokens with access_all_areas: Can access all tickets including those without a user

Note: Tickets without a user (null user field) will return 404 for tokens without access_all_areas permission.

Security
oauth2(Required scopes:
support:read
)
Path
support_ticket_idstringtick[A-Z\d]{26}required

The ID of the specific support ticket to retrieve.

Example: tick01HN2NJ9NMRZBXT1H6FT9N7735
Query
expandArray of strings

Specify a url field to expand into a nested resource.

Items Value"user"
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  'https://developers.ev.energy/_mock/ev.energy-api-v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735?expand=user' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns a single support ticket.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
idstringtick[A-Z\d]{26}read-onlyrequired

Unique identifier for the given support ticket.

Example: "tick01HN2NJ9NMRZBXT1H6FT9N7735"
urlstring(uri)read-onlyrequired
Example: "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735"
user(string or null) or (User (object or null)) or (null or null)read-only

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
One of:

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
string or null(uri)read-only
external_ticket_idstringread-onlyrequired

External ticket ID from Freshdesk or other support system.

Example: "12345"
positionintegerread-onlyrequired

The position in the conversation history. 0 is the first message.

Example: 0
message_typestring(Support Ticket Message Type)read-onlyrequired

The type of message in the ticket conversation.

Enum"INITIAL_REQUEST""CUSTOMER_RESPONSE""HUMAN_AGENT_RESPONSE""AI_AGENT_RESPONSE"
Example: "INITIAL_REQUEST"
subjectstring or nullread-only

The subject or title of the ticket.

Example: "Unable to connect my vehicle"
statusstring or nullread-only

Status name (e.g., Open, Resolved, Closed).

Example: "Open"
prioritystring or nullread-only

Priority name (e.g., Low, Medium, High, Urgent).

Example: "Medium"
sourcestring or nullread-only

Source name (e.g., Email, Phone, Feedback Widget).

Example: "Email"
human_verified_categorySupport Ticket Category (string) or null

Human verified category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
human_verified_subcategorySupport Ticket Subcategory (string) or null

Human verified subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
ai_generated_categorySupport Ticket Category (string) or null

AI generated category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
ai_generated_subcategorySupport Ticket Subcategory (string) or null

AI generated subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
type_deprecatedstring or nullread-only

Legacy ticket type (phased out for category/subcategory system).

Example: "Vehicle API error"
tagsArray of stringsread-only

List of tags (e.g., ['ai-categorised', 'escalated']).

Example: ["ai-categorised"]
messagestringread-onlyrequired

The message from the agent or customer.

Example: "I am having trouble connecting my Tesla to the app."
message_cleanstring or nullread-only

A cleaned version of the message with all unnecessary text removed.

Example: "Having trouble connecting Tesla to app."
conversation_summarystring or nullread-only

An AI generated summary of the conversation.

Example: "Customer experiencing issues with Tesla vehicle connection to mobile app."
custom_fieldsobjectread-only

Additional custom fields from support system (e.g., car_manufacturer, mobile_app, legal_country, membership_level).

Example: {"car_manufacturer":"Tesla","mobile_app":"iOS"}
attributesobjectread-only

Additional information about the user and their hardware.

Example: {"evse_model":"ChargePoint Home Flex"}
created_atstring(date-time)read-onlyrequired

When the ticket was created in the support system.

Example: "2019-08-24T14:15:22Z"
ticket_updated_atstring or null(date-time)read-only

When the ticket was last updated in the support system.

Example: "2019-08-24T15:30:00Z"
resolved_atstring or null(date-time)read-only

When the ticket was resolved in the support system.

Example: "2019-08-25T10:00:00Z"
Response
application/json
{ "id": "tick01HN2NJ9NMRZBXT1H6FT9N7735", "url": "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735", "user": "https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735", "external_ticket_id": "12345", "position": 0, "message_type": "INITIAL_REQUEST", "subject": "Unable to connect my vehicle", "status": "Open", "priority": "Medium", "source": "Email", "human_verified_category": "VEHICLE", "human_verified_subcategory": "TELEMATICS_ISSUE", "ai_generated_category": "VEHICLE", "ai_generated_subcategory": "TELEMATICS_ISSUE", "type_deprecated": "Vehicle API error", "tags": [ "ai-categorised" ], "message": "I am having trouble connecting my Tesla to the app.", "message_clean": "Having trouble connecting Tesla to app.", "conversation_summary": "Customer experiencing issues with Tesla vehicle connection to mobile app.", "custom_fields": { "car_manufacturer": "Tesla", "mobile_app": "iOS" }, "attributes": { "evse_model": "ChargePoint Home Flex" }, "created_at": "2019-08-24T14:15:22Z", "ticket_updated_at": "2019-08-24T15:30:00Z", "resolved_at": "2019-08-25T10:00:00Z" }

Update support ticket

Request

Update support ticket categorization.

Access control follows the same rules as retrieval:

  • User-scoped tokens: Can only update tickets belonging to that user
  • Organization-scoped tokens: Can only update tickets belonging to users in that organization
  • Tokens with access_all_areas: Can update all tickets including those without a user
Security
oauth2(Required scopes:
support:write
)
Path
support_ticket_idstringtick[A-Z\d]{26}required

The ID of the specific support ticket to retrieve.

Example: tick01HN2NJ9NMRZBXT1H6FT9N7735
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
Body
human_verified_categorySupport Ticket Category (string) or null

Human verified category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
human_verified_subcategorySupport Ticket Subcategory (string) or null

Human verified subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
ai_generated_categorySupport Ticket Category (string) or null

AI generated category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
ai_generated_subcategorySupport Ticket Subcategory (string) or null

AI generated subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
curl -i -X PATCH \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735 \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'EvEnergy-Version: 2' \
  -d '{
    "human_verified_category": "VEHICLE",
    "human_verified_subcategory": "TELEMATICS_ISSUE",
    "ai_generated_category": "VEHICLE",
    "ai_generated_subcategory": "TELEMATICS_ISSUE"
  }'

Responses

Support ticket updated successfully.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
Bodyapplication/json
idstringtick[A-Z\d]{26}read-onlyrequired

Unique identifier for the given support ticket.

Example: "tick01HN2NJ9NMRZBXT1H6FT9N7735"
urlstring(uri)read-onlyrequired
Example: "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735"
user(string or null) or (User (object or null)) or (null or null)read-only

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
One of:

Reference to the user who created the ticket. Can be null for tickets created through channels where a user account may not exist (e.g., pre-signup inquiries, web forms).

Access control:

  • Tickets with a user are accessible based on user/organization permissions
  • Tickets without a user (null) are only accessible to applications with access_all_areas permission
string or null(uri)read-only
external_ticket_idstringread-onlyrequired

External ticket ID from Freshdesk or other support system.

Example: "12345"
positionintegerread-onlyrequired

The position in the conversation history. 0 is the first message.

Example: 0
message_typestring(Support Ticket Message Type)read-onlyrequired

The type of message in the ticket conversation.

Enum"INITIAL_REQUEST""CUSTOMER_RESPONSE""HUMAN_AGENT_RESPONSE""AI_AGENT_RESPONSE"
Example: "INITIAL_REQUEST"
subjectstring or nullread-only

The subject or title of the ticket.

Example: "Unable to connect my vehicle"
statusstring or nullread-only

Status name (e.g., Open, Resolved, Closed).

Example: "Open"
prioritystring or nullread-only

Priority name (e.g., Low, Medium, High, Urgent).

Example: "Medium"
sourcestring or nullread-only

Source name (e.g., Email, Phone, Feedback Widget).

Example: "Email"
human_verified_categorySupport Ticket Category (string) or null

Human verified category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
human_verified_subcategorySupport Ticket Subcategory (string) or null

Human verified subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
ai_generated_categorySupport Ticket Category (string) or null

AI generated category for the ticket.

Example: "VEHICLE"
One of:

Main category for a support ticket.

string(Support Ticket Category)
Enum"ACCOUNT""CHARGER""CHARGING_SESSION""MOBILE_APP""OTHER""SOLAR""USABILITY_UX""VEHICLE"
ai_generated_subcategorySupport Ticket Subcategory (string) or null

AI generated subcategory for the ticket.

Example: "TELEMATICS_ISSUE"
One of:

Subcategory for a support ticket.

string(Support Ticket Subcategory)
Enum"ACCESSIBILITY""ACCURACY""ADD_NON_INTEGRATED_VEHICLE""ADD_NEW_TARIFF""API_ACCESS_TOKEN""APP_CRASH_FREEZE""APP_OR_EMAIL_NOTIFICATIONS""APP_SETTINGS_CONFUSION""BOOST_CONFUSION""BUSINESS_LEAD_NON_SUPPORT"
type_deprecatedstring or nullread-only

Legacy ticket type (phased out for category/subcategory system).

Example: "Vehicle API error"
tagsArray of stringsread-only

List of tags (e.g., ['ai-categorised', 'escalated']).

Example: ["ai-categorised"]
messagestringread-onlyrequired

The message from the agent or customer.

Example: "I am having trouble connecting my Tesla to the app."
message_cleanstring or nullread-only

A cleaned version of the message with all unnecessary text removed.

Example: "Having trouble connecting Tesla to app."
conversation_summarystring or nullread-only

An AI generated summary of the conversation.

Example: "Customer experiencing issues with Tesla vehicle connection to mobile app."
custom_fieldsobjectread-only

Additional custom fields from support system (e.g., car_manufacturer, mobile_app, legal_country, membership_level).

Example: {"car_manufacturer":"Tesla","mobile_app":"iOS"}
attributesobjectread-only

Additional information about the user and their hardware.

Example: {"evse_model":"ChargePoint Home Flex"}
created_atstring(date-time)read-onlyrequired

When the ticket was created in the support system.

Example: "2019-08-24T14:15:22Z"
ticket_updated_atstring or null(date-time)read-only

When the ticket was last updated in the support system.

Example: "2019-08-24T15:30:00Z"
resolved_atstring or null(date-time)read-only

When the ticket was resolved in the support system.

Example: "2019-08-25T10:00:00Z"
Response
application/json
{ "id": "tick01HN2NJ9NMRZBXT1H6FT9N7735", "url": "https://api.ev.energy/v2/support_tickets/tick01HN2NJ9NMRZBXT1H6FT9N7735", "user": "https://api.ev.energy/v2/users/user01HN2NJ9NMRZBXT1H6FT9N7735", "external_ticket_id": "12345", "position": 0, "message_type": "INITIAL_REQUEST", "subject": "Unable to connect my vehicle", "status": "Open", "priority": "Medium", "source": "Email", "human_verified_category": "VEHICLE", "human_verified_subcategory": "TELEMATICS_ISSUE", "ai_generated_category": "VEHICLE", "ai_generated_subcategory": "TELEMATICS_ISSUE", "type_deprecated": "Vehicle API error", "tags": [ "ai-categorised" ], "message": "I am having trouble connecting my Tesla to the app.", "message_clean": "Having trouble connecting Tesla to app.", "conversation_summary": "Customer experiencing issues with Tesla vehicle connection to mobile app.", "custom_fields": { "car_manufacturer": "Tesla", "mobile_app": "iOS" }, "attributes": { "evse_model": "ChargePoint Home Flex" }, "created_at": "2019-08-24T14:15:22Z", "ticket_updated_at": "2019-08-24T15:30:00Z", "resolved_at": "2019-08-25T10:00:00Z" }

Get support ticket categories

Request

Returns all available support ticket categories and subcategories.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support_tickets/categories \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns all available categories and subcategories.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
categoriesArray of objects

List of all available ticket categories. Each category includes the enum value and its human-readable label.

subcategoriesArray of objects

List of all available ticket subcategories. Each subcategory includes the enum value and its human-readable label.

Response
application/json
{ "categories": [ { … }, { … }, { … }, { … }, { … }, { … }, { … }, { … } ], "subcategories": [ { … }, { … }, { … }, { … } ] }

Get support ticket Sankey diagram data

Request

Returns aggregated data for visualizing ticket flow from category to subcategory in a Sankey diagram. Only includes tickets with human-verified categories.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/sankey \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns Sankey diagram nodes and links.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
nodesArray of objects

List of nodes in the Sankey diagram (categories and subcategories).

linksArray of objects

List of links between nodes representing ticket flows.

Response
application/json
{ "nodes": [ { … }, { … } ], "links": [ { … } ] }

Get support ticket volume time series

Request

Returns time series data showing ticket volume over time. Can be grouped by day, week, or month.

Security
oauth2
Query
group_bystring

Time period to group by (day, week, or month). Defaults to day.

Default "day"
Enum"day""week""month"
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  'https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/volume?group_by=day' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns time series data for ticket volume.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
time_seriesArray of objects

List of time periods with ticket counts.

Response
application/json
{ "time_series": [ { … }, { … }, { … } ] }

Get support ticket resolution metrics

Request

Returns metrics about ticket resolution including resolution rate, average and median resolution times.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/resolution \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns resolution metrics.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
resolution_ratenumber(float)required

Percentage of tickets that have been resolved (0-1).

Example: 0.85
avg_resolution_time_hoursnumber or null(float)

Average time to resolve a ticket in hours. Null if no tickets resolved.

Example: 24.5
median_resolution_time_hoursnumber or null(float)

Median time to resolve a ticket in hours. Null if no tickets resolved.

Example: 18.2
total_resolvedintegerrequired

Total number of resolved tickets.

Example: 170
total_unresolvedintegerrequired

Total number of unresolved tickets.

Example: 30
Response
application/json
{ "resolution_rate": 0.85, "avg_resolution_time_hours": 24.5, "median_resolution_time_hours": 18.2, "total_resolved": 170, "total_unresolved": 30 }

Get support ticket status breakdown

Request

Returns the distribution of tickets across different status values.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/status \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns ticket breakdown by status.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
breakdownArray of objects

List of status values with counts and percentages.

Response
application/json
{ "breakdown": [ { … }, { … } ] }

Get support ticket priority breakdown

Request

Returns the distribution of tickets across different priority values.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/priority \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns ticket breakdown by priority.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
breakdownArray of objects

List of priority values with counts and percentages.

Response
application/json
{ "breakdown": [ { … }, { … }, { … } ] }

Get support ticket source breakdown

Request

Returns the distribution of tickets across different source values.

Security
oauth2
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/source \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns ticket breakdown by source.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
breakdownArray of objects

List of source values with counts and percentages.

Response
application/json
{ "breakdown": [ { … }, { … } ] }

Get top support ticket categories and subcategories

Request

Returns the most common categories and subcategories sorted by ticket count. Supports a limit parameter to control the number of results.

Security
oauth2
Query
limitinteger>= 1

Maximum number of categories/subcategories to return. Defaults to 10.

Default 10
Headers
EvEnergy-Versionnumber

Specify the version of this endpoint to use.

Value2
curl -i -X GET \
  'https://developers.ev.energy/_mock/ev.energy-api-v2/support-ticket-stats/top-categories?limit=10' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'EvEnergy-Version: 2'

Responses

Returns top categories and subcategories.

Headers
EvEnergy-Versionnumber

Indicates the version of the API that generated this response. If EvEnergy-Version was not specified in the request, this will be your OAuth application's default version.

Value2
X-RateLimit-Limitnumber

The maximum number of requests that can be made to this endpoint per hour. Defaults to 1000 but may vary per client.

Default 1000
X-RateLimit-Remainingnumber

The number of requests remaining until this client's rate limit is reached.

Default 999
RetryAfternumber

The number of seconds until this client's requests will not be rate limited.

Default 3600
Bodyapplication/json
categoriesArray of objects

List of most common categories.

subcategoriesArray of objects

List of most common subcategories with their parent category.

Response
application/json
{ "categories": [ { … }, { … } ], "subcategories": [ { … }, { … } ] }

Tariffs

Endpoints related to energy suppliers and their tariffs.

Schemas
Operations

Users

Endpoints for interacting with users.

Schemas
Operations

Vehicles

Endpoints for interacting with vehicles.

Schemas

Webhooks

Endpoints for configuring and managing webhooks.

Operations