Reports API - apviso [Skip to content](#main)[APVISO](/)Product

Resources

Developers

Company

[Pricing](/#pricing)[Partners](/partners)[Enterprise](/enterprise)

[Login](/login)[Get started](/register)

[Login](/login)[Start pentest](/register)

[Home](/)[Knowledge Base](/docs)[API Reference](/docs/api)ReportsReports
=======

Read a target's living reports and export them as PDF

GET`/v1/targets/:targetId/reports`

### List a target's living reports

Retrieve every living report the target owns — the whole-target report (nodeKey null) and any node-scoped ones. Each report is a rolling document: every pentest appends a new version rather than creating a separate report. Report bodies are omitted here for size; fetch a single report to get its markdown.

#### Path Parameters

NameTypeDescription`targetId`required

`string`Target ID (UUIDv7)

#### Example Request

bashCopy

```
curl -X GET "https://apviso.com/api/v1/targets/:targetId/reports" \
  -H "X-API-Key: apvk_your_key_here"
```

#### Response

Returns the target's living reports, most recently updated first.

jsonCopy

```
{
  "reports": [
    {
      "id": "019382f1-8c4a-7b21-9f3e-2a1b4c6d8e05",
      "targetId": "019382f1-3d2c-7a11-8e4f-1b2c3d4e5f60",
      "nodeKey": null,
      "title": "Security assessment — app.example.com",
      "snapshotCount": 4,
      "latestSnapshot": {
        "id": "019382f2-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
        "title": "Security assessment — app.example.com",
        "nodeKey": null,
        "scanId": "019382f0-9e8d-7c6b-5a4f-3e2d1c0b9a88",
        "pdfUrl": null,
        "findingsSummary": {
          "critical": 1,
          "high": 3,
          "medium": 5
        },
        "generatedAt": "2026-07-29T09:14:22.000Z"
      },
      "updatedAt": "2026-07-29T09:14:22.000Z"
    }
  ]
}
```

GET`/v1/targets/:targetId/reports/:reportId`

### Get a report with its version history

Retrieve a single living report: the latest version's markdown plus every past version, newest first. Each snapshot carries its own markdown so you can diff or render any previous version.

Replaces the retired GET /v1/scans/:scanId/report. Reports are now owned by the target rather than a single pentest; use the snapshot list to find the version produced by a particular run via its scanId.

#### Path Parameters

NameTypeDescription`targetId`required

`string`Target ID (UUIDv7)`reportId`required

`string`Report ID (UUIDv7)

#### Example Request

bashCopy

```
curl -X GET "https://apviso.com/api/v1/targets/:targetId/reports/:reportId" \
  -H "X-API-Key: apvk_your_key_here"
```

#### Response

Returns the report with its latest markdown and full version history.

jsonCopy

```
{
  "report": {
    "id": "019382f1-8c4a-7b21-9f3e-2a1b4c6d8e05",
    "targetId": "019382f1-3d2c-7a11-8e4f-1b2c3d4e5f60",
    "targetDomain": "app.example.com",
    "nodeKey": null,
    "title": "Security assessment — app.example.com",
    "markdownContent": "# Security assessment — app.example.com\n\n## Summary\n...",
    "pdfUrl": null,
    "latestSnapshotId": "019382f2-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
    "snapshots": [
      {
        "id": "019382f2-1a2b-7c3d-8e4f-5a6b7c8d9e0f",
        "title": "Security assessment — app.example.com",
        "nodeKey": null,
        "scanId": "019382f0-9e8d-7c6b-5a4f-3e2d1c0b9a88",
        "markdownContent": "# Security assessment — app.example.com\n\n## Summary\n...",
        "pdfUrl": null,
        "findingsSummary": {
          "critical": 1,
          "high": 3
        },
        "generatedAt": "2026-07-29T09:14:22.000Z"
      }
    ],
    "updatedAt": "2026-07-29T09:14:22.000Z"
  }
}
```

POST`/v1/targets/:targetId/reports/:reportId/pdf`

### Generate a PDF for a report

Render the report's latest version to a branded PDF and store it. Returns the storage path; use the download endpoint to fetch the bytes. Rate limited to 30 requests per minute.

Each report version renders to its own file, so generating a new version never overwrites the PDF of an older one.

#### Path Parameters

NameTypeDescription`targetId`required

`string`Target ID (UUIDv7)`reportId`required

`string`Report ID (UUIDv7)

#### Example Request

bashCopy

```
curl -X POST "https://apviso.com/api/v1/targets/:targetId/reports/:reportId/pdf" \
  -H "X-API-Key: apvk_your_key_here"
```

#### Response

Returns ready=true and the storage path of the rendered PDF.

jsonCopy

```
{
  "ready": true,
  "pdfUrl": "reports/target/019382f1-8c4a-7b21-9f3e-2a1b4c6d8e05/snapshot-019382f2-1a2b-7c3d-8e4f-5a6b7c8d9e0f.pdf"
}
```

GET`/v1/targets/:targetId/reports/:reportId/pdf/download`

### Download a report PDF

Download the report PDF as a binary stream. If the PDF has not been generated yet (or the stored file is missing) it is rendered on demand. Rate limited to 30 requests per minute.

#### Path Parameters

NameTypeDescription`targetId`required

`string`Target ID (UUIDv7)`reportId`required

`string`Report ID (UUIDv7)

#### Example Request

bashCopy

```
curl -X GET "https://apviso.com/api/v1/targets/:targetId/reports/:reportId/pdf/download" \
  -H "X-API-Key: apvk_your_key_here"
```

#### Response

Returns the PDF file with Content-Disposition: attachment.

jsonCopy

```
Binary PDF stream (Content-Type: application/pdf)
```

[Back to API Reference](/docs/api)

[Overview](#overview)[GET /v1/targets/:targetId/reports](#list-target-reports)[GET /v1/targets/:targetId/reports/:reportId](#get-target-report)[POST /v1/targets/:targetId/reports/:reportId/pdf](#generate-target-report-pdf)[GET /v1/targets/:targetId/reports/:reportId/pdf/download](#download-target-report-pdf)

[APVISO](/)Autonomous AI-powered penetration testing for modern web applications.

Subscribe

[](https://github.com/apviso)[](https://x.com/Apviso_com)[](https://www.linkedin.com/company/apviso/)

[![Featured on Good AI Tools](https://goodaitools.com/assets/images/badge.png)](https://goodaitools.com/ai/apviso)

Product

- [Features](/#features)
- [Sentinel](/sentinel)
- [Pricing](/pricing)
- [Integrations](/integrations)
- [Benchmarks](/#compare)
- [Affiliate Program](/affiliate)
- [Partners](/partners)
- [Enterprise](/enterprise)

Resources

- [Blog](/blog)
- [Use Cases](/use-cases)
- [Glossary](/glossary)
- [Comparisons](/comparisons)
- [Alternatives](/alternatives)
- [Compliance](/compliance)
- [Vulnerabilities](/vulnerabilities)
- [Industries](/industries)
- [OWASP APTS](/trust/apts)

Developers

- [Knowledge Base](/docs)
- [API Reference](/docs/api)
- [MCP Server](/docs/mcp)

Company

- [About](/about)
- [Contact](/contact)
- [Status](https://status.apviso.com)
- [Privacy Policy](/legal/privacy)
- [Terms of Service](/legal/terms)

© 2026 APVISO. All rights reserved.
