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

# Remove File Placement

> Removes ONE placement of a file — "remove from this entity", not
"delete the file". While other placements remain the file (and its
stored content) is untouched and stays available everywhere else it
appears. Removing the file's LAST placement deletes the file itself and
reclaims its stored objects, exactly like
[Delete File](#tag/Company-Files/DELETE/api/v1/companies/{companyId}/files/{fileId})
— which remains the way to delete a file from everywhere at once.

**Required permission:** `company.file:delete`




## OpenAPI

````yaml /openapi/generated-external-api.yaml delete /api/v1/companies/{companyId}/files/{fileId}/placements/{placementId}
openapi: 3.0.3
info:
  title: AI Insurance External API
  description: External API for AI Insurance platform
  version: 1.0.0
  contact:
    email: support@aiinsurance.io
servers:
  - url: https://go.aiinsurance.io
    description: Production
security:
  - ApiKeyAuth: []
paths:
  /api/v1/companies/{companyId}/files/{fileId}/placements/{placementId}:
    delete:
      tags:
        - Company Files
      summary: Remove File Placement
      description: >
        Removes ONE placement of a file — "remove from this entity", not

        "delete the file". While other placements remain the file (and its

        stored content) is untouched and stays available everywhere else it

        appears. Removing the file's LAST placement deletes the file itself and

        reclaims its stored objects, exactly like

        [Delete
        File](#tag/Company-Files/DELETE/api/v1/companies/{companyId}/files/{fileId})

        — which remains the way to delete a file from everywhere at once.


        **Required permission:** `company.file:delete`
      operationId: removeCompanyFilePlacement
      parameters:
        - $ref: '#/components/parameters/companyId'
        - $ref: '#/components/parameters/fileId'
        - $ref: '#/components/parameters/placementId'
      responses:
        '200':
          description: Placement removed
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                    description: Id of the removed placement
                  fileId:
                    type: string
                    format: uuid
                    description: The file the placement belonged to
                  fileDeleted:
                    type: boolean
                    description: >-
                      True when the removed placement was the file's last — the
                      file itself was deleted and its storage reclaimed
              examples:
                placementRemoved:
                  summary: One of several placements removed (file survives)
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440032
                    fileId: 550e8400-e29b-41d4-a716-446655440020
                    fileDeleted: false
                lastPlacementRemoved:
                  summary: Last placement removed (file deleted)
                  value:
                    id: 550e8400-e29b-41d4-a716-446655440031
                    fileId: 550e8400-e29b-41d4-a716-446655440020
                    fileDeleted: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Placement not found (or not a placement of this file)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                notFound:
                  summary: Placement does not exist
                  value:
                    error:
                      code: NotFound
                      message: >-
                        File placement not found:
                        550e8400-e29b-41d4-a716-446655440032
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    companyId:
      name: companyId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Company identifier
    fileId:
      name: fileId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: File identifier
    placementId:
      name: placementId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Placement identifier
  responses:
    Unauthorized:
      description: Unauthorized - Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missingApiKey:
              summary: Missing API key
              value:
                error:
                  code: AuthenticationError
                  message: API key authentication required
                  userMessages:
                    - API key authentication required
            invalidApiKey:
              summary: >-
                Invalid API key (e.g. unknown key, or a Bearer token used
                instead of an API key)
              value:
                error:
                  code: AuthenticationError
                  message: Invalid API key
                  userMessages:
                    - Invalid API key
    Forbidden:
      description: Forbidden - Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            insufficientPermissions:
              summary: Insufficient permissions
              value:
                error:
                  code: AuthorizationError
                  message: User is not authorized to perform the requested action
                  userMessages:
                    - User is not authorized to perform the requested action
            companyMismatch:
              summary: A valid API key naming another company in the URL
              value:
                error:
                  code: AuthorizationError
                  message: API key is not scoped to the requested company
                  userMessages:
                    - API key is not scoped to the requested company
    InternalServerError:
      description: Internal Server Error - Unexpected error occurred
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internalError:
              summary: Unexpected server error
              value:
                error:
                  code: UncaughtActionError
                  message: Uncaught error occurred in <actionName>
                  userMessages:
                    - An unexpected error occurred. Please try again later.
  schemas:
    ErrorResponse:
      type: object
      description: Standard error response for all external API endpoints
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error code
              example: VALIDATION_ERROR
            message:
              type: string
              description: Human-readable error message
              example: 'submissionId: Required field is missing'
            userMessages:
              type: array
              description: >-
                Clean, verbatim-displayable messages — one entry per failure,
                free of error-code tags, field paths, and internal noise.
                Suitable for showing to end users as-is.
              items:
                type: string
              example:
                - Exposures of type 'company' require an address
            details:
              type: array
              description: Additional details for validation errors (field-level errors)
              items:
                type: object
                properties:
                  field:
                    type: string
                    description: The field that caused the error
                    example: submissionId
                  message:
                    type: string
                    description: Description of the field error
                    example: Required field is missing
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key authentication. Send your raw API key as the `Authorization`
        header value with NO scheme prefix — `Authorization: YOUR-API-KEY`. Do
        NOT prefix it with `Bearer ` or `ApiKey `, and do not use an `X-API-Key`
        header; those are not accepted.

````