Circuit Members API

Endpoints to operate on Members resources.

Operations 4

POST /members Create a new member #
PATCH /members/{memberId} Update a member #
DELETE /members/{memberId} Remove a member #
POST /members:import Import multiple members #

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-members-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-members-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Spoke Members 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: Members
  description: Endpoints to operate on Members resources.
paths:
  /members:
    post:
      operationId: createMember
      summary: Create a new member
      tags:
      - Members
      description: Create a member with the given data in your team. Prefer using the batch import endpoint for creating multiple members at once as it is more efficient.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: The member's full name
                  anyOf:
                  - type: string
                    minLength: 1
                    maxLength: 255
                  - type: 'null'
                displayName:
                  description: The name displayed for the member in the UI
                  anyOf:
                  - type: string
                    minLength: 1
                    maxLength: 255
                  - type: 'null'
                email:
                  description: Member'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'
                linkedDriverId:
                  description: The existing driver to link the member to
                  anyOf:
                  - type: string
                    pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
                  - type: 'null'
                role:
                  description: The operational role given to the member.
                  type: string
                  enum:
                  - admin
                  - depot-manager
                  - dispatcher
                  - read-only
                depots:
                  description: The depot IDs associated with the member 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 member 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'
              required:
              - role
              additionalProperties: false
        required: true
      responses:
        '200':
          description: The created member
          content:
            application/json:
              schema:
                description: The created member
                $ref: '#/components/schemas/memberSchema'
        '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
        '404':
          description: The linked driver could not be found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - Driver not found
                    - type: string
                required:
                - message
                description: The linked driver could not be found.
                title: Driver not found
        '409':
          description: Conflict when creating member.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - The member could not be created because of a conflict, such as a member already existing with the same email.
                    - type: string
                required:
                - message
                description: Conflict when creating member.
        '422':
          description: Failed to create member.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - An error occured when creating the member, 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 member.
        '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
  /members/{memberId}:
    patch:
      operationId: updateMember
      summary: Update a member
      tags:
      - Members
      description: Updates a member from your team.
      requestBody:
        content:
          application/json:
            schema:
              description: The request body for updating a member.
              type: object
              properties:
                name:
                  description: The member's full name
                  anyOf:
                  - type: string
                    minLength: 1
                    maxLength: 255
                  - type: 'null'
                displayName:
                  description: The name displayed for the member in the UI
                  anyOf:
                  - type: string
                    minLength: 1
                    maxLength: 255
                  - type: 'null'
                role:
                  description: The operational role given to the member.
                  anyOf:
                  - description: The operational role given to the member.
                    type: string
                    enum:
                    - admin
                    - depot-manager
                    - dispatcher
                    - read-only
                  - type: 'null'
                depots:
                  description: The depot IDs associated with the member 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 member 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'
              additionalProperties: false
        description: The request body for updating a member.
      parameters:
      - schema:
          type: string
          pattern: ^[a-zA-Z0-9---_]{1,50}$
        in: path
        name: memberId
        required: true
        description: The member id
      responses:
        '200':
          description: The updated member
          content:
            application/json:
              schema:
                description: The updated member
                $ref: '#/components/schemas/memberSchema'
        '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
        '404':
          description: The provided member id does not exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - Member not found
                    - type: string
                required:
                - message
                description: The provided member id does not exist
                title: Member not found
        '422':
          description: Failed to update member.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - An error occured when updating the member, 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 update member.
        '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: deleteMember
      summary: Remove a member
      tags:
      - Members
      description: Removes a member from your team. If the member also has driver access, the member will only have their operational role(s) revoked; thus not being listed among the team members, but will keep their driver access.
      parameters:
      - schema:
          type: string
          pattern: ^[a-zA-Z0-9---_]{1,50}$
        in: path
        name: memberId
        required: true
        description: The member id
      responses:
        '204':
          description: Member removed 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: The provided member id does not exist
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - Member not found
                    - type: string
                required:
                - message
                description: The provided member id does not exist
                title: Member not found
        '422':
          description: Failed to delete member.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: The error message.
                required:
                - message
                description: Failed to delete member.
        '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
  /members:import:
    post:
      operationId: importMembers
      summary: Import multiple members
      tags:
      - Members
      description: Import multiple members at once.
      requestBody:
        content:
          application/json:
            schema:
              description: An array of member descriptions to be created in batch.
              minItems: 1
              maxItems: 50
              type: array
              items:
                type: object
                properties:
                  name:
                    description: The member's full name
                    anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 255
                    - type: 'null'
                  displayName:
                    description: The name displayed for the member in the UI
                    anyOf:
                    - type: string
                      minLength: 1
                      maxLength: 255
                    - type: 'null'
                  email:
                    description: Member'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'
                  linkedDriverId:
                    description: The existing driver to link the member to
                    anyOf:
                    - type: string
                      pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
                    - type: 'null'
                  role:
                    description: The operational role given to the member.
                    type: string
                    enum:
                    - admin
                    - depot-manager
                    - dispatcher
                    - read-only
                  depots:
                    description: The depot IDs associated with the member 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 member 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'
                required:
                - role
                additionalProperties: false
        description: An array of member descriptions to be created in batch.
      responses:
        '200':
          description: The imported members
          content:
            application/json:
              schema:
                description: The imported members
                type: object
                properties:
                  success:
                    type: array
                    items:
                      type: string
                      pattern: ^members\/[a-zA-Z0-9---_]{1,50}$
                      description: The id of the member, in the format `members/<id>`.
                    description: The ids of the successfully imported members
                  failed:
                    type: array
                    items:
                      type: object
                      properties:
                        error:
                          type: object
                          properties:
                            message:
                              type: string
                              description: The error that occurred during import
                          required:
                          - message
                        member:
                          type: object
                          properties:
                            name:
                              anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 255
                              - type: 'null'
                              description: The member's full name
                            displayName:
                              anyOf:
                              - type: string
                                minLength: 1
                                maxLength: 255
                              - type: 'null'
                              description: The name displayed for the member in the UI
                            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'
                              description: Member's email
                            linkedDriverId:
                              anyOf:
                              - type: string
                                pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
                              - type: 'null'
                              description: The existing driver to link the member to
                            role:
                              type: string
                              enum:
                              - admin
                              - depot-manager
                              - dispatcher
                              - read-only
                              description: The operational role given to the member.
                            depots:
                              anyOf:
                              - minItems: 1
                                maxItems: 50
                                type: array
                                items:
                                  type: string
                                  pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
                                  description: The depot ID, in the format `depots/<id>`
                              - type: 'null'
                              description: The depot IDs associated with the member 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 member depot.
                          required:
                          - role
                          description: The request body for creating a member.
                      required:
                      - error
                      - member
                    description: The failed members
                required:
                - success
                - failed
        '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
        '409':
          description: Conflict when creating member.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - The member could not be created because of a conflict, such as a member already existing with the same email.
                    - type: string
                required:
                - message
                description: Conflict when creating member.
        '422':
          description: Failed to import members.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    anyOf:
                    - type: string
                      enum:
                      - An error occured when importing members, 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 import members.
        '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:
    memberIdSchema:
      type: string
      pattern: ^members\/[a-zA-Z0-9---_]{1,50}$
    driverIdSchema:
      type: string
      pattern: ^drivers\/[a-zA-Z0-9---_]{1,50}$
    memberSchema:
      type: object
      properties:
        id:
          allOf:
          - $ref: '#/components/schemas/memberIdSchema'
          description: The member id, in the format `members/<id>`
        name:
          anyOf:
          - type: string
          - type: 'null'
          description: The name of the member.
        email:
          anyOf:
          - type: string
          - type: 'null'
          description: The email of the member.
        phone:
          anyOf:
          - type: string
          - type: 'null'
          description: The phone number of the member.
        linkedDriverId:
          anyOf:
          - $ref: '#/components/schemas/driverIdSchema'
          - type: 'null'
          description: The driver linked to the member (where applicable).
        displayName:
          anyOf:
          - type: string
          - type: 'null'
          description: The display name of the member.
        active:
          type: boolean
          description: Whether the member membership is active or paused.
        depots:
          type: array
          items:
            type: string
            pattern: ^depots\/[a-zA-Z0-9---_]{1,50}$
          description: Depots associated with the member.
        roles:
          $ref: '#/components/schemas/roleSchema'
      required:
      - id
      - name
      - email
      - phone
      - linkedDriverId
      - displayName
      - active
      - depots
      - roles
      additionalProperties: false
      description: A dashboard member.
    roleSchema:
      type: array
      items:
        type: string
        enum:
        - owner
        - admin
        - depot-manager
        - dispatcher
        - read-only
        - driver
      description: The role(s) given to the member.
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: Use the API key as the username and leave the password empty.