Plans: Every plan, and Free: published advisories stay in the feed. Who: public; no sign-in or token.
Endpoints
All endpoints answerGET without authentication. The base is https://app.pharussecurity.com/csaf/<your-slug>.
Only the
white directory exists. TLP:GREEN, AMBER and RED advisories are never served here.
Every successful response carries these headers:
white or a file that isn’t published returns 404 with the body Not found, as text/plain, with Cache-Control: no-store.
provider-metadata.json
The entry point for CSAF tools. It is served for every workspace, also before you have published anything.
The metadata lists no OpenPGP keys, and the documents aren’t OpenPGP-signed: there are no
.asc files. A tool that requires signatures reports the documents as unsigned. Integrity comes from the hash files and HTTPS.
index.txt
One<yyyy>/<file>.json path per line, relative to the directory, newest first:
changes.csv
One line per document, newest change first, with no heading row. Each line holds the path and the document’scurrent_release_date, both quoted:
Documents
GET /csaf/<your-slug>/white/<yyyy>/<file>.json returns the latest published version of one advisory, byte for byte the document that was hashed when it was published.
- File name: the tracking ID in lower case, with every run of characters other than
a–z,0–9,+and-replaced by_, then.json.NORDLYS-2026-0001becomesnordlys-2026-0001.json. - Folder: the year of the advisory’s first publication (
initial_release_date). - Versions: a new version replaces the file at the same address. Superseded versions aren’t in the feed; your team downloads them from the advisory’s Releases tab.
- Headers: besides the common ones,
ETagis the document’s SHA-256 in quotes, andLast-Modifiedis when this version was published.
csaf_vex document in English:
Every published version has passed the CSAF 2.0 schema and the VEX profile tests.
Hash files
<file>.json.sha256 and <file>.json.sha512 hold the hex digest of the document, two spaces and the file name, in the format sha256sum and sha512sum read:
Publisher namespace
CSAF identifies a document by its publisher namespace together with its tracking ID. Pharus sets the namespace from Settings → Disclosure:- With a Canonical URL set, the namespace is that URL’s origin, for example
https://nordlys.no. - Without one, it is
https://app.pharussecurity.com/csaf/<your-slug>.
Read the feed
Give your customers the provider metadata address, or let their tools discover it. A CSAF tool looks for a provider’s metadata athttps://<domain>/.well-known/csaf/provider-metadata.json, in the CSAF field of the domain’s security.txt, or through DNS. Pharus writes the CSAF field into your security.txt, so once you serve that file from your own domain, tools given your domain can follow it to the feed.
A typical client:
- Reads
provider-metadata.jsonand takes thedirectory_url. - Reads
changes.csvand picks the paths changed since its last run. - Downloads each document and checks it against its
.sha256or.sha512file.
Advertise the feed
- security.txt. The
CSAFline appears by itself once you publish a TLP:WHITE advisory. Serve the file from your own domain. See security.txt. - The advisories page.
https://app.pharussecurity.com/disclose/<your-slug>/advisorieslinks “Machine-readable feed (CSAF)” and declares the provider metadata as its JSON alternate, as each advisory page does for its own document. - Your customers. Put the provider metadata address in your product documentation, security page or customer agreements, where their security teams look for it.
Related
Security advisories
Draft and publish the documents the feed serves.
security.txt
The file that points tools to the feed.
Disclosure page
Canonical URL and the other disclosure settings.
API introduction
The rest of the Pharus API.