> ## 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 labels from a record

> Remove one or more of your organization's labels from an opportunity, award, contact, or workspace you can view. This DELETE takes a JSON request body, so that every label id arrives. Labels not on the record are ignored, other organizations' labels are never touched, and meta.removedLabelIds lists only the labels this call removed. An opportunity or contact you cannot view, a missing record, or any label id that is not one of your organization's labels returns 404; an award outside your organization's markets or a workspace you cannot access returns 401. Either way nothing is written. labelIds may list at most 50 ids.




## OpenAPI

````yaml /openapi/tools-v1.yaml delete /api/tools/v1/record_labels
openapi: 3.1.0
info:
  title: Govly Tools API
  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.

    Validating requests: validate against this schema in your client before
    sending. Govly ignores a request field it does not recognize rather than
    rejecting it, so a misspelled filter name is not applied — the response
    returns 200 with a broader result set than you intended, and nothing marks
    the difference. Where a request body declares `additionalProperties: false`,
    strict client-side validation is what catches that. Fields sent with the
    wrong type are rejected with 400 on most endpoints; validate types in your
    client too rather than relying on it.

    Rate limits: each resource (for example awards, opportunities, or
    workspaces) allows 70 requests per minute per user. Exceeding it returns 429
    with the standard error envelope, `code: rate_limited`, and a `Retry-After`
    header. Keys sent in the `X-API-KEY` header are also subject to the
    Enterprise API limit of 300 requests per minute per key; see the Rate Limits
    page.
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: Organization Users
    description: Discover the members of your organization and their account status.
  - name: Workspace Members
    description: Add users and teams to workspaces.
  - name: File Attachments
    description: >-
      Attach new or existing files through a signed Govly transfer or an
      authorized reference.
  - name: Workspace Attachments
    description: List and upload workspace attachments.
  - name: Workspace Comments
    description: Post comments to workspaces.
  - name: Organization Labels
    description: List, create, rename, recolor, and delete the organization's labels.
  - name: Record Labels
    description: >-
      Apply and remove the organization's labels on opportunities, awards,
      contacts, and workspaces.
  - name: Follows
    description: Follow opportunities and related workspace activity.
  - name: Shares
    description: Share opportunities, awards, and contacts with colleagues by email.
  - 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/record_labels:
    delete:
      tags:
        - Record Labels
      summary: Remove labels from a record
      description: >
        Remove one or more of your organization's labels from an opportunity,
        award, contact, or workspace you can view. This DELETE takes a JSON
        request body, so that every label id arrives. Labels not on the record
        are ignored, other organizations' labels are never touched, and
        meta.removedLabelIds lists only the labels this call removed. An
        opportunity or contact you cannot view, a missing record, or any label
        id that is not one of your organization's labels returns 404; an award
        outside your organization's markets or a workspace you cannot access
        returns 401. Either way nothing is written. labelIds may list at most 50
        ids.
      operationId: remove_record_labels
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
                - type
                - id
                - labelIds
              properties:
                type:
                  type: string
                  enum:
                    - opportunity
                    - award
                    - contact
                    - workspace
                id:
                  type: string
                  description: Govly record id. Awards also accept a uniqueKey.
                labelIds:
                  type: array
                  minItems: 1
                  maxItems: 50
                  items:
                    type: string
                  description: >-
                    Ids of the organization's labels to remove, from
                    list_organization_labels.
      responses:
        '200':
          description: The record's labels for your organization after the change
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordLabelsEnvelope'
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '422':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    RecordLabelsEnvelope:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: object
          required:
            - type
            - id
            - labels
          properties:
            type:
              type: string
              enum:
                - opportunity
                - award
                - contact
                - workspace
            id:
              type: string
              description: >-
                The record's Govly id, even when an award was addressed by
                uniqueKey.
            labels:
              type: array
              description: >-
                Your organization's labels on the record after the change,
                ordered by name ignoring case. Empty when none remain.
              items:
                $ref: '#/components/schemas/OrganizationLabel'
        meta:
          type: object
          properties:
            addedLabelIds:
              type: array
              items:
                type: string
              description: Present on add. Label ids this call applied.
            removedLabelIds:
              type: array
              items:
                type: string
              description: Present on remove. Label ids this call removed.
    OrganizationLabel:
      type: object
      required:
        - id
        - name
        - color
      properties:
        id:
          type: string
        name:
          type: string
        color:
          type: string
          description: Hex color such as
        description:
          type: string
          description: Omitted when the label has no description.
    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
    RateLimitError:
      type: object
      required:
        - error
      properties:
        error:
          type: string
  responses:
    Error:
      description: Error response
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
    RateLimited:
      description: >
        Too many requests. Two limiters can produce this status and they use
        different bodies. The per-user limit of 70 requests per minute for each
        resource returns the standard error envelope with `code: rate_limited`
        and a `Retry-After` header. Keys sent in the `X-API-KEY` header are also
        subject to the Enterprise API limit of 300 requests per minute per key,
        which returns the plain `error` form with `Retry-After` and the
        `X-RateLimit-*` headers. Clients should accept either body.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: string
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/ErrorEnvelope'
              - $ref: '#/components/schemas/RateLimitError'
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      bearerFormat: API key
    headerApiKey:
      type: apiKey
      in: header
      name: X-API-KEY

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.