# Chargetrip GraphQL API
The [Chargetrip](https://www.chargetrip.com) API is a **native GraphQL API** for
electric-vehicle routing. It plans range-aware routes with charging stops, serves a
curated charge station database, an EV vehicle/consumption database, isolines
(reachability), and operator data, and pushes real-time route updates over WebSocket
subscriptions.
**Endpoint:** `https://api.chargetrip.io/graphql` (queries and mutations, HTTP POST)
**Subscriptions:** `wss://api.chargetrip.io/subscription` (WebSocket, `graphql-transport-ws` protocol)
**Documentation:** https://developers.chargetrip.com
## Authentication
Every request must send two headers, obtained by creating a Chargetrip account:
| Header | Purpose |
|--------|---------|
| `x-client-id` | Identifies your Chargetrip client/account. |
| `x-app-id` | Identifies the application making the request. |
- Quick setup:
- Schema: see [`chargetrip-schema.graphql`](./chargetrip-schema.graphql) (representative SDL — see note below)
---
## Note on the schema file
The accompanying [`chargetrip-schema.graphql`](./chargetrip-schema.graphql) is a
**representative SDL** of the documented operations and types. It is not a verbatim
export of Chargetrip's production schema; field-level detail should be confirmed
against the live API Playground () and the
Voyager schema explorer ().
---
## Operation inventory
### Mutations
| Operation | Purpose |
|-----------|---------|
| `newRoute` | Create a route from vehicle, origin, and destination (plus preferences). Returns a route `id`; the route is computed asynchronously. |
| `createIsoline` | Create a drivable-reachability isoline for a vehicle and origin. Returns an isoline `id`; computed asynchronously. |
### Queries
| Operation | Purpose |
|-----------|---------|
| `route` | Fetch a previously created route by `id` (re-fetch / on-demand). |
| `isoline` | Fetch a previously created isoline by `id`, including multipolygon shape and `maxDrivableDistance`. |
| `station` | Fetch a single charge station by `id`. |
| `stationList` | List charge stations with pagination, filter, and search. |
| `stationAround` | Fetch the stations closest to a GeoJSON location (radius/distance). |
| `vehicleList` | List EV vehicles with pagination, filter, and search. |
| `vehicle` | Fetch a single vehicle (consumption model and specs) by `id`. |
| `operatorList` | List charge point operators (CPOs) with pagination and filters. |
### Subscriptions (WebSocket)
| Operation | Purpose |
|-----------|---------|
| `routeUpdatedById` | Real-time route status and route details for an `id` returned by `newRoute`; emits until `status` is `done`. |
---
## Examples
### Create a route (mutation)
```graphql
mutation newRoute {
newRoute(
input: {
ev: {
id: "5d161be5c9eef46132d9d20a"
battery: { stateOfCharge: { value: 70, type: kilowatt_hour } }
climate: true
}
routeRequest: {
origin: {
type: Feature
geometry: { type: Point, coordinates: [4.8951, 52.3702] }
}
destination: {
type: Feature
geometry: { type: Point, coordinates: [2.3522, 48.8566] }
}
}
}
)
}
```
### Watch the route in real time (subscription, WebSocket)
```graphql
subscription routeUpdatedById($id: ID!) {
routeUpdatedById(id: $id) {
status
route {
charges
duration
distance
consumption
legs {
distance
duration
chargeTime
stationId
}
}
}
}
```
### Fetch a completed route (query)
```graphql
query route($id: ID!) {
route(id: $id) {
status
route {
distance
duration
charges
}
}
}
```
### Stations around a location (query)
```graphql
query stationAround {
stationAround(
query: {
location: { type: Point, coordinates: [4.8951, 52.3702] }
distance: 5000
}
size: 20
page: 0
) {
id
name
status
coordinates { latitude longitude }
evses {
status
connectors { standard power max_electric_power }
}
}
}
```
### List vehicles (query)
```graphql
query vehicleList {
vehicleList(page: 0, size: 10, search: "Tesla") {
id
naming { make model version }
battery { usable_kwh full_kwh }
range { chargetrip_range { best worst } }
}
}
```
### Create and read an isoline
```graphql
mutation createIsoline {
createIsoline(
input: {
ev: { id: "5d161be5c9eef46132d9d20a", battery: { stateOfCharge: { value: 70, type: kilowatt_hour } } }
origin: { type: Feature, geometry: { type: Point, coordinates: [4.8951, 52.3702] } }
}
)
}
query isoline($id: ID!) {
isoline(id: $id) {
status
polygons
maxDrivableDistance
}
}
```
### List operators (query)
```graphql
query operatorList {
operatorList(page: 0, size: 20) {
id
name
}
}
```