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

# Add or remove tags in bulk

> Adds or removes tags on many list entries in one request. Metal applies the change per entry and to every tags column on the list. On lists with write-back enabled, the tags are also written to the underlying records when that record type supports tag write-back: funds, limited partners, and fundraising processes.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/lists/{id}/entries/bulk-tags
openapi: 3.1.0
info:
  title: Metal API
  version: 1.0.0
  description: >-
    REST API for Metal, the AI context layer for financial firms. Manage
    companies, deals, people, documents, activities, enrichments, scores,
    screenings, lists, workflows, and more. All endpoints are versioned under
    /v1, return JSON, and are scoped to the organization that owns your API key.
  contact:
    name: Metal Support
    email: support@metal.ai
    url: https://www.metal.ai
servers:
  - url: https://api.metal.ai
    description: Production
security:
  - MetalClientId: []
    MetalApiKey: []
tags:
  - name: API keys
    description: Check which API key a request is using.
  - name: Companies
    description: Manage and enrich companies.
  - name: Deals
    description: Track opportunities through your pipeline.
  - name: People
    description: Manage contacts and relationships.
  - name: Documents
    description: Search and retrieve ingested documents.
  - name: Activities
    description: Log and search meetings, calls, and other interactions.
  - name: Enrichments
    description: Read and write enriched property values on resources.
  - name: Scores
    description: Score companies and deals against scoring frameworks.
  - name: Screenings
    description: Run and manage AI-powered company screenings.
  - name: Lists
    description: Organize and enrich resources in bulk.
  - name: Tags
    description: Label companies, deals, and lists.
  - name: Industries
    description: Manage your organization's industry taxonomy.
  - name: Sectors
    description: Manage sectors within an industry.
  - name: Subsectors
    description: Manage subsectors within a sector.
  - name: Workflows
    description: Run and monitor AI workflows.
  - name: Data
    description: Query time-series metrics and observations.
  - name: Teams
    description: Manage deal teams and their members.
  - name: Workspaces
    description: Organize documents and data by workspace.
  - name: Inference
    description: Run single LLM completions scoped to your organization.
paths:
  /v1/lists/{id}/entries/bulk-tags:
    parameters:
      - $ref: '#/components/parameters/ListId'
    post:
      tags:
        - Lists
      summary: Add or remove tags in bulk
      description: >-
        Adds or removes tags on many list entries in one request. Metal applies
        the change per entry and to every tags column on the list. On lists with
        write-back enabled, the tags are also written to the underlying records
        when that record type supports tag write-back: funds, limited partners,
        and fundraising processes.
      operationId: bulkTagListEntries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTagRequest'
      responses:
        '200':
          description: The result for each entry.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BulkTagResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: You do not have access to the list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: forbidden
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    ListId:
      name: id
      in: path
      required: true
      description: The list id.
      schema:
        type: string
  schemas:
    BulkTagRequest:
      type: object
      required:
        - entryIds
        - tagIds
        - operation
      properties:
        entryIds:
          type: array
          minItems: 1
          maxItems: 1000
          description: Entry ids to change. Accepts 1 to 1,000 ids; duplicates are ignored.
          items:
            type: string
          example:
            - 665f1c2a9b1e4a0012a3b4d1
            - 665f1c2a9b1e4a0012a3b4d2
        tagIds:
          type: array
          minItems: 1
          maxItems: 100
          description: >-
            Tag ids to add or remove. Accepts 1 to 100 ids; duplicates are
            ignored.
          items:
            type: string
          example:
            - 665f1c2a9b1e4a0012a3b4e1
        operation:
          type: string
          enum:
            - add
            - remove
          description: Whether to add or remove the tags.
    BulkTagResponse:
      type: object
      properties:
        updatedCount:
          type: integer
          description: Entries where at least one tags column changed.
        noOpCount:
          type: integer
          description: >-
            Entries that already had (for `add`) or already lacked (for
            `remove`) every tag.
        notFoundCount:
          type: integer
          description: Entry ids that are not in this list.
        errorCount:
          type: integer
          description: Entries whose change failed.
        results:
          type: array
          items:
            $ref: '#/components/schemas/BulkTagResult'
        affectedResources:
          type: array
          description: >-
            Records updated through write-back. Omitted when write-back is off
            or nothing changed.
          items:
            type: object
            properties:
              type:
                type: string
                example: fund
              id:
                type: string
                example: 665f1c2a9b1e4a0012a3b4c6
    Error:
      type: object
      properties:
        error:
          type: string
          description: A human-readable error message.
    BulkTagResult:
      type: object
      properties:
        entryId:
          type: string
          example: 665f1c2a9b1e4a0012a3b4d1
        status:
          type: string
          enum:
            - updated
            - noOp
            - notFound
            - error
          description: >-
            The outcome for this entry. `error` means the entry could not be
            changed, for example because the underlying record is not editable
            or its record type does not support tag write-back.
        message:
          type: string
          description: >-
            Why the entry was not changed. Present on `notFound` and `error`
            results.
  responses:
    BadRequest:
      description: The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Invalid request body
    Unauthorized:
      description: Missing or invalid API key credentials.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: invalid api key or clientId
    NotFound:
      description: The resource does not exist in your organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: not found
  securitySchemes:
    MetalClientId:
      type: apiKey
      in: header
      name: x-metal-client-id
      description: The Client ID of your API key.
      x-default: <client-id>
    MetalApiKey:
      type: apiKey
      in: header
      name: x-metal-api-key
      description: The secret value of your API key.
      x-default: <api-key>

````

## Related topics

- [Working with lists](https://docs.metal.ai/help/lists.md)
- [Build and manage lists](https://docs.metal.ai/guides/manage-lists.md)
- [MCP tools reference](https://docs.metal.ai/mcp/tools-reference.md)
- [CRM integration](https://docs.metal.ai/help/integrations/crm.md)
- [Adding & managing users](https://docs.metal.ai/help/admin/users.md)


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