Circuit Drivers API
Endpoints to operate on [Drivers](/docs/models/driver) resources.
Endpoints to operate on [Drivers](/docs/models/driver) resources.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/circuit-drivers-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Spoke Drivers API
description: This is the documentation of the Spoke Public API HTTP endpoints.
version: v1
servers:
- url: https://api.spoke.com/public/v1
security:
- BasicAuth: []
tags:
- name: Drivers
description: Endpoints to operate on Drivers resources.
paths:
/drivers:
get:
operationId: listDrivers
summary: List Drivers
tags:
- Drivers
parameters:
- schema:
default: 50
type: number
minimum: 1
maximum: 50
in: query
name: maxPageSize
required: false
description: The maximum number of drivers to return.
- schema:
type: string
minLength: 1
maxLength: 255
in: query
name: pageToken
required: false
description: The page token to continue from.
- schema:
type: object
properties:
active:
description: Filter by the active status of the driver. Inactive drivers will not be assigned to any routes.
type: string
enum:
- 'true'
- 'false'
additionalProperties: false
in: query
name: filter
required: false
description: 'The filter to apply to the list of drivers. The filter param is passed like this: `?filter[active]=true` or like this: `?filter.active=true`'
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
drivers:
type: array
items:
$ref: '#/components/schemas/driverSchema'
description: The drivers.
nextPageToken:
anyOf:
- type: string
- type: 'null'
description: The next page token.
required:
- drivers
- nextPageToken
definitions:
driverSchema:
type: object
properties:
id:
type: string
pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
description: The driver id, in the format `drivers/<id>`
name:
anyOf:
- type: string
- type: 'null'
description: The name of the driver.
email:
anyOf:
- type: string
- type: 'null'
description: The email of the driver.
phone:
anyOf:
- type: string
- type: 'null'
description: The phone number of the driver.
displayName:
anyOf:
- type: string
- type: 'null'
description: The display name of the driver.
active:
type: boolean
description: Whether the driver membership is active or paused. Paused drivers will not be assigned to any routes.
depots:
type: array
items:
type: string
pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
description: Depots associated with the driver.
routeOverrides:
type: object
properties:
startTime:
anyOf:
- type: object
properties:
hour:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Hour of the day
minute:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Minute of the hour
required:
- hour
- minute
additionalProperties: false
description: Time of day in hours and minutes. Uses a 24 hour clock.
- type: 'null'
description: Driver's start time.
endTime:
anyOf:
- type: object
properties:
hour:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Hour of the day
minute:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
description: Minute of the hour
required:
- hour
- minute
additionalProperties: false
description: Time of day in hours and minutes. Uses a 24 hour clock.
- type: 'null'
description: Driver's end time.
startAddress:
anyOf:
- type: object
properties:
address:
type: string
description: The address of the stop.
addressLineOne:
type: string
description: The first line of the address.
addressLineTwo:
type: string
description: The second line of the address.
latitude:
anyOf:
- type: number
minimum: -90
maximum: 90
- type: 'null'
description: The latitude of the address in decimal degrees.
longitude:
anyOf:
- type: number
minimum: -180
maximum: 180
- type: 'null'
description: The longitude of the address in decimal degrees.
placeId:
anyOf:
- type: string
- type: 'null'
description: The identifier of the place corresponding to this stop on Google Places
placeTypes:
type: array
items:
type: string
description: Array of strings that is provided by the Google AutoCompleteAPI
required:
- address
- addressLineOne
- addressLineTwo
- latitude
- longitude
- placeId
- placeTypes
additionalProperties: false
description: The address of the stop.
- type: 'null'
description: Driver's start location.
endAddress:
anyOf:
- type: object
properties:
address:
type: string
description: The address of the stop.
addressLineOne:
type: string
description: The first line of the address.
addressLineTwo:
type: string
description: The second line of the address.
latitude:
anyOf:
- type: number
minimum: -90
maximum: 90
- type: 'null'
description: The latitude of the address in decimal degrees.
longitude:
anyOf:
- type: number
minimum: -180
maximum: 180
- type: 'null'
description: The longitude of the address in decimal degrees.
placeId:
anyOf:
- type: string
- type: 'null'
description: The identifier of the place corresponding to this stop on Google Places
placeTypes:
type: array
items:
type: string
description: Array of strings that is provided by the Google AutoCompleteAPI
required:
- address
- addressLineOne
- addressLineTwo
- latitude
- longitude
- placeId
- placeTypes
additionalProperties: false
description: The address of the stop.
- type: 'null'
description: Driver's end location.
maxStops:
anyOf:
- type: integer
minimum: -9007199254740991
maximum: 9007199254740991
- type: 'null'
description: Maximum number of Stops the Driver can take in a route.
drivingSpeed:
type: string
enum:
- slower
- average
- faster
description: The relative driving speed of the driver compared to others.
deliverySpeed:
type: string
enum:
- slower
- average
- faster
description: The relative delivery speed of the driver compared to others.
vehicleType:
anyOf:
- type: string
enum:
- bike
- scooter
- car
- small_truck
- truck
- electric_cargo_bike
- type: 'null'
description: The vehicle type the driver will be using for deliveries.
required:
- startTime
- endTime
- startAddress
- endAddress
- maxStops
- drivingSpeed
- deliverySpeed
- vehicleType
description: Settings to override default route settings.
required:
- id
- name
- email
- phone
- displayName
- active
- depots
- routeOverrides
additionalProperties: false
description: A driver.
description: Success
'400':
description: Query parameters are invalid
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
code:
type: string
description: The error code.
param:
type: string
description: The parameter that caused the error.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: Query parameters are invalid
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: Unauthorized
'500':
description: An internal server error occurred
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
code:
type: string
description: The error code.
param:
type: string
description: The parameter that caused the error.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: An internal server error occurred
default:
description: The default error model
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
code:
type: string
description: The error code.
param:
type: string
description: The parameter that caused the error.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: The default error model
post:
operationId: createDriver
summary: Create a new driver
tags:
- Drivers
description: Create a driver with the given data in your team. Prefer using the batch import endpoint for creating multiple drivers at once as it is more efficient, faster.
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
description: The driver's full name
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
displayName:
description: The name displayed for the driver in the UI
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
email:
description: Driver's email
anyOf:
- type: string
minLength: 1
maxLength: 255
format: email
pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
- type: 'null'
phone:
description: Driver's phone number
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
depots:
description: The depot IDs associated with the driver in the format `depots/<id>`, duplicates will be ignored. If set to null or not provided, the team's Main depot will be set as driver depot.
anyOf:
- minItems: 1
maxItems: 50
type: array
items:
description: The depot ID, in the format `depots/<id>`
type: string
pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
- type: 'null'
routeOverrides:
description: Overrides for the driver route behavior.
anyOf:
- type: object
properties:
startAddress:
description: Address of a start location for every route assigned to this driver. If the latitude and longitude fields are set they will override any of the others. The addressName field is not used for geocoding and is only for display purposes.
anyOf:
- type: object
properties:
addressName:
description: The name of the address. This will not be used for geocoding, and is only for the final address display purposes.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
addressLineOne:
description: The first line of the address.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
addressLineTwo:
description: The second line of the address.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
city:
description: The city of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
state:
description: The state of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
zip:
description: The zip code of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
country:
description: The country of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
latitude:
description: The latitude of the address in decimal degrees.
anyOf:
- type: number
minimum: -90
maximum: 90
- type: 'null'
longitude:
description: The longitude of the address in decimal degrees.
anyOf:
- type: number
minimum: -180
maximum: 180
- type: 'null'
additionalProperties: false
- type: 'null'
endAddress:
description: Address of an end location for every route assigned to this driver. If the latitude and longitude fields are set they will override any of the others. The addressName field is not used for geocoding and is only for display purposes.
anyOf:
- type: object
properties:
addressName:
description: The name of the address. This will not be used for geocoding, and is only for the final address display purposes.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
addressLineOne:
description: The first line of the address.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
addressLineTwo:
description: The second line of the address.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
city:
description: The city of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
state:
description: The state of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
zip:
description: The zip code of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
country:
description: The country of the address.
anyOf:
- type: string
minLength: 1
maxLength: 100
- type: 'null'
latitude:
description: The latitude of the address in decimal degrees.
anyOf:
- type: number
minimum: -90
maximum: 90
- type: 'null'
longitude:
description: The longitude of the address in decimal degrees.
anyOf:
- type: number
minimum: -180
maximum: 180
- type: 'null'
additionalProperties: false
- type: 'null'
startTime:
description: The start time for the driver's work day.
anyOf:
- description: Time of day in hours and minutes. Use a 24 hour clock.
type: object
properties:
hour:
description: Hour of the day
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
minute:
description: Minute of the hour
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- hour
- minute
additionalProperties: false
- type: 'null'
endTime:
description: The end time for the driver's work day.
anyOf:
- description: Time of day in hours and minutes. Use a 24 hour clock.
type: object
properties:
hour:
description: Hour of the day
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
minute:
description: Minute of the hour
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
required:
- hour
- minute
additionalProperties: false
- type: 'null'
maxStops:
description: The maximum number of stops that can be allocated to this driver.
anyOf:
- type: integer
minimum: 0
maximum: 9007199254740991
- type: 'null'
drivingSpeed:
anyOf:
- default: average
description: How fast this driver drives compared to the Team's average
type: string
enum:
- slower
- average
- faster
- type: 'null'
deliverySpeed:
description: How fast this driver delivers compared to the Team's average
anyOf:
- default: average
type: string
enum:
- slower
- average
- faster
- type: 'null'
vehicleType:
description: The type of vehicle used by this driver
anyOf:
- type: string
enum:
- bike
- scooter
- car
- small_truck
- truck
- electric_cargo_bike
- type: 'null'
- type: 'null'
additionalProperties: false
responses:
'200':
description: The created driver
content:
application/json:
schema:
description: The created driver
$ref: '#/components/schemas/driverSchema'
'400':
description: Failed to validate the request
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
code:
type: string
description: The error code.
param:
type: string
description: The parameter that caused the error.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: Failed to validate the request
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: Unauthorized
'422':
description: Failed to create driver.
content:
application/json:
schema:
type: object
properties:
message:
anyOf:
- type: string
enum:
- An error occured when creating the driver, but the error is not due to a validation error, instead it is another conflict, check if the provided data is semantically valid.
- type: string
required:
- message
description: Failed to create driver.
'500':
description: An internal server error occurred
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
code:
type: string
description: The error code.
param:
type: string
description: The parameter that caused the error.
url:
type: string
description: The URL with more information about the error.
required:
- message
description: An internal server error occurred
default:
description: The default error model
content
# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/circuit/refs/heads/main/openapi/circuit-drivers-api-openapi.yml