> ## Documentation Index
> Fetch the complete documentation index at: https://docs.govly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Remove a user or team member from a workspace

> Removes a member from the workspace. Idempotent: removing a member who is absent or already removed succeeds with data null and meta.noOp true rather than 404, and never reports whether an id exists. Users may always remove themselves, unless their only membership is through a team. Removing anyone else requires belonging to the workspace's own organization; a denial is 401. Unlike the add operation, removal reaches members from other organizations and members whose user account has been archived; neither can be added back by a caller from this workspace's organization, only by someone from that member's own organization. Removal ends the membership and mutes notifications, but on a private workspace it does not by itself revoke that person's access. Note also that updatedAt on the returned membership is not advanced by a removal, so it cannot be used to detect one; read state instead.




## OpenAPI

````yaml /openapi/tools-v1.yaml delete /api/tools/v1/workspaces/{workspaceId}/members
openapi: 3.1.0
info:
  title: Govly Tools API (Alpha)
  version: 1.0.0-alpha
  description: >
    ALPHA / UNSTABLE: This API is still in active development. Endpoint
    behavior, request fields, response fields, error codes, and operation names
    may change before the Tools API is declared stable.

    REST-callable tool surface for agent and automation workflows. Agents are
    the primary consumer, but integrations can be built on this API. Responses
    are JSON for typed clients; MCP tools may render action results into
    text-oriented formats separately.
servers:
  - url: https://app.govly.com
security:
  - bearerApiKey: []
  - headerApiKey: []
tags:
  - name: Opportunities
    description: Search, fetch, and inspect Govly opportunity records.
  - name: Awards
    description: Search and inspect awarded government contracts.
  - name: Contacts
    description: Search and inspect government points of contact.
  - name: Signals
    description: Search clustered procurement and market intelligence signals.
  - name: Places
    description: Resolve place names to canonical Govly Place ids.
  - name: Product Catalogs
    description: List government contract price lists and search their line items.
  - name: Workspaces
    description: Create, update, and inspect opportunity workspaces.
  - name: Workspace Members
    description: Add users and teams to workspaces.
  - name: Workspace Attachments
    description: List and upload workspace attachments.
  - name: Workspace Comments
    description: Post comments to workspaces.
  - name: Follows
    description: Follow opportunities and related workspace activity.
  - name: Saved Searches
    description: List saved opportunity searches and cached matches.
  - name: Documents
    description: >-
      Read document representations and request temporary original-file
      downloads.
  - name: Quote Submissions
    description: >-
      Inspect quote submission requirements, submit quotes, and poll submission
      status.
  - name: Inbox
    description: Read and triage the authenticated user's matched inbox items.
paths:
  /api/tools/v1/workspaces/{workspaceId}/members:
    delete:
      tags:
        - Workspace Members
      summary: Remove a user or team member from a workspace
      description: >
        Removes a member from the workspace. Idempotent: removing a member who
        is absent or already removed succeeds with data null and meta.noOp true
        rather than 404, and never reports whether an id exists. Users may
        always remove themselves, unless their only membership is through a
        team. Removing anyone else requires belonging to the workspace's own
        organization; a denial is 401. Unlike the add operation, removal reaches
        members from other organizations and members whose user account has been
        archived; neither can be added back by a caller from this workspace's
        organization, only by someone from that member's own organization.
        Removal ends the membership and mutes notifications, but on a private
        workspace it does not by itself revoke that person's access. Note also
        that updatedAt on the returned membership is not advanced by a removal,
        so it cannot be used to detect one; read state instead.
      operationId: remove_workspace_member
      parameters:
        - $ref: '#/components/parameters/workspaceId'
        - name: userId
          in: query
          required: false
          schema:
            type: string
          description: Organization user ID to remove. Provide this or teamId, not both.
        - name: teamId
          in: query
          required: false
          schema:
            type: string
          description: Organization team ID to remove. Provide this or userId, not both.
      responses:
        '200':
          description: >-
            Removed workspace membership, or a no-op when there was nothing to
            remove
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - meta
                properties:
                  data:
                    description: The cleared membership, or null on a no-op.
                    oneOf:
                      - $ref: '#/components/schemas/WorkspaceMember'
                      - type: 'null'
                  meta:
                    type: object
                    required:
                      - noOp
                    properties:
                      noOp:
                        type: boolean
                        description: True when no membership was changed.
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
components:
  parameters:
    workspaceId:
      name: workspaceId
      in: path
      required: true
      schema:
        type: string
  schemas:
    WorkspaceMember:
      type: object
      required:
        - id
        - member
      properties:
        id:
          type: string
        state:
          type: string
        notifications:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        member:
          type: object
          required:
            - type
            - id
          properties:
            type:
              type: string
              enum:
                - user
                - team
            id:
              type: string
            name:
              type: string
            email:
              type: string
              format: email
            organization:
              type: object
              properties:
                id:
                  type: string
                name:
                  type: string
    ErrorEnvelope:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          items:
            type: object
            required:
              - status
              - code
              - title
              - detail
            properties:
              status:
                type: string
              code:
                type: string
              title:
                type: string
              detail:
                type: string
              source:
                type: object
                properties:
                  pointer:
                    type: string
  responses:
    Error:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      bearerFormat: API key
    headerApiKey:
      type: apiKey
      in: header
      name: X-API-KEY

````