Circuit Pickup Locations API

Look up the pickup locations your orders ship from.

Operations 2

GET /pickupLocations List pickup locations #
GET /pickupLocations/{id} Retrieve a pickup location #

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/getcircuit-com:getcircuit-com-pickup-locations-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

getcircuit-com-pickup-locations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Spoke Connect Pickup Locations API
  description: 'This is the documentation of the Spoke Connect API HTTP endpoints. The Connect

    API is how a retailer creates, tracks, and hands off its deliveries in Spoke

    programmatically. # Introduction


    The Spoke Connect API is an HTTP API that lets you operate on your orders

    programmatically. Use it to create, edit, delete, list, and retrieve orders,

    submit them to a courier and withdraw them before they ship, and download

    printable PDF labels. Read-only endpoints expose the couriers and pickup

    locations your orders reference. Spoke offers no programming SDKs for the Connect API. Call the endpoints

    documented on this page directly, or generate a client from the

    OpenAPI spec. For worked examples of the flows a retailer integration needs, see the

    Usage Examples. # Using the API


    ## Address


    The base address for this version of the API, to be used before every endpoint

    listed here, is:


    ```

    https://api.spoke.com/connect/v1

    ```


    Notice the `https://` prefix. The Connect API will **not** accept plain HTTP

    requests. ## Your first request


    Every request must be authenticated with an API key. The following request

    lists your orders:


    ```bash

    curl "https://api.spoke.com/connect/v1/orders" \

    -H "Authorization: Bearer "

    ```


    The response contains an `orders` array, plus a `nextPageToken` cursor to pass

    as `pageToken` when there are more results to fetch. ## Authentication


    Every Connect API request must be authenticated with an API key. ### Creating API keys


    API keys are created and expired from the **Integrations** page in your Connect

    settings, by retailer admins. You can have up to 5 active keys at a time. Expired keys don''t count towards the limit. Treat your keys as secrets: don''t embed them in client-side code, and expire

    any key you suspect has leaked. ### Using your key


    Pass the key in the `Authorization` header. Both the `Bearer` and `Basic`

    schemes are accepted:


    ```

    Authorization: Bearer

    ```


    ```

    Authorization: Basic :)>

    ```


    For `Basic`, use the API key as the username and leave the password empty. `curl` builds the encoded header for you with `-u ":"`:


    ```bash

    curl "https://api.spoke.com/connect/v1/orders" -u ":"

    ```


    ### Authentication errors


    Requests with a missing, invalid, or expired key are rejected with a

    `401 Unauthorized` response. ## On resource types


    Every response from the Connect API is a JSON object, and every request that

    carries a body must send it as JSON with the `Content-Type: application/json`

    header. The API exposes four resource types:


    | Resource | What it is | Where |

    | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |

    | `Order` | A package, or set of packages, you are sending to a recipient through a courier. Everything else in the API exists to describe or act on an order. | Read and write, `/orders` |

    | `Courier` | A courier your retailer account is connected to, and that you can submit orders to. | Read-only, `/couriers` |

    | `PickupLocation` | One of your own locations a courier can collect from, referenced by an order''s `deliveryInstructions.handOffInfo.pickupLocationId`. | Read-only, `/pickupLocations` |

    | `OrderShippingLabels` | A short-lived signed link to an order''s printable labels, rendered as a single PDF. | Read-only, `/orders/{id}/shippingLabels` |


    Couriers and pickup locations are managed in the Spoke Connect app, not through

    this API. The API reads them so you can reference them by id when you create

    and submit orders. What every field on these resources means is documented on the

    Models pages. ## On resource IDs


    Every resource in the Connect API has a unique id that Spoke generates.'
  version: v1
servers:
- url: https://api.spoke.com/connect/v1
security:
- BearerAuth: []
- BasicAuth: []
tags:
- name: Pickup Locations
  description: Look up the pickup locations your orders ship from.
paths:
  /pickupLocations:
    get:
      operationId: listPickupLocations
      summary: List pickup locations
      tags:
      - Pickup Locations
      description: List the authenticated retailer's pickup locations.
      parameters:
      - schema:
          type: string
          minLength: 1
          maxLength: 255
        in: query
        name: pageToken
        required: false
        description: The page token to continue from.
      - schema:
          default: 100
          type: integer
          minimum: 1
          maximum: 100
        in: query
        name: maxPageSize
        required: false
        description: The maximum number of pickup locations to return.
      responses:
        '200':
          description: The retailer's pickup locations.
          content:
            application/json:
              schema:
                type: object
                properties:
                  pickupLocations:
                    type: array
                    items:
                      $ref: '#/components/schemas/connectPickupLocationSchema'
                    description: The retailer's pickup locations.
                  nextPageToken:
                    description: The token for the next page, or null when there are no more pickup locations.
                    type:
                    - 'null'
                    - string
                required:
                - pickupLocations
                - nextPageToken
                definitions:
                  connectPickupLocationSchema:
                    type: object
                    properties:
                      id:
                        allOf:
                        - $ref: '#/components/schemas/connectPickupLocationIdSchema'
                        description: Pickup location identifier.
                      name:
                        type: string
                        description: The location's display name.
                    required:
                    - id
                    - name
                    additionalProperties: false
                    description: A retailer pickup location.
                  connectPickupLocationIdSchema:
                    type: string
                    pattern: ^pickupLocations\/[a-zA-Z0-9_-]{1,50}$
                    description: Unique identifier of a pickup location, in the format `pickupLocations/{id}`.
                description: The retailer's pickup locations.
        '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
  /pickupLocations/{id}:
    get:
      operationId: getPickupLocation
      summary: Retrieve a pickup location
      tags:
      - Pickup Locations
      description: Retrieve a single one of the authenticated retailer's pickup locations.
      parameters:
      - schema:
          type: string
          pattern: ^[a-zA-Z0-9_-]{1,50}$
        in: path
        name: id
        required: true
        description: The pickup location id.
      responses:
        '200':
          description: The requested pickup location.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    allOf:
                    - $ref: '#/components/schemas/connectPickupLocationIdSchema'
                    description: Pickup location identifier.
                  name:
                    type: string
                    description: The location's display name.
                required:
                - id
                - name
                additionalProperties: false
                description: The requested pickup location.
                definitions:
                  connectPickupLocationIdSchema:
                    type: string
                    pattern: ^pickupLocations\/[a-zA-Z0-9_-]{1,50}$
                    description: Unique identifier of a pickup location, in the format `pickupLocations/{id}`.
        '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 pickup location does not belong to the retailer, or does not exist.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The error message.
                  code:
                    type: string
                    enum:
                    - pickup_location_not_found
                required:
                - message
                - code
                description: The pickup location does not belong to the retailer, or does not exist.
                title: Pickup location 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
components:
  schemas:
    connectPickupLocationIdSchema:
      type: string
      pattern: ^pickupLocations\/[a-zA-Z0-9_-]{1,50}$
      description: Unique identifier of a pickup location, in the format `pickupLocations/{id}`.
    connectPickupLocationSchema:
      type: object
      properties:
        id:
          allOf:
          - $ref: '#/components/schemas/connectPickupLocationIdSchema'
          description: Pickup location identifier.
        name:
          type: string
          description: The location's display name.
      required:
      - id
      - name
      additionalProperties: false
      description: A retailer pickup location.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Pass the API key directly as the token.
    BasicAuth:
      type: http
      scheme: basic
      description: Use the API key as the username and leave the password empty.