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

# Remove Targets (bulk)

> Remove up to 500 targets from a monitor in one request — by target ID (ids), by identifier (targets), or both. Identifiers are normalized exactly like Add Targets, so https://www.ACME.com/ removes acme.com. A LinkedIn company URL removes only the target that was added by that URL, never a linkedin_profile target that currently resolves to the same company. Entries that match nothing are returned in not_found and do not fail the request. This is a POST action rather than DELETE with a body because many HTTP clients and proxies drop DELETE bodies. Free (0 credits).



## OpenAPI

````yaml POST /monitors/{id}/targets/remove
openapi: 3.1.0
info:
  title: Monitoring API
  description: >-
    Manage account monitoring over REST. A monitor is a named group of watch
    targets (company domains, LinkedIn company pages, or LinkedIn member
    profiles) with its own signal-type selection and an optional webhook
    endpoint. Create monitors, add and remove targets, change what a monitor
    listens for, pause it, and delete it. The dashboard Monitoring page calls
    the same code path, so monitors created in either place are fully manageable
    from the other.
  license:
    name: MIT
  version: 2.0.0
servers:
  - url: https://www.trysignalbase.com/api/v2
security:
  - bearerAuth: []
paths:
  /monitors/{id}/targets/remove:
    post:
      summary: Remove Targets (bulk)
      description: >-
        Remove up to 500 targets from a monitor in one request — by target ID
        (ids), by identifier (targets), or both. Identifiers are normalized
        exactly like Add Targets, so https://www.ACME.com/ removes acme.com. A
        LinkedIn company URL removes only the target that was added by that URL,
        never a linkedin_profile target that currently resolves to the same
        company. Entries that match nothing are returned in not_found and do not
        fail the request. This is a POST action rather than DELETE with a body
        because many HTTP clients and proxies drop DELETE bodies. Free (0
        credits).
      operationId: removeMonitorTargets
      parameters:
        - $ref: '#/components/parameters/MonitorId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetsRemoveRequest'
            example:
              targets:
                - acme.com
                - linkedin.com/in/jane-doe
                - unknown.com
      responses:
        '200':
          description: Targets processed. removed holds the targets that were deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetsRemoveResponse'
              example:
                success: true
                data:
                  removed:
                    - id: 9530caa4-70c9-49a0-ae3a-dc7f3fe497c3
                      monitor_id: 29681a72-ed3d-41a8-b119-2c2942b34996
                      type: domain
                      value: acme.com
                      status: resolved
                      company:
                        id: 0b9f6f0e-2f0c-4a53-9a44-6d2b8a1c7e11
                        name: Acme
                        slug: acme
                        domain: acme.com
                        industry: Software
                        country: US
                      resolved_at: '2026-09-20T13:10:41.506Z'
                      last_signal_type: funding_round
                      last_signal_at: '2026-09-18T13:08:25.412Z'
                      created_at: '2026-09-20T13:10:41.507Z'
                    - id: 0279e977-424d-410a-b249-59c74038c187
                      monitor_id: 29681a72-ed3d-41a8-b119-2c2942b34996
                      type: linkedin_profile
                      value: linkedin.com/in/jane-doe
                      status: pending
                      company: null
                      resolved_at: null
                      last_signal_type: null
                      last_signal_at: null
                      created_at: '2026-09-20T13:10:41.507Z'
                  not_found:
                    - unknown.com
                  invalid: []
                  resolved_companies: 0
                meta:
                  endpoint: monitors.targets.remove
                  creditsUsed: 0
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/SubscriptionExpired'
        '404':
          $ref: '#/components/responses/MonitorNotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    MonitorId:
      name: id
      in: path
      required: true
      description: The monitor ID.
      schema:
        type: string
  schemas:
    TargetsRemoveRequest:
      type: object
      description: Provide ids, targets, or both.
      anyOf:
        - required:
            - ids
        - required:
            - targets
      properties:
        ids:
          type: array
          minItems: 1
          maxItems: 500
          items:
            type: string
          description: Target IDs to remove.
        targets:
          type: array
          minItems: 1
          maxItems: 500
          items:
            type: string
            minLength: 1
            maxLength: 500
          description: Identifiers to remove, in any form Add Targets accepts.
    TargetsRemoveResponse:
      type: object
      required:
        - success
        - data
        - meta
      properties:
        success:
          type: boolean
          const: true
        data:
          type: object
          required:
            - removed
            - not_found
            - invalid
            - resolved_companies
          properties:
            removed:
              type: array
              items:
                $ref: '#/components/schemas/Target'
              description: Targets deleted by this request.
            not_found:
              type: array
              items:
                type: string
              description: >-
                IDs and normalized identifiers that matched no target in this
                monitor.
            invalid:
              type: array
              items:
                type: string
              description: Entries of targets (as sent) that could not be parsed.
            resolved_companies:
              type: integer
              minimum: 0
              description: Distinct resolved companies left in the monitor.
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    Target:
      type: object
      required:
        - id
        - monitor_id
        - type
        - value
        - status
        - company
        - resolved_at
        - last_signal_type
        - last_signal_at
        - created_at
      properties:
        id:
          type: string
          description: Unique target ID (UUID).
        monitor_id:
          type: string
        type:
          $ref: '#/components/schemas/TargetType'
        value:
          type: string
          description: >-
            The normalized identifier: a bare domain (acme.com),
            linkedin.com/company/<slug>, or linkedin.com/in/<slug>.
        status:
          $ref: '#/components/schemas/TargetStatus'
        company:
          oneOf:
            - $ref: '#/components/schemas/TargetCompany'
            - type: 'null'
          description: Matched company; null while pending.
        resolved_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When the target was matched to its company; null while pending.
        last_signal_type:
          type:
            - string
            - 'null'
          description: >-
            Type of the company's most recent signal (any type, not only the
            monitor's signal_types), or null.
        last_signal_at:
          type:
            - string
            - 'null'
          format: date-time
          description: When that signal occurred, or null.
        created_at:
          type: string
          format: date-time
    ResponseMeta:
      type: object
      required:
        - endpoint
        - creditsUsed
      properties:
        endpoint:
          type: string
          description: Endpoint identifier (e.g. monitors.create).
        creditsUsed:
          type: integer
          minimum: 0
          description: >-
            API credits consumed by this request. Always 0 for the Monitoring
            API.
    ErrorResponse:
      type: object
      required:
        - success
        - error
        - code
      properties:
        success:
          type: boolean
          const: false
        error:
          type: string
          description: Human-readable error message.
        code:
          type: string
          enum:
            - bad_request
            - invalid_api_key
            - subscription_expired
            - not_found
            - rate_limited
            - internal_server_error
            - internal_error
        retryAfter:
          type: integer
          description: >-
            Seconds until a retry is recommended. Present on rate-limit (429)
            responses.
    TargetType:
      type: string
      enum:
        - domain
        - linkedin_company
        - linkedin_profile
      description: How the target was identified when it was added.
    TargetStatus:
      type: string
      enum:
        - resolved
        - pending
      description: >-
        resolved = matched to a company in the Signalbase database; its signals
        are delivered. pending = not matched yet; it is researched automatically
        and re-checked nightly, and delivers nothing until it resolves.
    TargetCompany:
      type: object
      required:
        - id
        - name
        - slug
        - domain
        - industry
        - country
      description: The company a resolved target was matched to.
      properties:
        id:
          type: string
          description: Signalbase company ID.
        name:
          type:
            - string
            - 'null'
        slug:
          type:
            - string
            - 'null'
        domain:
          type:
            - string
            - 'null'
        industry:
          type:
            - string
            - 'null'
        country:
          type:
            - string
            - 'null'
          description: Headquarters country code.
  responses:
    BadRequest:
      description: >-
        Invalid JSON or field values, an unknown signal type, a non-public
        webhook URL, no valid target in the request, or a team limit was reached
        (20 monitors, 1,000 targets).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: >-
              signal_types must be a non-empty array of: funding_round,
              acquisition, job_change, hiring
            code: bad_request
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Invalid API key. No key found.
            code: invalid_api_key
    SubscriptionExpired:
      description: The API key belongs to a team without an active subscription.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: >-
              Subscription expired. Please upgrade your subscription:
              https://www.trysignalbase.com/#pricing
            code: subscription_expired
    MonitorNotFound:
      description: No monitor with that ID exists for the authenticated team.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Monitor not found
            code: not_found
    RateLimited:
      description: >-
        Rate limit exceeded for this team and endpoint. The response also sets
        Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, and
        X-RateLimit-Reset headers.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: Too many requests. Please upgrade your plan or slow down.
            code: rate_limited
            retryAfter: 60
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            error: An unknown error occurred
            code: internal_error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Signalbase API key. Include as a Bearer token in the Authorization
        header.

````