false-positive endpoint returns two kinds of records:
- Reclassifications: Records that were originally classified by OpenSourceMalware as malicious but were subsequently determined by an admin to be false positives, or were retracted by the source feed (e.g. OSV). Where a withdrawal matches an OpenSourceMalware threat record, it’s merged into that threat’s entry rather than listed twice.
- Rejections: Submissions that OpenSourceMalware rejected, meaning they were never added to the verified findings feed, because they were determined to be false positives.
source: "threat" items with the same shape. The false_positive.rejection_reason and rejection_note fields explain why a given item was marked a false positive, whether it had previously been verified as malicious or was rejected before ever reaching that status. Upstream withdrawals that don’t match any existing OpenSourceMalware threat record appear separately as source: "osv_withdrawal" items.
Subscription Required: This is a paid endpoint.
- Retract stale alerts and blocks: If a package you already flagged, whether pulled from
threat-feed’s verified threats or from unverified submissions, later appears here as a false positive, close the alert or lift the block automatically instead of waiting for someone to notice. - Audit other feeds you’re consuming: Cross-reference entries from other vendors’ threat feeds against this endpoint. If another feed still lists something OpenSourceMalware has confirmed benign, that’s evidence to raise with the vendor.
- Turn silence into a signal: When OpenSourceMalware doesn’t flag something another feed does, this endpoint tells you whether that’s because OpenSourceMalware reviewed it and rejected it as benign (it’ll show up here), or because OpenSourceMalware hasn’t looked at it yet (it won’t appear anywhere).
- Pick up upstream retractions: Catch OSV advisories withdrawn at the source, even for packages OpenSourceMalware never carried a matching threat record for.
Query parameters
Unlike
threat-feed, this endpoint isn’t scoped by ecosystem. Results span every ecosystem and asset type OpenSourceMalware tracks, so there’s no need to loop over ecosystems to get full coverage.Response example
Success (200)
marked_at descending: for threat items, when the status was changed to false_positive; for osv_withdrawal items, the OSV withdrawal date.
Item shape by source
threatitems cover both reclassifications and rejections. They carrypackage_name,registry, and afalse_positiveobject withrejection_reasonandrejection_noteexplaining the determination. If the same correction also involved an upstream OSV withdrawal,osv_withdrawnandosv_idsare included. There’s no separate field distinguishing a reclassification from a rejection; readrejection_reasonandrejection_noteto tell which kind of record you’re looking at.osv_withdrawalitems are upstream OSV advisories withdrawn with no corresponding OpenSourceMalware threat record. They carryosv_idandecosysteminstead ofregistry, and have nofalse_positiveobject.
Matching items to your own feeds
When cross-referencing an entry from another feed against this endpoint:- Match on identifier first. If the other feed carries an OSV, GHSA, or CVE id, compare it against
false_positive.osv_ids(forsource: "threat"items) orosv_id(forsource: "osv_withdrawal"items). This is more precise than name matching and avoids collisions across ecosystems. - Fall back to package name and ecosystem. If no id is available, match on
package_nameplus the ecosystem field, noting that the field is namedregistryonthreatitems andecosystemonosv_withdrawalitems.

