Circuit Unassigned Stops API

Endpoints to operate on [Unassigned Stop](/docs/models/unassignedStop) resources.

Operations 6

GET /unassignedStops/{unassignedStopId} Retrieve an unassigned stop #
DELETE /unassignedStops/{unassignedStopId} Delete an unassigned stop #
PATCH /unassignedStops/{unassignedStopId} Update an existing unassigned stop #
GET /unassignedStops List unassigned stops #
POST /unassignedStops Create a new unassigned stop #
POST /unassignedStops:import Batch import unassigned stops #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/circuit-unassigned-stops-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

circuit-unassigned-stops-api-openapi.yml Raw ↑
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