Intruder Scans API

The Scans API from Intruder — 5 operation(s) for scans.

Operations 8

GET /v1/scans/ Lists current scans #
POST /v1/scans/ Starts a scan #
GET /v1/scans/schedules/ Lists scans schedules #
POST /v1/scans/schedules/ Creates a scan schedule #
PATCH /v1/scans/schedules/{id}/ Updates a scan schedule #
DELETE /v1/scans/schedules/{id}/ Deletes a scan schedule #
GET /v1/scans/{id}/ Retrieves scan details #
POST /v1/scans/{id}/cancel/ Cancels a scan #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/intruder:intruder-scans-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

intruder-scans-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Intruder Scans API
  version: 2.0.0 (v1)
  description: Intruder API documentation
  termsOfService: https://www.intruder.io/legal/terms
  contact:
    email: contact@intruder.io
servers:
- url: https://api.intruder.io
tags:
- name: Scans
paths:
  /v1/scans/:
    get:
      operationId: scans_list
      summary: Lists current scans
      parameters:
      - name: limit
        required: false
        in: query
        description: Number of results to return per page (the default is 25).
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - in: query
        name: scan_type
        schema:
          type: string
          enum:
          - advisory
          - assessment_schedule
          - cloud_security
          - cloudbot_new_target
          - container_image
          - new_service
          - rapid_remediation
        description: '* `assessment_schedule` - ASSESSMENT_SCHEDULE

          * `new_service` - NEW_SERVICE

          * `cloudbot_new_target` - CLOUDBOT_NEW_TARGET

          * `rapid_remediation` - RAPID_REMEDIATION

          * `advisory` - ADVISORY

          * `cloud_security` - CLOUD_SECURITY

          * `container_image` - CONTAINER_IMAGE'
      - in: query
        name: schedule_period
        schema:
          type: string
          enum:
          - daily
          - monthly
          - one_off
          - quarterly
          - weekly
        description: '* `monthly` - MONTHLY

          * `daily` - DAILY

          * `one_off` - ONE_OFF

          * `weekly` - WEEKLY

          * `quarterly` - QUARTERLY'
      - in: query
        name: status
        schema:
          type: string
          enum:
          - '0'
          - '8'
          - analysing_results
          - cancelled
          - cancelled_no_active_targets
          - cancelled_no_valid_targets
          - completed
          - in_progress
        description: 'Status to filter by. Valid choices are `in_progress`, `completed`, `cancelled`, `cancelled_no_active_targets` and `analysing_results`. Deprecated aliases: `0` (`completed`) and `8` (`cancelled`).


          * `in_progress` - IN_PROGRESS

          * `completed` - COMPLETED

          * `cancelled` - CANCELLED

          * `cancelled_no_active_targets` - CANCELLED_NO_ACTIVE_TARGETS

          * `cancelled_no_valid_targets` - CANCELLED_NO_VALID_TARGETS

          * `analysing_results` - ANALYSING_RESULTS

          * `0` - COMPLETED

          * `8` - CANCELLED'
      - in: query
        name: tag_names
        schema:
          type: array
          items:
            type: string
        description: Tag names to filter by, separated by commas. Returns scans that ran against at least one target carrying any of these tags.
        explode: false
        style: form
      tags:
      - Scans
      security:
      - Bearer: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedScanListList'
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
    post:
      operationId: scans_create
      description: Starts a scan. Optionally specify one or more target addresses and/or tags names in the request body. If no request body is provided, this starts a scan on all targets. You can have a maximum 500 active and scheduled scans.
      summary: Starts a scan
      tags:
      - Scans
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssessmentCreateRequest'
      security:
      - Bearer: []
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scan'
          description: ''
        '400':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Validation errors
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '404':
          content:
            application/json:
              schema:
                example:
                  detail: Not found
          description: ''
        '422':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Cannot have more than 500 active scans
          description: ''
        '500':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Something went wrong while starting the scan.
          description: ''
  /v1/scans/schedules/:
    get:
      operationId: scans_schedules_list
      summary: Lists scans schedules
      parameters:
      - in: query
        name: scan_all_targets
        schema:
          type: boolean
        description: Filter to schedules that scan every target. These are never returned by tag_names, since they are not scoped to any specific tag.
      - in: query
        name: tag_names
        schema:
          type: array
          items:
            type: string
        description: Tag names to filter by, separated by commas. Returns schedules set to scan any of these tags, or that explicitly include a target carrying any of them. Schedules that scan all targets are never returned.
        explode: false
        style: form
      tags:
      - Scans
      security:
      - Bearer: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssessmentScheduleListResponse'
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
    post:
      operationId: scans_schedules_create
      summary: Creates a scan schedule
      tags:
      - Scans
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssessmentSchedulesCreateUpdateRequest'
        required: true
      security:
      - Bearer: []
      responses:
        '201':
          content:
            application/json:
              schema:
                example:
                  id: 12345
                  notice: Scan scheduled
          description: ''
        '400':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Validation errors
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '500':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Something went wrong while creating the scan schedule.
          description: ''
  /v1/scans/schedules/{id}/:
    patch:
      operationId: scans_schedules_partial_update
      summary: Updates a scan schedule
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Scan schedule ID to update
        required: true
      tags:
      - Scans
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAssessmentSchedulesCreateUpdateRequest'
      security:
      - Bearer: []
      responses:
        '200':
          content:
            application/json:
              schema:
                example:
                  notice: Scan was updated.
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '404':
          content:
            application/json:
              schema:
                example:
                  detail: Not found
          description: ''
        '500':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Something went wrong while updating the scan schedule.
          description: ''
    delete:
      operationId: scans_schedules_destroy
      summary: Deletes a scan schedule
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Scan schedule ID to delete
        required: true
      tags:
      - Scans
      security:
      - Bearer: []
      responses:
        '204':
          description: No response body
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '404':
          content:
            application/json:
              schema:
                example:
                  detail: Not found
          description: ''
        '500':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Something went wrong while deleting the scan schedule.
          description: ''
  /v1/scans/{id}/:
    get:
      operationId: scans_retrieve
      summary: Retrieves scan details
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Scan ID to retrieve
        required: true
      tags:
      - Scans
      security:
      - Bearer: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Scan'
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '404':
          content:
            application/json:
              schema:
                example:
                  detail: Not found
          description: ''
  /v1/scans/{id}/cancel/:
    post:
      operationId: scans_cancel_create
      summary: Cancels a scan
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: Scan ID to cancel
        required: true
      tags:
      - Scans
      security:
      - Bearer: []
      responses:
        '200':
          content:
            application/json:
              schema:
                example: Scan was cancelled
          description: ''
        '401':
          content:
            application/json:
              schema:
                example:
                  detail: Access token is missing or invalid
          description: ''
        '404':
          content:
            application/json:
              schema:
                example:
                  detail: Not found
          description: ''
        '500':
          content:
            application/json:
              schema:
                example:
                  non_field_errors:
                  - Something went wrong while cancelling the scan.
          description: ''
components:
  schemas:
    AssessmentScheduleList:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        schedule_period:
          allOf:
          - $ref: '#/components/schemas/SchedulePeriodEnum'
          readOnly: true
        first_scan_time:
          type:
          - string
          - 'null'
          format: date-time
        next_scan_date:
          type: string
          format: date-time
        status:
          allOf:
          - $ref: '#/components/schemas/ScheduleStatusField'
          readOnly: true
        throttled:
          type: boolean
        web_ports_only:
          type: boolean
        latest_scan_id:
          type:
          - integer
          - 'null'
        latest_scan_status:
          oneOf:
          - $ref: '#/components/schemas/ScheduleLatestScanStatusField'
          - type: 'null'
          readOnly: true
        last_scan_start_time:
          type:
          - string
          - 'null'
          format: date-time
        last_scan_end_time:
          type:
          - string
          - 'null'
          format: date-time
        targets:
          type: array
          items:
            type: integer
          readOnly: true
        target_tags:
          type: array
          items:
            type: string
          readOnly: true
        upload_to_drata:
          type: boolean
        upload_to_vanta:
          type: boolean
        scan_all_targets:
          type: boolean
      required:
      - first_scan_time
      - id
      - last_scan_end_time
      - last_scan_start_time
      - latest_scan_id
      - latest_scan_status
      - name
      - next_scan_date
      - scan_all_targets
      - schedule_period
      - status
      - target_tags
      - targets
      - throttled
      - upload_to_drata
      - upload_to_vanta
      - web_ports_only
    PaginatedScanListList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=400&limit=100
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?offset=200&limit=100
        results:
          type: array
          items:
            $ref: '#/components/schemas/ScanList'
    Scan:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Name of the scan.
        status:
          allOf:
          - $ref: '#/components/schemas/ScanStatusField'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        target_addresses:
          type: array
          items:
            type: string
          description: Target addresses to include in scan.
        scan_type:
          allOf:
          - $ref: '#/components/schemas/ScanTypeEnum'
          readOnly: true
        throttled:
          type: boolean
          default: false
        web_ports_only:
          type: boolean
          default: false
        schedule_period:
          allOf:
          - $ref: '#/components/schemas/SchedulePeriodEnum'
          readOnly: true
        start_time:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
        completed_time:
          type:
          - string
          - 'null'
          format: date-time
          readOnly: true
      required:
      - completed_time
      - created_at
      - id
      - name
      - scan_type
      - schedule_period
      - start_time
      - status
    AssessmentSchedulesCreateUpdateRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        first_scan_time:
          type: string
          format: date-time
          example: '2026-02-23T03:00:00.000Z'
          description: 'First scan time. Must be in the future and on the hour. Example: 2026-02-23T03:00:00.000Z not 2026-02-23T12:34:56.789Z'
        scan_frequency:
          allOf:
          - $ref: '#/components/schemas/ScanFrequencyEnum'
          description: 'Scan frequency. One of: monthly, daily, weekly, quarterly.


            * `monthly` - monthly

            * `daily` - daily

            * `weekly` - weekly

            * `quarterly` - quarterly'
        tags:
          type: array
          items:
            type: string
          description: Tag names to include in scan.
        targets:
          type: array
          items:
            type: integer
          description: Target IDs to include in scan.
        throttled:
          type: boolean
          default: false
        web_ports_only:
          type: boolean
          default: false
        upload_to_drata:
          type: boolean
          default: false
        upload_to_vanta:
          type: boolean
          default: false
      required:
      - first_scan_time
      - name
      - scan_frequency
    ScanStatusField:
      type: string
      enum:
      - in_progress
      - completed
      - cancelled
      - cancelled_no_active_targets
      - cancelled_no_valid_targets
      - analysing_results
    SchedulePeriodEnum:
      type: string
      enum:
      - monthly
      - daily
      - one_off
      - weekly
      - quarterly
    ScheduleLatestScanStatusField:
      type: string
      enum:
      - in_progress
      - analysing_results
      - published
      - no_valid_targets
      - all_targets_missing_license
    ScanTypeEnum:
      enum:
      - assessment_schedule
      - new_service
      - cloudbot_new_target
      - rapid_remediation
      - advisory
      - cloud_security
      - container_image
      type: string
      description: '* `assessment_schedule` - ASSESSMENT_SCHEDULE

        * `new_service` - NEW_SERVICE

        * `cloudbot_new_target` - CLOUDBOT_NEW_TARGET

        * `rapid_remediation` - RAPID_REMEDIATION

        * `advisory` - ADVISORY

        * `cloud_security` - CLOUD_SECURITY

        * `container_image` - CONTAINER_IMAGE'
    ScheduleStatusField:
      type: string
      enum:
      - in_progress
      - scheduled
      - complete
      - stopped
    PatchedAssessmentSchedulesCreateUpdateRequest:
      type: object
      properties:
        name:
          type: string
          minLength: 1
        first_scan_time:
          type: string
          format: date-time
          example: '2026-02-23T03:00:00.000Z'
          description: 'First scan time. Must be in the future and on the hour. Example: 2026-02-23T03:00:00.000Z not 2026-02-23T12:34:56.789Z'
        scan_frequency:
          allOf:
          - $ref: '#/components/schemas/ScanFrequencyEnum'
          description: 'Scan frequency. One of: monthly, daily, weekly, quarterly.


            * `monthly` - monthly

            * `daily` - daily

            * `weekly` - weekly

            * `quarterly` - quarterly'
        tags:
          type: array
          items:
            type: string
          description: Tag names to include in scan.
        targets:
          type: array
          items:
            type: integer
          description: Target IDs to include in scan.
        throttled:
          type: boolean
          default: false
        web_ports_only:
          type: boolean
          default: false
        upload_to_drata:
          type: boolean
          default: false
        upload_to_vanta:
          type: boolean
          default: false
    ScanList:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          readOnly: true
          description: Name of the scan.
        status:
          allOf:
          - $ref: '#/components/schemas/ScanStatusField'
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        scan_type:
          allOf:
          - $ref: '#/components/schemas/ScanTypeEnum'
          readOnly: true
        schedule_period:
          allOf:
          - $ref: '#/components/schemas/SchedulePeriodEnum'
          readOnly: true
      required:
      - created_at
      - id
      - name
      - scan_type
      - schedule_period
      - status
    AssessmentScheduleListResponse:
      type: object
      properties:
        count:
          type: integer
        results:
          type: array
          items:
            $ref: '#/components/schemas/AssessmentScheduleList'
      required:
      - count
      - results
    AssessmentCreateRequest:
      type: object
      properties:
        name:
          type: string
          description: Optional name for the scan.
        target_addresses:
          type: array
          items: {}
          description: Target addresses to include in scan.
        tag_names:
          type: array
          items: {}
          description: Tag names to include in scan.
        throttled:
          type: boolean
          default: false
        web_ports_only:
          type: boolean
          default: false
    ScanFrequencyEnum:
      enum:
      - monthly
      - daily
      - weekly
      - quarterly
      type: string
      description: '* `monthly` - monthly

        * `daily` - daily

        * `weekly` - weekly

        * `quarterly` - quarterly'
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      in: header
      description: 'Value should be formatted: `Bearer <apiKey>`'
x-provenance:
  method: searched
  source: https://developers.intruder.io/reference
  harvested: '2026-10-20'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developers.intruder.io/reference/health_list-1.md
  - https://developers.intruder.io/reference/issues_list-1.md
  - https://developers.intruder.io/reference/issues_occurrences_comments_create.md
  - https://developers.intruder.io/reference/issues_occurrences_comments_list.md
  - https://developers.intruder.io/reference/issues_occurrences_list-1.md
  - https://developers.intruder.io/reference/issues_occurrences_scanner_output_list.md
  - https://developers.intruder.io/reference/issues_occurrences_snooze_create.md
  - https://developers.intruder.io/reference/issues_targets_list.md
  - https://developers.intruder.io/reference/licenses_list.md
  - https://developers.intruder.io/reference/occurrences_fixed_list.md
  - https://developers.intruder.io/reference/scans_cancel_create.md
  - https://developers.intruder.io/reference/scans_create-1.md
  - https://developers.intruder.io/reference/scans_list-1.md
  - https://developers.intruder.io/reference/scans_retrieve.md
  - https://developers.intruder.io/reference/scans_schedules_create.md
  - https://developers.intruder.io/reference/scans_schedules_destroy.md
  - https://developers.intruder.io/reference/scans_schedules_list.md
  - https://developers.intruder.io/reference/scans_schedules_partial_update.md
  - https://developers.intruder.io/reference/tags_list.md
  - https://developers.intruder.io/reference/targets_api_schemas_create.md
  - https://developers.intruder.io/reference/targets_api_schemas_destroy.md
  - https://developers.intruder.io/reference/targets_api_schemas_list.md
  - https://developers.intruder.io/reference/targets_api_schemas_partial_update.md
  - https://developers.intruder.io/reference/targets_authentications_create.md
  - https://developers.intruder.io/reference/targets_authentications_destroy.md
  - https://developers.intruder.io/reference/targets_authentications_list.md
  - https://developers.intruder.io/reference/targets_authentications_partial_update.md
  - https://developers.intruder.io/reference/targets_bulk_create.md
  - https://developers.intruder.io/reference/targets_create-1.md
  - https://developers.intruder.io/reference/targets_destroy.md
  - https://developers.intruder.io/reference/targets_list-1.md
  - https://developers.intruder.io/reference/targets_tags_create.md
  - https://developers.intruder.io/reference/targets_tags_destroy.md
  merge:
    pages: 33
    deduped: 72
    conflicts_kept_first: 0