Tenable Exports API
With the Exports API, you can manage asynchronous finding exports. Use these endpoints to initiate export jobs, monitor status, and download results in chunks for integration with external workflow management systems.
With the Exports API, you can manage asynchronous finding exports. Use these endpoints to initiate export jobs, monitor status, and download results in chunks for integration with external workflow management systems.
openapi: 3.0.0
info:
version: 1.0.0
title: Downloads About Exports API
description: 'The Downloads API enables customers to access and download installation and update files for available Tenable products. You can use the API endpoints to list product pages, list downloads available for a specific product, and to download a file. The endpoints can also be used to determine and download the latest version of a file to facilitate the automation of an installation.
**Note:** The Tenable Downloads API uses a different server URL than the Tenable Vulnerability Management API:
`https://www.tenable.com/downloads/api/v2/pages`.
### Authentication
Like the Downloads website, certain files require authentication to download. When files have a `"requires_auth": true` attribute on the product list page, the Downloads API uses bearer token authentication and requires a valid token in the Authorization header to download the file:
```
Authorization: Bearer AbCdEf123456
```
To access or reset your authentication token, navigate to the [Authentication Token](https://www.tenable.com/downloads/api-docs) page.
Examples of product downloads that **do not** require authentication include Nessus and Nessus Agents.'
servers:
- url: https://www.tenable.com/downloads/api/v2
security:
- Bearer: []
tags:
- name: Exports
description: With the Exports API, you can manage asynchronous finding exports. Use these endpoints to initiate export jobs, monitor status, and download results in chunks for integration with external workflow management systems.
paths:
/was/v1/export/vulns:
post:
summary: Export findings
description: "Exports Tenable Web App Scanning findings that match the request criteria. \n\nUsers need at least BASIC [16] user permissions and the Can View access control permission for the asset objects they want to export. You can set the Can View permission for the All Assets object for all assets. ADMINISTRATOR [64] users can export without the explicit Can View access control permissions. \n\n**Caution**: The `vpr_v2_score` filter parameter is scheduled for deprecation on July 1, 2026 as part of the transition to VPR v2. To ensure continued functionality, update all integrations to use the `vpr_score` filter parameter. On the deprecation date, the system will update `vpr_score` to support the new VPR model. For more information, see [Vulnerability Priority Rating: Transition to VPR Version 2](changelog:vulnerability-priority-rating-transition-to-version-2). \n\n**Note:** There are limits for concurrent export requests. For more information, see [Concurrency Limiting](doc:concurrency-limiting) and [Rate Limiting](doc:rate-limiting). <div class=\"perms-callout\">Requires the Basic [16] user role and the Can View access control permission for the asset objects to be exported. Administrator [64] users can export without the explicit Can View access control permissions. See [Roles](doc:roles).</div>"
operationId: was-export-findings
tags:
- Exports
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
num_assets:
type: integer
description: Specifies the number of assets used to chunk the findings. The findings export is split up by number of asset IDs in a chunk. The exported data of a chunk is the sum of all the findings for each asset in that chunk. The range for number of assets in a chunk is a minimum of 50 (the default size) to a maximum of 5,000. If you specify a value outside this range, the system uses the upper or lower-bound value.
format: int32
default: 50
minimum: 50
maximum: 5000
include_unlicensed:
type: boolean
default: false
description: Specifies whether or not to include unlicensed assets. The default is `false` when no parameter is specified.
filters:
type: object
description: 'Specifies filters to apply to the findings export.
**Note:** By default, vulnerability exports will only include accepted and non-accepted vulnerabilities found or fixed within the last 30 days if no time-based filters are submitted with the request.'
properties:
asset_uuid:
description: A list of asset UUIDs for which you want to filter findings returned in the findings export.
type: array
items:
type: string
format: uuid
asset_name:
description: An asset name for which you want to filter findings returned in the findings export.
type: string
cvss4_base_score:
$ref: '#/components/schemas/cvss4_filter'
epss_score:
$ref: '#/components/schemas/epss_filter'
first_found:
description: Returns findings that were first found between the specified date and now. The date must be specified in Unix 10-digit time format (seconds).
type: integer
format: int64
last_fixed:
type: integer
description: Returns findings that were fixed between the specified date and now. The date must be specified in Unix 10-digit time format (seconds).
format: int64
last_found:
type: integer
description: Returns findings that were last found between the specified date and now. The date must be specified in Unix 10-digit time format (seconds).
format: int64
indexed_at:
type: integer
description: Returns findings that were indexed into Tenable Web App Scanning at the specified date. The date must be specified in Unix 10-digit time format (seconds).
format: int64
ipv4s:
description: A list of IPv4 addresses for which for which you want to filter findings returned in the findings export.
type: array
items:
type: string
owasp_2010:
description: A list of chapters from the OWASP Categories 2010 report for which you want to filter findings returned in the findings export.
type: array
items:
type: string
enum:
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- A10
owasp_2013:
description: A list of chapters from the OWASP Categories 2013 report for which you want to filter findings returned in the findings export.
type: array
items:
type: string
enum:
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- A10
owasp_2017:
description: A list of chapters from the OWASP Categories 2017 report for which you want to filter findings returned in the findings export.
type: array
items:
type: string
enum:
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- A10
owasp_2021:
description: A list of chapters from the OWASP Categories 2021 report for which you want to filter findings returned in the findings export.
type: array
items:
type: string
enum:
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- A10
owasp_api_2019:
description: A list of chapters from the OWASP Categories API 2019 report for which you want to filter findings returned in the findings export.
type: array
items:
type: string
enum:
- API1
- API2
- API3
- API4
- API5
- API6
- API7
- API8
- API9
- API10
plugin_ids:
description: A list of plugin IDs for which you want to filter the findings returned in the findings export. If your request omits this parameter, the export includes all findings regardless of plugin ID.
type: array
items:
type: integer
severity:
description: "Returns findings with the specified severity. Defaults to all severity levels. The severity of a finding is defined using the Common Vulnerability Scoring System (CVSS) base score. Supported array values are:\n - info—The finding has a CVSS score of 0.\n - low—The finding has a CVSS score between 0.1 and 3.9.\n - medium—The finding has a CVSS score between 4.0 and 6.9.\n - high—The finding has a CVSS score between 7.0 and 9.9.\n - critical—The finding has a CVSS score of 10.0."
type: array
items:
type: string
enum:
- INFO
- LOW
- MEDIUM
- HIGH
- CRITICAL
severity_modification_type:
description: "Returns findings with the specified severity modification type. This filter can be used to return findings with a modified severity due to a recast or accept rule. Supported case-sensitive values are:\n - NONE—No modification to the severity has been made.\n - RECASTED—A user has recast the risk associated with the finding.\n - ACCEPTED—A user has accepted the risk associated with the finding."
type: array
items:
type: string
enum:
- NONE
- RECASTED
- ACCEPTED
since:
type: integer
description: "The start date for the range of data you want to export. The date must be specified in Unix 10-digit time format (seconds). Use this filter in conjunction with the state filter as follows:\n - If the state filter is set to `OPEN` or `REOPENED`, the export includes data for findings that were seen on or after the since date you specify.\n - If the state filter is set to `FIXED`, the export includes data for findings that were fixed on or after the since date you specify.\n - If you do not include the `state` filter in your request, the export includes data for `OPEN` and `REOPENED` findings that were seen on or after the since date you specify, and `FIXED` findings that were fixed on or after the since date you specify.\n**Note:** This filter cannot be used in conjunction with the `first_found`, `last_found`, or `last_fixed` filters."
format: int64
state:
description: "Returns findings with the specified state. Supported, case-insensitive values are:\n - OPEN—The finding is currently present on an asset.\n - REOPENED—The finding was previously marked as fixed on an asset but has returned.\n - FIXED—The finding was present on an asset but is no longer detected.\n\nThis parameter is required if your request includes `first_found`, `last_found`, or `last_fixed` parameters. If your request omits this parameter, the export includes default states `OPEN` and `REOPENED` only.\n\nNote that the API uses different terms for finding states than the user interface. The `new` and `active` states in the user interface map to the `OPEN` state in the API. The `resurfaced` state in the user interface maps to the `REOPENED` state in the API. The `FIXED` state is the same."
type: array
items:
type: string
enum:
- OPEN
- REOPENED
- FIXED
vpr_score:
$ref: '#/components/schemas/vpr_filter'
vpr_v2_score:
$ref: '#/components/schemas/vpr_v2_filter'
responses:
'200':
description: Returned if a WAS findings export request was queued successfully.
content:
application/json:
schema:
type: object
properties:
export_uuid:
type: string
description: The UUID of the WAS findings export job.
examples:
response:
value:
export_uuid: bf765455-53aa-4e70-9ef3-87cfca1d2be0
'400':
description: Returned if your request specified invalid parameters or if your request was improperly formatted.
'401':
description: Returned if the API keys specified in your request are invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 401
error: Unauthorized
message: Invalid credentials.
'403':
description: Returned if you do not have permission to export WAS findings.
'409':
description: Returned if your request was a duplicate of an ongoing export that was already submitted. Tenable Web App Scanning prevents duplicate exports from running concurrently. For example, export requests with the same filters.
content:
application/json:
schema:
type: object
properties:
active_job_id:
type: string
description: The UUID of ongoing WAS findings export job that was already submitted.
failure_reason:
type: string
description: A description of the conflict.
examples:
response:
value:
active_job_id: a55181e3-a551-4b9b-9c17-b019412cc35c
failure_reason: The request could not be completed due to a conflict with the ongoing export
'429':
description: Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](doc:rate-limiting) and [Concurrency Limiting](doc:concurrency-limiting).
content:
text/html:
examples:
response:
value: "<html>\n\n<head>\n <title>429 Too Many Requests</title>\n</head>\n\n<body bgcolor=\"white\">\n <center>\n <h1>429 Too Many Requests</h1>\n </center>\n <hr>\n <center>nginx</center>\n</body>\n\n</html>"
'500':
description: Returned if an internal error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 500
error: Internal Server Error
message: An internal server error occurred. Please wait a moment and try your request again.
/was/v1/export/vulns/{export_uuid}/status:
get:
summary: Get findings export status
description: "Returns the status of a Tenable Web App findings export request. Tenable Web App Scanning processes the chunks in parallel so the chunks may not complete in order, and the chunk IDs may not be arranged sequentially in the completed output.\n\n **Note:** Output for an individual plugin is limited to 1,024 KB (1 MB). <div class=\"perms-callout\">Requires the Basic [16] user role. See [Roles](doc:roles).</div>"
operationId: was-export-findings-status
tags:
- Exports
parameters:
- description: The UUID for the WAS findings export request to retrieve the status for.
required: true
name: export_uuid
in: path
schema:
type: string
description: The unique identifier of an export request. This value corresponds to the value returned in the [/was/v1/export/vulns](ref:was-export-vulns) response message.
responses:
'200':
description: Returned if the status for the specified WAS findings export was retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/response-findings-export-status'
examples:
response:
value:
uuid: 2d1a9cd9-85d6-4e63-9483-9b7b82a0914b
status: FINISHED
chunks_available:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
chunks_failed: []
chunks_cancelled: []
total_chunks: 10
chunks_available_count: 10
empty_chunks_count: 0
finished_chunks: 10
filters:
first_found: 1540350772
last_fixed: 0
last_found: 0
indexed_at: 0
since: 0
severity:
- CRITICAL
state:
- OPEN
- REOPENED
num_assets_per_chunk: 100
created: 1732582685595
'400':
description: Returned if your request specified invalid parameters or if your request was improperly formatted.
'401':
description: Returned if the API keys specified in your request are invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 401
error: Unauthorized
message: Invalid credentials.
'403':
description: Returned if you do not have permission to view the WAS findings export status.
'404':
description: Returned if Tenable Web App Scanning could not find the specified WAS findings export job.
'429':
description: Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](doc:rate-limiting).
content:
text/html:
examples:
response:
value: "<html>\n\n<head>\n <title>429 Too Many Requests</title>\n</head>\n\n<body bgcolor=\"white\">\n <center>\n <h1>429 Too Many Requests</h1>\n </center>\n <hr>\n <center>nginx</center>\n</body>\n\n</html>"
'500':
description: Returned if an internal error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 500
error: Internal Server Error
message: An internal server error occurred. Please wait a moment and try your request again.
/was/v1/export/vulns/status:
get:
summary: List findings export jobs
description: Retrieves a list of WAS findings export jobs. This list includes the 1,000 most recent export jobs regardless of status. However, this list includes completed jobs only if the job completed in the previous three days. <div class="perms-callout">Requires the Basic [16] user role. See [Roles](doc:roles).</div>
operationId: was-export-findings-jobs-list
tags:
- Exports
responses:
'200':
description: Returned if the list of WAS findings export jobs was retrieved successfully.
content:
application/json:
schema:
type: object
properties:
exports:
type: array
items:
$ref: '#/components/schemas/response-findings-export-jobs'
examples:
response:
value:
exports:
- uuid: 447ea9b1-447e-4aa1-aba1-deaacb38a9cf
status: FINISHED
total_chunks: 0
chunks_available_count: 0
empty_chunks_count: 0
finished_chunks: 0
filters:
state:
- OPEN
- REOPENED
since: 1611102529
first_found: 0
last_found: 0
last_fixed: 0
indexed_at: 0
num_assets_per_chunk: 50
created: 1613694529186
- uuid: 69c201d1-9afd-4a4a-8acf-43c367ab03bf
status: FINISHED
total_chunks: 0
chunks_available_count: 0
empty_chunks_count: 0
finished_chunks: 0
filters:
state:
- OPEN
- REOPENED
since: 1611102552
first_found: 0
last_found: 0
last_fixed: 0
indexed_at: 0
num_assets_per_chunk: 50
created: 1613694552649
- uuid: 95eae0fe-1272-4495-a63b-639bd2a2f4f2
status: ERROR
total_chunks: 0
chunks_available_count: 0
empty_chunks_count: 0
finished_chunks: 0
filters:
severity:
- LOW
state:
- FIXED
since: 0
first_found: 0
last_found: 0
last_fixed: 0
indexed_at: 0
vpr_score:
eq:
- 2
neq:
- 3
gt: 0
gte: 0
lt: 0
lte: 0
vpr_v2_score:
eq:
- 2
neq:
- 3
gt: 0
gte: 0
lt: 0
lte: 0
epss_score:
eq:
- 10
neq:
- 20
gt: 30
gte: 40
lt: 90
lte: 80
cvss4_base_score:
eq:
- 5
neq:
- 2
gt: 0
gte: 0
lt: 0
lte: 0
plugin_ids:
- 0
num_assets_per_chunk: 50
created: 1614377678711
'400':
description: Returned if your request specified invalid parameters or if your request was improperly formatted.
'401':
description: Returned if the API keys specified in your request are invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 401
error: Unauthorized
message: Invalid credentials.
'403':
description: Returned if you do not have permissions to list WAS findings export jobs.
'429':
description: Returned if you attempt to send too many requests in a specific period of time. For more information, see [Rate Limiting](doc:rate-limiting).
content:
text/html:
examples:
response:
value: "<html>\n\n<head>\n <title>429 Too Many Requests</title>\n</head>\n\n<body bgcolor=\"white\">\n <center>\n <h1>429 Too Many Requests</h1>\n </center>\n <hr>\n <center>nginx</center>\n</body>\n\n</html>"
'500':
description: Returned if an internal error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
response:
value:
statusCode: 500
error: Internal Server Error
message: An internal server error occurred. Please wait a moment and try your request again.
/was/v1/export/vulns/{export_uuid}/chunks/{chunk_id}:
get:
summary: Download findings export chunk
description: 'Downloads exported WAS findings as a JSON file. The response content type is `application/octet-stream`.
Chunks are available for download for up to 24 hours after they have been created. Tenable Web App Scanning returns a 404 message for expired chunks. Export chunks do not include an attribute if that attribute is empty in the vulnerability record.
A successful response message contains attributes that correspond to CVSS metrics; these metrics are described fully in the following documents:<ul><li>[A Complete Guide to the Common Vulnerability Scoring System, Version 2.0](https://www.first.org/cvss/v2/guide)</li><li>[Common Vulnerability Scoring System v3.0: Specification Document](https://www.first.org/cvss/specification-document)</li></ul><div class="perms-callout">Requires the Basic [16] user role. See [Roles](doc:roles).</div>'
operationId: was-export-findings-download-chunk
tags:
- Exports
x-readme:
explorer-enabled: false
parameters:
- description: The UUID of the WAS findings export job.
required: true
name: export_uuid
in: path
schema:
type: string
- description: The ID of the chunk you want to export.
required: true
name: chunk_id
in: path
schema:
type: integer
format: int32
responses:
'200':
description: Returned if the findings export chunk was retrieved successfully.
content:
application/octet-stream:
schema:
description: ''
type: array
items:
$ref: '#/components/schemas/response-was-findings-chunk'
examples:
response:
value:
- finding_id: 044a6c5f-3b1c-5c2d-bc76-36e0072ab19c
url: https://www.unixtimestamp.com/contact.php
output: 'Current Version: 2.2.4
Fixed Version: 3.0.0
Detected technology URL: https://www.unixtimestamp.com/contact.php'
state: OPEN
severity: MEDIUM
severity_id: 2
severity_default_id: 2
severity_modification_type: NONE
first_found: '2024-02-01T16:08:41Z'
last_found: '2024-02-01T16:08:41Z'
indexed_at: '2024-02-01T16:08:41Z'
plugin:
bid:
- '105658'
id: 112435
risk_factor: MEDIUM
original_risk_factor_num: 2
locale: en
type: REMOTE
intel_type: SENSOR
name: jQuery 1.12.4 < 3.0.0 Cross-Site Scripting
publication_date: '2018-11-05T00:00:00Z'
modification_date: '2023-03-14T00:00:00Z'
see_also:
- https://github.com/jquery/jquery/issues/2432
- https://github.com/jquery/jquery/pull/2588/commits/c254d308a7d3f1eac4d0b42837804cfffcba4bb2
solution: Upgrade to jQuery version 3.0.0 or later.
synopsis: jQuery 1.12.4 < 3.0.0 Cross-Site Scripting
description: 'According to its self-reported version number, jQuery is at least 1.4.0 and prior to 1.12.0 or at least 1.12.4 and prior to 3.0.0-beta1. Therefore, it may be affected by a cross-site scripting vulnerability due to cross-domain ajax request performed without the dataType.
Note that the scanner has not tested for these issues but has instead relied only on the application''s self-reported version number.'
patch_publication_date: '2018-01-18T00:00:00Z'
exploitability_ease: No known exploits are available
public_display: 112435
policy: []
xrefs:
- type: owasp_asvs
id:
- 4.0.2-14.2.1
- 4.0.2-5.3.3
- type: capec
id:
- '209'
- '588'
- '591'
- '592'
- '63'
- '85'
- type: hipaa
id:
- 164.306(a)(1)
- 164.306(a)(2)
- type: iso
id:
- 27001-A.14.2.5
- type: nist
id:
- sp800_53-CM-6b
- sp800_53-SI-10
- type: disa_stig
id:
- APSC-DV-002490
- APSC-DV-002630
- type: pci_dss
id:
- 3.2-6.2
- 3.2-6.5.7
cpe:
- cpe:2.3:a:jquery:jquery:*:*:*:*:*:
# --- truncated at 32 KB (98 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tenable/refs/heads/main/openapi/tenable-exports-api-openapi.yml