> ## 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.

# Export scan report as a download link

> Generate a report for a completed scan and return a short-lived signed download link instead of the file. Same options and plan requirements as `GET /scans/{scanId}/report`; use this from clients that cannot receive a file, such as the Strix MCP. The link expires after one hour and the file is deleted shortly after. Report downloads require an Enterprise plan. On Pro, each organization can download one technical PDF report for free; it stays free to re-download for that scan.



## OpenAPI

````yaml /openapi.json post /scans/{scanId}/report/exports
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: Search
    description: Search across issues, pentests, PR reviews, chats, assets and schedules.
  - 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.
  - name: License
    description: Self-hosted license state, entitlements, and aggregate usage.
  - name: Supply Chain
    description: >-
      SBOM inventory, supply-chain findings, scans, and policy for connected
      repositories.
  - name: CLI
    description: >-
      Device authorization endpoints that let the Strix CLI and coding agents
      sign in and receive an API token.
  - name: Billing
    description: Credit balance, agent-payable top-ups, and automatic top-up settings.
  - name: Workspaces
    description: List, create, and switch workspaces.
  - name: Asset Discovery
    description: >-
      Passive reconnaissance runs that map the organization's external attack
      surface, and the discovered-asset inventory they fill.
  - name: Containers
    description: >-
      Container registries, tracked images, image scans, findings, and SBOM
      components.
  - name: Run Logs
    description: Persisted engine logs and the diagnostics bundle of a self-hosted install.
paths:
  /scans/{scanId}/report/exports:
    post:
      tags:
        - Scans
      summary: Export scan report as a download link
      description: >-
        Generate a report for a completed scan and return a short-lived signed
        download link instead of the file. Same options and plan requirements as
        `GET /scans/{scanId}/report`; use this from clients that cannot receive
        a file, such as the Strix MCP. The link expires after one hour and the
        file is deleted shortly after. Report downloads require an Enterprise
        plan. On Pro, each organization can download one technical PDF report
        for free; it stays free to re-download for that scan.
      operationId: createScanReportExport
      parameters:
        - $ref: '#/components/parameters/ScanId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanReportExportRequest'
      responses:
        '201':
          description: Report rendered and stored; the link is ready to download.
          content:
            application/json:
              schema:
                type: object
                required:
                  - export
                properties:
                  export:
                    $ref: '#/components/schemas/ScanReportExport'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - BearerAuth:
            - scans:read
components:
  parameters:
    ScanId:
      description: UUID of the scan. Use the `id` field of a scan from `listScans`.
      name: scanId
      in: path
      required: true
      schema:
        type: string
        format: uuid
  schemas:
    ScanReportExportRequest:
      type: object
      description: >-
        Report options. Every field is optional; the default is the standard
        technical PDF with Strix branding.
      properties:
        format:
          type: string
          enum:
            - technical
            - retest
            - attestation
            - executive_summary
          default: technical
          description: >-
            Report format. Formats other than "technical" require an Enterprise
            plan.
        file_type:
          type: string
          enum:
            - pdf
            - docx
          default: pdf
          description: File type for the rendered report. DOCX requires an Enterprise plan.
        provider_name:
          type: string
          maxLength: 80
          description: >-
            White-label provider name shown on the report cover (Enterprise
            branding). Trimmed to 80 characters.
        client_name:
          type: string
          maxLength: 120
          description: >-
            Client name the report is prepared for, shown in place of the
            organization name (Enterprise branding). Trimmed to 120 characters.
        prepared_by:
          type: array
          maxItems: 2
          description: >-
            Up to two team members credited as authors of the assessment
            (Enterprise branding).
          items:
            type: object
            properties:
              name:
                type: string
                maxLength: 120
              email:
                type: string
                format: email
                maxLength: 120
    ScanReportExport:
      type: object
      required:
        - id
        - scan_id
        - format
        - file_type
        - filename
        - content_type
        - size_bytes
        - url
        - expires_at
      properties:
        id:
          type: string
          format: uuid
          description: Identifier of this export.
        scan_id:
          type: string
          format: uuid
        format:
          type: string
          enum:
            - technical
            - retest
            - attestation
            - executive_summary
        file_type:
          type: string
          enum:
            - pdf
            - docx
        filename:
          type: string
          description: Suggested filename; the link also sets it as the download name.
        content_type:
          type: string
          description: Media type of the file behind the link.
        size_bytes:
          type: integer
          description: Size of the rendered report in bytes.
        url:
          type: string
          format: uri
          description: >-
            Signed download link. Anyone holding it can download the report
            until it expires, so treat it like the report itself.
        expires_at:
          type: string
          format: date-time
          description: When the link stops working.
    ErrorResponse:
      type: object
      properties:
        detail:
          type: string
          description: Human-readable explanation of the error.
        code:
          type: string
          description: >-
            Stable machine-readable error code. `insufficient_scope` means the
            token does not hold the scope that this endpoint requires.
        required_scope:
          $ref: '#/components/schemas/ApiV1Scope'
          description: >-
            Scope that the caller must add to the token. Returned with the
            `insufficient_scope` code.
        docs:
          type: string
          format: uri
          description: Documentation page that explains how to resolve the error.
        hint:
          type: string
          description: >-
            One instruction that resolves the error. For `insufficient_scope`, a
            CLI session gets the `strix cloud session scopes set full` or `strix
            cloud login --scope-profile full` command, and an API token gets the
            settings page where the user creates a token with the scope. When
            the owner's role cannot hold the scope, the hint asks for a role
            change instead.
      required:
        - detail
    ApiV1Scope:
      type: string
      enum:
        - scans:read
        - scans:write
        - vulnerabilities:read
        - vulnerabilities:write
        - dependencies:read
        - schedules:read
        - schedules:write
        - assets:read
        - assets:write
        - organizations:read
        - organizations:write
        - members:read
        - members:write
        - invitations:read
        - invitations:write
        - webhooks:read
        - webhooks:write
        - tokens:write
        - audit:read
        - pr_reviews:read
        - pr_reviews:write
        - connectors:read
        - connectors:write
        - knowledge:read
        - knowledge:write
        - uploads:write
        - integrations:read
        - integrations:write
        - chat:read
        - chat:write
        - scans:message
        - analytics:read
        - llm:read
        - llm:write
        - test_users:read
        - test_users:write
        - discovery:read
        - discovery:write
        - license:read
        - supply_chain:read
        - supply_chain:write
        - billing:read
        - billing:write
        - containers:read
        - containers:write
        - logs:read
  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'
    Forbidden:
      description: >-
        Insufficient permissions or missing scope. A missing scope returns the
        `insufficient_scope` code, the `required_scope` field, and a `hint` with
        the command or page that grants the scope, so a client can request the
        correct scope and retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    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 or CLI device login. Include
        as `Authorization: Bearer <token>`. Requests made with a managed CLI
        session also include `X-Strix-Workspace: <organization_id>` to pin a
        process to the workspace it started in; recovery endpoints report the
        current workspace after a concurrent switch.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.