2025 June - File Import Route Deprecation
Last updated
Was this helpful?
Last updated
Was this helpful?
We are deprecating the existing POST /api/v2/client/{clientId}/report/{reportId}/importAsync/{source}
endpoint (named in our docs) in favor of a new, more reliable, multi-step asynchronous import flow. This update improves backend performance and makes the platform more responsive during heavy import activity.
If youβve built an integration or script that uses the POST /api/v2/client/{clientId}/report/{reportId}/importAsync/{source}
endpoint, you will need to migrate to the new process before the removal date.
Deprecation Date: June 23, 2025 (the replacement option will be available starting in v2.18)
Removal Date: October 8, 2025 - v2.22
Current imports are handled via:
POST /api/v2/client/{clientId}/report/{reportId}/importAsync/{source}
The upload is asynchronous, but the actual import runs on the main API thread pool.
This can degrade performance and responsiveness when multiple imports occur at once or the platform is experiencing heavy user load.
The new import process separates file upload and import execution:
Request Presigned URL
POST /api/v2/presigned-url
Upload File to MinIO Use the returned url from step 1 via a PUT request.
Trigger Import
POST /api/v2/client/{clientId}/report/{reportId}/preuploaded-import/{source}
Pass the returned key
from step 1 along with the filename, any tag metadata, and parser action option.
Check Import Status
GET /api/v2/my-imports
The actual import now runs on a dedicated worker queue, decoupled from the API thread.
This update brings several backend improvements:
True background imports: Jobs are no longer tied to the API thread.
Better system responsiveness: Main thread stays available for interactive user actions.
Improved visibility: Import status is queryable via a structured /api/v2/my-imports
endpoint.
More scalable architecture: MinIO upload is streaming, so it supports large files without loading into memory.
You are affected if you call:
POST /api/v2/client/{clientId}/report/{reportId}/importAsync/{source}
β¦in any script, integration, or automation. This was previously the primary way to upload findings with our file parsers from scan tools like Nessus, Burp, Qualys, etc.
Update your integration to follow the new multi-step flow.
Step-by-step example:
1. Request a Presigned Upload URL
Response:
2. Upload File to MinIO
Note: onUploadProgress
is supported in Axios and can be used to provide user feedback on large files. Different solutions can be found in different request libraries if needed.
3. Initiate Import via Background Worker
This request returns a status based on the success of queuing up the import job. You need to use the /api/v2/my-imports
to determine the success of the import job. If you uploaded a malformed or invalid file for the source selected, this will still queue up the import job successfully.
source
corresponds to the file parser (e.g. nessus, burp, qualys), match existing usage from the V2 import
key
is the same object storage path returned in step 1
tags
and useParserActions
match existing usage from the V2 import
Response:
4. (Optional) Monitor Import Status
This endpoint shows the list of recent imports and their status. A specific import job can be found by matching on the key
which is the operationId
returned when the import was started.
Response:
The status
will be IMPORT COMPLETE
or ERROR
depending on whether the import job completed successfully or not. If the job results in failure, the errorStatus
will have some text labelling the error.