Changelog
The history of API enhancements and bug fixes.
12/08/2026
- MalwareBazaar withdrawals are no longer permanent. When the abuse.ch curators drop the false-positive listing behind a withdrawal, the sample now returns to service and stops appearing in
/malwarebazaar/v1/revocations. This supersedes the note published on 07/08/2026 that a MalwareBazaar withdrawal was effectively final. Reinstatement is deliberately conservative: it needs several separate readings of the false-positive list to agree the listing is gone and hours to have passed, so no single reading can release a sample, and it needs abuse.ch to still serve the sample, so a sample removed from MalwareBazaar altogether stays withdrawn whatever happens to its listing. Reversals are rare in practice. - As on URLhaus and ThreatFox, no reinstatement signal is published: a reinstated entry simply stops appearing in the revocations feed, so re-synchronise periodically rather than treating a revocation as a permanent verdict. If your integration needs to act on reinstatements, raise it with us — whether to publish them is still open.
06/08/2026
- Fixed the authentication comparison table in Getting Started, whose column headings appeared one column to the left of the values they described.
- Tightened the spacing around the page footer.
07/08/2026
- Fixed the CAPE sandbox link in MalwareBazaar sample responses.
vendor_intel.cape.linkand the matchingfile_informationentry had the base URL prepended twice, producing a link that could not be followed. Both now return the analysis URL as-is. - Corrected the documented
delivery_methodvalueweb_drivetoweb_drive-by, which is what the API has always returned and what the field description already described. - MalwareBazaar samples now carry their Spamhaus HBL vendor intelligence again. Enrichment had been failing to run for samples ingested since June, so
vendor_intel.spamhaus_hblwas absent from most recent samples; historical samples still listed in HBL have been backfilled. - New URLhaus endpoint
/urlhaus/v1/revocations(and/urlhaus/v2/<api-key>/revocations) lists records URLhaus no longer serves, newest first, so you can withdraw entries you previously ingested. Filter withsinceanduntiland page withafter, as on the other list endpoints. A revocation means only that the entry has been withdrawn from the dataset — not that the URL was benign or is now safe. Records appear about a minute after being withdrawn, and revocations can be reversed, so overlap your polling window and re-synchronise periodically rather than relying on incremental updates alone. - New ThreatFox endpoint
/threatfox/v1/revocations(and/threatfox/v2/<api-key>/revocations) lists IOCs ThreatFox no longer serves, matching the URLhaus endpoint's shape. Each carries areasonwhere one is known:absent_upstream(no longer in the community dataset, covering both expiry and false-positive removal, which upstream does not distinguish),removed_by_admin,removed_by_user, orunspecified. As with URLhaus, a revocation means only that the entry has been withdrawn — not that the indicator was benign — records appear about a minute after being withdrawn, and revocations can be reversed, so overlap your polling window and re-synchronise periodically. - New MalwareBazaar endpoint
/malwarebazaar/v1/revocations(and/malwarebazaar/v2/<api-key>/revocations) lists samples MalwareBazaar no longer serves, matching the URLhaus and ThreatFox endpoints' shape. Each record is keyed bysha256_hashand also carries the sample'smd5_hash,sha1_hashandsha3_384_hash, so you can retire your own record under whichever hash you ingested it by. Thereasonisfalse_positivewhere the abuse.ch curators listed the sample as one — meaning the file was judged not to be malicious — orunspecifiedwhere no reason was recorded. This differs from ThreatFox deliberately: MalwareBazaar records false-positive removals distinctly rather than conflating them with expiry. As on the other platforms, records appear about a minute after being withdrawn and revocations can be reversed, so overlap your polling window and re-synchronise periodically. - The revocation endpoints now state plainly what they do and do not promise. For URLhaus and ThreatFox: we tell you when a record is withdrawn, and we do not tell you when a withdrawal was wrong — a record reinstated after an incorrect withdrawal simply stops appearing in the revocations feed, and an incremental poll of the main feed misses it because that feed is ordered by when a record was added, so re-synchronise fully rather than treating a revocation as a permanent verdict. For MalwareBazaar the position is different and now says so: a withdrawal there is effectively final, because nothing currently returns a withdrawn sample to service. No behaviour has changed — this documents limitations that were previously easy to miss.
29/07/2026
- URL-path API key authentication now covers ThreatFox, MalwareBazaar and YARAify as well as URLhaus. Query endpoints on all four platforms accept the key first, for example
/threatfox/v2/<api-key>/iocs,/malwarebazaar/v2/<api-key>/samplesand/yaraify/v2/<api-key>/tasks. - Sample downloads gain the same URL-path authentication for MalwareBazaar and YARAify, at
/malwarebazaar/v2/files/samples/<api-key>/<sha256>and/yaraify/v2/files/samples/<api-key>/<sha256>. ThreatFox has no sample-download endpoint. - All existing v1 endpoints are unchanged.
28/07/2026
- URLhaus endpoints can now be called with your API key supplied as a URL path segment, for example
/urlhaus/v2/<api-key>/urls. Use these variants when your tooling can only be configured with a URL and cannot set HTTP headers — for example Microsoft Defender XDR custom detection rules using KQLexternaldata. Because the key appears in the URL it will be recorded in proxy and browser logs, so prefer the header-authenticated endpoints where your tooling supports them. - Sample downloads accept the same URL-path authentication at
/urlhaus/v2/files/samples/<api-key>/<sha256>. - All existing endpoints are unchanged. ThreatFox, MalwareBazaar and YARAify equivalents will follow.
08/07/2026
- This documentation site has a new home: abusech-docs.spamhaus.com. Please update any bookmarks pointing at the previous address.
- Fixed an issue where the documentation root could serve the raw OpenAPI document to browsers instead of the rendered API reference.
01/07/2026
- Added
untilquery parameter to complementsinceon list & search endpoints across all platforms (URLhaus, ThreatFox, MalwareBazaar, YARAify), enabling bounded timeframe ranges. Supplying anuntilearlier thansincereturns a400status. - Removed the non-functional
sinceparameter from the MalwareBazaar YARA rule-matches endpoint.
13/10/2025
- Fixed bug in URLhaus where
tagsfield was omitted from response when searching URL by ID instead of the full URL. - Corrected tag filter example in URLhaus URL search endpoint to a valid tag.
- More performance enhancements across all platforms.
08/10/2025
- Fixed bug in ThreatFox IoCs list endpoint (i.e. no search filter query params provided to search endpoint) where records were not correctly ordered by
first_seen. - Fixed bug in URLhaus “search URLs” and “search payloads” endpoints where zero results would return a
500status instead of a404status with empty list. - Fixed data lag/availability issue in ThreatFox — latest IoCs should now be available as expected.
- Platform-wide performance improvements, substantially reducing request latency.
22/09/2025
- Added
sincequery param to filter results from list & search endpoints across all platforms. The Malware Bazaarmax_ageparam has been replaced withsince.
12/09/2025
- Backfilled additional historical ThreatFox and URLhaus data.
- Backwards-compatible change to the SIA login path to be consistent with the other APIs, i.e. both
/v1/loginand/api/v1/loginpaths can be used (though the former is now preferred and encouraged in the documentation). - Rewrote introduction page and corrected contact links.
- Internal bug fixes & OpenAPI specification polishing.
- Created this changelog!