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

# Create a scan

> Launch a new penetration test scan against the specified targets.



## OpenAPI

````yaml /openapi.json post /scans
openapi: 3.1.0
info:
  title: Strix API
  version: 1.0.0
  description: >-
    Public REST API for the Strix autonomous penetration testing platform.
    Manage scans, vulnerabilities, assets, schedules, API tokens, and webhooks.
servers:
  - url: /api/v1
    description: Strix v1 API
security:
  - BearerAuth: []
tags:
  - name: Scans
    description: Launch, monitor, and manage security scans.
  - name: Vulnerabilities
    description: View and triage discovered vulnerabilities.
  - name: Assets
    description: Domains and repositories registered for scanning.
  - name: Schedules
    description: Recurring scan schedules (Pro plan).
  - name: Tokens
    description: Manage API tokens for authentication.
  - name: Webhooks
    description: Configure webhook subscriptions for real-time event notifications.
  - name: Organization
    description: Workspace configuration for the authenticated organization.
  - name: Members
    description: Manage organization members and roles.
  - name: Invitations
    description: List and revoke organization invitations.
  - name: PR Reviews
    description: Automated security review of pull requests.
  - name: Connectors
    description: Network connectors for scanning internal/private targets.
  - name: Knowledge
    description: >-
      Organization knowledge base: documents, policies, and repo profiles that
      steer the agent.
  - name: Uploads
    description: Upload source/code/documentation archives for whitebox scans.
  - name: Integrations
    description: Third-party integrations (GitLab, Bitbucket, ticketing).
  - name: Chat
    description: Conversational agent sessions.
  - name: Analytics
    description: Aggregate dashboard analytics.
  - name: Test Users
    description: >-
      Per-domain test accounts (with optional MFA) the agent authenticates as
      during scans.
paths:
  /scans:
    post:
      tags:
        - Scans
      summary: Create a scan
      description: Launch a new penetration test scan against the specified targets.
      operationId: createScan
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScanRequest'
      responses:
        '200':
          description: Scan created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateScanResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/TierLimitError'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - BearerAuth:
            - scans:write
components:
  schemas:
    CreateScanRequest:
      type: object
      description: >-
        At least one target (domain_ids, repository_ids, or internal_targets)
        should be provided.
      properties:
        engagement_type:
          type: string
          enum:
            - code_review
            - live_test
            - internal_infra
            - compliance_pentest
          default: live_test
          description: >-
            Which engagement type this run is. Defaults to `live_test`
            server-side.
        domain_ids:
          type: array
          items:
            type: string
            format: uuid
        domain_paths:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Map of domain ID to specific paths to scan.
        repository_ids:
          type: array
          items:
            type: string
            format: uuid
        repository_branches:
          type: object
          additionalProperties:
            type: string
          description: Map of repository ID to branch name.
        credentials:
          type: array
          items:
            type: object
            properties:
              username:
                type: string
              password:
                type: string
              notes:
                type: string
              mfa_method:
                type: string
                enum:
                  - none
                  - totp
                  - email_otp
                  - magic_link
                description: Multi-factor method for authenticated scans.
              totp_secret:
                type: string
                description: Base32 TOTP secret, used when mfa_method is `totp`.
              mfa_email:
                type: string
                format: email
                description: >-
                  Inbox to read one-time codes / magic links from, used when
                  mfa_method is `email_otp` or `magic_link`.
              login_url:
                type: string
                format: uri
                description: Login page URL for this credential set.
            required:
              - username
              - password
        headers:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              value:
                type: string
              notes:
                type: string
            required:
              - name
              - value
        concerns:
          type: string
        focus:
          type: string
        context:
          type: string
        upload_ids:
          type: array
          items:
            type: string
        connector_id:
          type: string
        internal_targets:
          type: array
          items:
            type: string
        org_knowledge_enabled:
          type: boolean
        notify_on_completion:
          type: boolean
          description: Email the scan creator when the pentest finishes.
        notification_emails:
          type: array
          items:
            type: string
            format: email
          description: >-
            Extra addresses to CC on the completion email. Validated only when
            notify_on_completion is true.
    CreateScanResponse:
      type: object
      properties:
        scan_id:
          type: string
          format: uuid
        title:
          type: string
        status:
          $ref: '#/components/schemas/ScanStatus'
      required:
        - scan_id
        - title
        - status
    ScanStatus:
      type: string
      enum:
        - pending
        - running
        - completed
        - failed
        - cancelled
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
      required:
        - detail
    TierLimitErrorResponse:
      type: object
      properties:
        detail:
          type: string
        requiredTier:
          type: string
        code:
          type: string
      required:
        - detail
  responses:
    BadRequest:
      description: Bad request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    PaymentRequired:
      description: Out of credits. Buy more to keep running pentests.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TierLimitErrorResponse'
    TierLimitError:
      description: Plan or credit limit reached.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TierLimitErrorResponse'
    InternalError:
      description: Internal server error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API token obtained from the Tokens endpoint. Include as `Authorization:
        Bearer <token>`.

````