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

# Remove prompts from a brand report

> Unassigns prompts from the brand report and recalculates it without them (asynchronously). The prompt IDs travel in a JSON request body, which some HTTP clients drop on DELETE — send it explicitly. The prompts themselves are not deleted and stay in the workspace — use `DELETE /v1/workspaces/{id}/prompts/{promptId}` for that. Prompt IDs that are not assigned to the report are returned in `notAssigned` and left unchanged; unknown prompt IDs are rejected with a 400 naming them. This discards the citation data collected for those prompts in this report: re-adding one later reprocesses only the most recent 7 days of its citation history, so a remove-then-re-add round trip is not reversible.



## OpenAPI

````yaml https://data.otterly.ai/v1/openapi.json delete /v1/reports/brand/{reportId}/prompts
openapi: 3.0.0
info:
  title: Otterly Public API
  version: 1.0.0
servers:
  - url: https://data.otterly.ai
security: []
tags:
  - name: Engines
  - name: Workspaces
  - name: Tags
  - name: Prompts
  - name: Brand Reports
  - name: Audits
  - name: Accounts
paths:
  /v1/reports/brand/{reportId}/prompts:
    delete:
      tags:
        - Brand Reports
      summary: Remove prompts from a brand report
      description: >-
        Unassigns prompts from the brand report and recalculates it without them
        (asynchronously). The prompt IDs travel in a JSON request body, which
        some HTTP clients drop on DELETE — send it explicitly. The prompts
        themselves are not deleted and stay in the workspace — use `DELETE
        /v1/workspaces/{id}/prompts/{promptId}` for that. Prompt IDs that are
        not assigned to the report are returned in `notAssigned` and left
        unchanged; unknown prompt IDs are rejected with a 400 naming them. This
        discards the citation data collected for those prompts in this report:
        re-adding one later reprocesses only the most recent 7 days of its
        citation history, so a remove-then-re-add round trip is not reversible.
      parameters:
        - schema:
            type: string
            minLength: 1
            example: 01HX7K2YV9D3M8N0G6Q5R4S3T2
            description: Brand report identifier.
          required: true
          description: Brand report identifier.
          name: reportId
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PublicApiRemoveBrandReportPromptsRequest'
      responses:
        '200':
          description: >-
            The prompts unassigned from the brand report. Recalculation
            completes asynchronously.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiRemoveBrandReportPromptsResponse'
        '400':
          description: Validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiValidationErrorResponse'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '404':
          description: Report not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
        '429':
          description: Quota exhausted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicApiErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    PublicApiRemoveBrandReportPromptsRequest:
      type: object
      properties:
        promptIds:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 64
          minItems: 1
          maxItems: 1000
          description: >-
            IDs of prompts to unassign from the report — look them up with `GET
            /v1/reports/brand/{reportId}/prompts`. Up to 1000 IDs per call.
            Duplicate IDs are removed, and the de-duplicated list comes back as
            `promptIds` in the response.
      required:
        - promptIds
      example:
        promptIds:
          - 01HXP1DRTM5G8Z2N3KQ7VAW4PA
    PublicApiRemoveBrandReportPromptsResponse:
      type: object
      properties:
        reportId:
          type: string
          minLength: 1
          example: 01HX7K2YV9D3M8N0G6Q5R4S3T2
        promptIds:
          type: array
          items:
            type: string
          description: The prompt IDs the request asked to unassign.
        removed:
          type: array
          items:
            type: string
          description: Prompt IDs unassigned from the report by this request.
        notAssigned:
          type: array
          items:
            type: string
          description: Prompt IDs that were not assigned to the report, left unchanged.
      required:
        - reportId
        - promptIds
        - removed
        - notAssigned
      example:
        reportId: 01HXBR1DGM5XY8Z2N3KQ7VAW4P
        promptIds:
          - 01HXP1DRTM5G8Z2N3KQ7VAW4PA
          - 01HXP2DRTM5G8Z2N3KQ7VAW4PB
        removed:
          - 01HXP1DRTM5G8Z2N3KQ7VAW4PA
        notAssigned:
          - 01HXP2DRTM5G8Z2N3KQ7VAW4PB
    PublicApiValidationErrorResponse:
      type: object
      properties:
        message:
          type: string
        target:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              path:
                type: string
              message:
                type: string
              code:
                type: string
            required:
              - path
              - message
              - code
      required:
        - message
        - target
        - errors
      example:
        message: Validation failed
        target: query
        errors:
          - path: country
            message: Required
            code: invalid_type
    PublicApiErrorResponse:
      type: object
      properties:
        message:
          type: string
      required:
        - message
      example:
        message: Report not found
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Provide your API key as a Bearer token: `Authorization: Bearer
        YOUR_API_KEY`.

````