Circuit Unassigned Stops API
Endpoints to operate on [Unassigned Stop](/docs/models/unassignedStop) resources.
Endpoints to operate on [Unassigned Stop](/docs/models/unassignedStop) 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-unassigned-stops-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 Unassigned Stops 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: Unassigned Stops
description: Endpoints to operate on Unassigned Stop resources.
paths:
/unassignedStops/{unassignedStopId}:
get:
operationId: getUnassignedStop
summary: Retrieve an unassigned stop
tags:
- Unassigned Stops
parameters:
- schema:
type: string
pattern: ^[a-zA-Z0-9---_]{1,50}$
in: path
name: unassignedStopId
required: true
description: The unassigned stop id
responses:
'200':
description: The requested unassigned stop
content:
application/json:
schema:
$ref: '#/components/schemas/unassignedStopSchema'
description: The requested unassigned stop
'400':
description: ID format is 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: ID format is invalid
title: The request is 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
'404':
description: The provided unassigned stop id does not exist
content:
application/json:
schema:
type: object
properties:
message:
type: string
enum:
- Unassigned stop not found
required:
- message
description: The provided unassigned stop id does not exist
'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
delete:
operationId: deleteUnassignedStop
summary: Delete an unassigned stop
tags:
- Unassigned Stops
description: Delete an unassigned stop. This action cannot be undone and will delete all the data associated with the unassigned stop.
parameters:
- schema:
type: string
pattern: ^[a-zA-Z0-9---_]{1,50}$
in: path
name: unassignedStopId
required: true
description: The unassigned stop id
responses:
'204':
description: Unassigned Stop deleted successfully
'400':
description: ID format is 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: ID format is invalid
title: The request is 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
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
required:
- message
description: Not Found
'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
patch:
operationId: updateUnassignedStop
summary: Update an existing unassigned stop
tags:
- Unassigned Stops
description: Does not support updating a unassigned stop's location, nor the `clientId`. To do so, delete the unassignedStop and create a new one.
requestBody:
content:
application/json:
schema:
description: The request body for updating an unassigned stop. All the values present in the request will update the unassigned stop value. If you wish to update only certain fields, only set those and do not set the others. Any fields not set will not be updated.
type: object
properties:
recipient:
anyOf:
- description: Recipient information for this stop
type: object
properties:
externalId:
description: External ID of the recipient, as defined by the API user
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
email:
description: Email of the recipient
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
phone:
description: Phone number of the recipient
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
name:
description: Name of the recipient
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
additionalProperties: false
- type: 'null'
orderInfo:
anyOf:
- description: Order information for this stop
type: object
properties:
products:
description: Products in this stop
maxItems: 100
type: array
items:
type: string
minLength: 1
maxLength: 255
invoiceNumber:
description: Invoice number
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
sellerOrderId:
description: Seller order ID
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
sellerName:
description: Seller name
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
sellerWebsite:
description: Seller website
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
additionalProperties: false
- type: 'null'
paymentOnDelivery:
anyOf:
- description: Payment on delivery (also known as "Cash on Delivery") data for this stop
type: object
properties:
amount:
description: Amount *in minor units* (e.g. cents) to be collected upon delivery
anyOf:
- type: integer
minimum: 0
maximum: 9007199254740991
- type: 'null'
currency:
description: Currency of the payment. Defaults to the team's currency.
anyOf:
- type: string
enum:
- AED
- ARS
- AUD
- BRL
- CAD
- CHF
- CLP
- CNY
- COP
- DKK
- EGP
- EUR
- GBP
- HKD
- HUF
- ILS
- INR
- JPY
- KRW
- MYR
- MXN
- NOK
- NZD
- PEN
- RON
- RUB
- SAR
- SEK
- SGD
- TRY
- USD
- UYU
- ZAR
- type: 'null'
additionalProperties: false
- type: 'null'
proofOfAttemptRequirements:
anyOf:
- description: Proof of attempt requirement settings for this stop
type: object
properties:
enabled:
description: Whether proof of attempt is required for this stop
anyOf:
- type: boolean
- type: 'null'
additionalProperties: false
- type: 'null'
allowedDrivers:
description: Driver IDs that are allowed to be assigned to this stop. If not provided, the stop will be assigned to any available driver during optimization.
anyOf:
- maxItems: 100
type: array
items:
type: string
pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
- type: 'null'
activity:
description: Activity type
default: delivery
anyOf:
- type: string
enum:
- delivery
- pickup
- type: 'null'
optimizationOrder:
description: The preferred order of this stop in the optimized route. If not provided or `"default"`, the stop will be placed in the optimal order, decided by the optimization algorithm. Otherwise it will be placed either `"first"` or `"last"`.
anyOf:
- type: string
enum:
- first
- last
- default
- type: 'null'
packageCount:
description: Number of packages in the stop
anyOf:
- type: number
minimum: 1
maximum: 10000
- type: 'null'
weight:
description: Weight information for this stop.
anyOf:
- type: object
properties:
amount:
description: The weight amount for this stop.
type: number
minimum: 0
maximum: 999999
multipleOf: 0.01
unit:
description: The weight unit in which the amount is specified.
type: string
enum:
- kilogram
- pound
- metric-ton
required:
- amount
- unit
- type: 'null'
notes:
description: Notes for the stop
anyOf:
- type: string
minLength: 1
maxLength: 2000
- type: 'null'
barcodes:
description: List of barcode IDs associated with this stop
maxItems: 200
type: array
items:
type: string
minLength: 1
maxLength: 255
customProperties:
description: Key-value pairs of custom stop properties for this stop. The keys must be unique and match a custom stop property defined in your team.
anyOf:
- type: object
propertyNames:
description: The custom stop property id
type: string
maxLength: 50
additionalProperties:
description: The value of the custom stop property, up to 255 characters.
anyOf:
- type: string
minLength: 1
maxLength: 255
- type: 'null'
- type: 'null'
timing:
anyOf:
- type: object
properties:
earliestAttemptTime:
description: Time of day of the earliest time this stop should happen
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'
latestAttemptTime:
description: Time of day of the latest time this stop should happen
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'
estimatedAttemptDuration:
description: Duration in seconds of the activity in this stop, only set if you want to override the default. This can be set up to 8 hours.
anyOf:
- type: integer
minimum: -9007199254740991
maximum: 9007199254740991
- type: 'null'
additionalProperties: false
- type: 'null'
depot:
description: The Depot ID that this unassigned stop belongs to, in the format `depot/<id>`. If null, it will default to the team's main depot. If not provided, it will not be updated.
anyOf:
- type: string
pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
- type: 'null'
additionalProperties: false
description: The request body for updating an unassigned stop. All the values present in the request will update the unassigned stop value. If you wish to update only certain fields, only set those and do not set the others. Any fields not set will not be updated.
parameters:
- schema:
type: string
pattern: ^[a-zA-Z0-9---_]{1,50}$
in: path
name: unassignedStopId
required: true
description: The unassigned stop id
responses:
'200':
description: The updated unassigned stop
content:
application/json:
schema:
$ref: '#/components/schemas/unassignedStopSchema'
description: The updated unassigned stop
'400':
description: The request has errors. Either syntactic or semantic
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 request has errors. Either syntactic or semantic
title: The request is 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
'403':
description: The request contains fields that are not supported by your team subscription/settings.
content:
application/json:
schema:
oneOf:
- type: object
properties:
message:
type: string
description: The error message.
code:
type: string
enum:
- feature_not_in_subscription
url:
type: string
enum:
- https://dispatch.spoke.com/paywall
required:
- message
- code
- url
description: Feature not included in your team subscription
- type: object
properties:
message:
type: string
description: The error message.
code:
type: string
enum:
- vehicle_capacity_disabled
url:
type: string
enum:
- https://dispatch.spoke.com/settings/team-profile
required:
- message
- code
- url
description: Vehicle capacity mode is disabled in the team's settings
description: The request contains fields that are not supported by your team subscription/settings.
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
message:
type: string
description: The error message.
required:
- message
description: Not Found
'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
/unassignedStops:
get:
operationId: listUnassignedStops
summary: List unassigned stops
tags:
- Unassigned Stops
parameters:
- schema:
type: string
minLength: 1
maxLength: 255
in: query
name: pageToken
required: false
description: The page token to continue from.
- schema:
default: 20
type: number
minimum: 1
maximum: 20
in: query
name: maxPageSize
required: false
description: The maximum number of unassigned stops to return per page.
- schema:
type: object
properties:
externalId:
description: Filter by the `recipient.externalId` field, exact match
type: string
minLength: 1
maxLength: 255
in: query
name: filter
required: false
description: The filter to apply to the list of unassigned stops.
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
unassignedStops:
type: array
items:
$ref: '#/components/schemas/unassignedStopSchema'
description: The unassignedStops.
nextPageToken:
anyOf:
- type: string
- type: 'null'
description: The next page token.
required:
- unassignedStops
- nextPageToken
definitions:
unassignedStopSchema:
type: object
properties:
id:
type: string
pattern: ^unassignedStops\/[a-zA-Z0-9---_]{1,50}$
description: The id of the unassigned stop, in the format `unassignedStops/<id>`.
depot:
type: string
pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
description: The depot that this unassigned stop belongs to.
address:
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.
barcodes:
type: array
items:
type: string
description: List of Barcode IDs associated with the stop.
allowedDrivers:
type: array
items:
type: string
pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
description: The driver IDs that can be assigned to this stop.
notes:
anyOf:
- type: string
- type: 'null'
description: Notes for the stop.
packageCount:
anyOf:
- type: number
- type: 'null'
description: The number of packages.
weight:
anyOf:
- type: object
properties:
amount:
type: number
minimum: 0
description: The wei
# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/circuit/refs/heads/main/openapi/circuit-unassigned-stops-api-openapi.yml