This is a public contract. Field names are
snake_case, and every optional field is always present. When there is no value for a field, it is explicitly null, so a consumer can tell “never triaged” apart from “field missing”.Endpoint
https://api-eu.cybedefend.com (EU) or https://api-us.cybedefend.com (US).
Scope
The export covers the projects your token has access to. Theproject_id filter can only narrow that set, never widen it.
Query parameters
List parameters accept both spellings and any mix of the two:
Response
Notable fields
id: the stable fingerprint
id: the stable fingerprint
Survives reindentation, line drift and scanner rule renames. It does change when the file is renamed, when the vulnerable code itself changes, or when one of several identical occurrences in a file disappears.
severity: computed from CVSS
severity: computed from CVSS
Computed from the CVSS 4 environmental score, falling back to the base score.
none is a real band (a CVSS score of exactly 0) and is exported.remediation: null means no guidance
remediation: null means no guidance
null where the source carries none, such as OSV advisories (sca) and container findings. A null here means “we have no guidance”, not “no action needed”.details: family-specific
details: family-specific
File and line for
sast, package for sca, image for container, and so on. null when no structured details are available for the finding.Paginating one pull
Follownext_cursor until has_more is false. Results are sorted ascending on updated_at.
updated_at is the sort key, so a finding modified mid-pagination moves forward in the stream and is delivered again. Consumers must be idempotent on id.Pulling incrementally
Store thenext_since of your last page and replay it verbatim as updated_since on the next run. That is the whole contract: you do not compute the watermark yourself.