Skip to content

Response shapes (untyped endpoints)

The v4 typed models cover the document layer end to end: search/documents/archive records come back as Bulletin subclasses with typed fields. The audit, archive-metadata, subscription, report and VScanner endpoints, though, return provider-shaped JSON that the SDK hands back as plain dict/list (annotated Any / dict[str, Any]). This page shows the real shape of each so you don't have to guess at keys.

Examples are abbreviated — one element per list, long strings clipped, captured from live calls (audit/archive/misc) or the API schema (subscriptions/reports). Every field is optional; treat a missing key as "not present for this row".

Audit

audit.software(...) · audit.host(...)

Both return a list, one entry per input item, each with the affecting vulnerabilities:

[
  {
    "input": {"product": "openssl", "version": "1.0.1"},
    "matched_criteria": "cpe:2.3:a:openssl:openssl:1.0.1:*:*:*:*:*:*:*",
    "vulnerabilities": [
      {
        "id": "VERACODE:3506",
        "type": "veracode",
        "title": "Denial Of Service (DoS) Through Null Pointer Dereference",
        "published": "2017-02-08T05:51:39",
        "modified": "2019-05-15T06:18:01",
        "href": "https://sca.analysiscenter.veracode.com/vulnerability-database/...",
        "short_description": "OpenSSL DoS vulnerability by null pointer dereference",
        "ai_score": {"value": 6.3},
        "reasons": [
          {
            "config": "vulners",
            "criterias": [[{"criteria": "cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*",
                            "vulnerable": true, "versionEndIncluding": "1.0.1"}]]
          }
        ]
      }
    ]
  }
]

host items use the raw CPE string as "input" instead of a {product, version} object; the rest is identical. sbom_audit returns the same per-component shape.

audit.linux_audit(...) · audit.win_audit(...)

A single object keyed by issues (not wrapped in result — that is the v3 shape):

{
  "issues": [
    {
      "package": "openssl 1.1.1d-0+deb10u3 amd64",
      "version": "1.1.1d-0+deb10u3",
      "fixedVersion": "1.1.1n-0+deb10u6",
      "fixedPackage": "openssl_1.1.1n-0+deb10u6_amd64.deb",
      "applicableAdvisories": [
        {"id": "OSV:DSA-4807-1", "match": ">=1,<1.1.1d-0+deb10u4", "registry": "deb",
         "distro": ["debian"], "operator": "lt", "version": "any"}
      ]
    }
  ],
  "errors": {},
  "totalPackages": 1
}

win_audit returns the same envelope for Windows KBs/software. smart returns a list like software, with each entry adding the resolved CPE/PURLs and a confidence score.

Archive metadata

archive.collection_state(type) · archive.family_state(name)

The sync cursor and counters for a collection/family — feed cursor back as after to a *_update download:

{
  "cursor": "2026-07-21T12:40:37.108000Z",
  "upload_time": "2026-07-21T16:12:14.170000Z",
  "write_time": "2026-07-21T15:43:39.470000Z",
  "total_docs": 606
}

Lookups (misc)

// misc.search_cpe("http_server", vendor="apache")
{"best_match": "cpe:2.3:a:apache:http_server:*:*:*:*:*:*:*:*",
 "cpe": ["cpe:2.3:a:apache:apache_http_server:*:*:*:*:*:*:*:*"]}

// misc.query_autocomplete("heartbleed")  -> a list of suggestion strings
["id:\"NMAP:SSL-HEARTBLEED.NSE\"", "heartbleed", "Heartbleed"]

Subscriptions

subscriptions_email.list/add/edit return a list of email-subscription records:

[
  {
    "id": "…", "active": true, "confirmed": true,
    "query": "type:cve AND cvss.score:[9 TO 10]", "query_type": "lucene",
    "link_query": "https://vulners.com/search?query=…",
    "crontab": "0 9 * * 1",
    "deliveryAddress": "you@example.com", "deliveryFormat": "html"
  }
]

webhooks.list returns a list of polling-webhook records (id, active, the query, and the webhook target). subscriptions (the current v4 API) returns a list of v4 subscription records; see the resources reference. An empty list means no subscriptions exist for the key.

Reports

report.* methods return a list of rows whose columns depend on the report type. For example report.scan_list():

[
  {"id": "…", "ipaddress": "203.0.113.7", "fqdn": "host.example.com",
   "OS": "Ubuntu", "OSVersion": "22.04", "modified": "2026-07-01T00:00:00",
   "cvss": {"score": 9.8, "vector": "AV:N/AC:L/…"}}
]

Other report types (vulns_summary, vulns_list, ip_summary, host_vulns, vuln_info) return their own row columns — see the resources reference.

VScanner

v.vscanner (the perimeter scanner) is namespaced — vscanner.licenses, vscanner.projects, vscanner.projects.tasks and vscanner.projects.results — and the list(...) calls return provider-shaped JSON: a project record carries its id, name and scan settings; a task its schedule and status; a result the per-host/port findings and screenshots. See the resources reference for each call's fields.


Why Any?

These endpoints are passed through as provider-shaped JSON rather than modelled, so new server-side fields reach you immediately (nothing is dropped). Typed models for the audit and report shapes are a planned follow-up; until then, this page is the contract.