Platform

Platform overview How it works Authorization testing Evidence & reports Private scanning Integrations

Solutions

Security agencies Product teams Regulated industries Partner programme

Learn

Blog Knowledge hub Compare

Resources

Pricing Documentation Help centre FAQ Security & data What we haven’t proved

Company

About Contact Careers Sign in to the platform Start a $199 pilot →

Home / Blog / Tutorials / Cyberlop api reference

Tutorials

Cyberlop API reference: authentication, permissions and the OpenAPI spec

The API Reference page lists every endpoint, the permission it needs and a spec download. Here is how to read it and make your first calls.

Cyberlop Labs · Updated · 9 min read

Illustration for Cyberlop API reference: authentication, permissions and the OpenAPI spec
Quick answer

The Cyberlop API reference lists all 78 HTTP endpoints in 15 groups. Authenticate with a session cookie or a Bearer API token issued by an admin; the token carries its owner's permissions and group scope. Each route enforces one area:action permission, shown on the page. Use the JSON or OpenAPI download for the full spec.

Quick how-to
  1. Open the API Reference Click API Reference in the sidebar to see all endpoints grouped into 15 sections.
  2. Find the routes you need Type a path, method or permission such as scan:run into the filter box.
  3. Ask an admin for a token An admin issues a personal API token in Administration, Users. Ask for a role with only the keys the job needs.
  4. Store the token as a secret Copy the raw token once and save it, with the base URL, as CYBERLOP_API_TOKEN and CYBERLOP_URL in your secret store.
  5. Send the Bearer header Add Authorization: Bearer followed by the token to each request.
  6. Check your identity Call GET /api/auth/me to confirm which principal the token represents.
  7. Make your first working call Trigger a scan with POST /api/ci/scan and poll GET /api/ci/result/{scanId} until done is true.
  8. Download the spec Click OpenAPI (or JSON) and import the file into your API client or code generator.
Key takeaways
  • The API Reference page lists 78 endpoints in 15 groups, each with its method, path and required permission.
  • Authenticate with a session cookie or a Bearer API token; automation should use a token.
  • A token acts with its owner's permissions and group scope, so ask for the fewest keys the job needs.
  • The raw token is shown once and stored only as a hash, so save it straight into a secret store.
  • Download the JSON or OpenAPI file for request bodies and response shapes the page does not show.

The Cyberlop API reference is the in-app page that lists every HTTP endpoint (78 in 15 groups), the permission each one needs, and a download of the spec. You call the API with a session cookie or, for scripts and pipelines, a Bearer API token that an admin issues. Below: how to read it, authenticate, scope permissions and make your first calls.

What is the Cyberlop API reference?

The API reference is the API Reference page in the sidebar. It documents a REST API. It describes itself as "Every Cyberlop HTTP endpoint (78 total)" and adds: "Authenticate with a session cookie or a Bearer API token; each route enforces the listed permission."

A row starts with a coloured method badge: GET green, POST blue, PUT and PATCH amber, DELETE red. Then come the path and a one-line description. The permission chip sits at the right. A "file" suffix on a path means the endpoint returns a file, such as a PDF report or an export. Two buttons at the top, ⤓ JSON and ⤓ OpenAPI, download the spec.

API Reference page with JSON and OpenAPI download buttons, a filter box and the Authentication endpoint group.
The API Reference landing view. 1 JSON and OpenAPI: Download the full endpoint spec. 2 Filter box: Search by path, method or permission. 3 Authentication: Endpoints are grouped by area.. Sensitive details are blurred.

Why does API access need care?

Attackers go where the traffic is, and that is increasingly the API. Akamai reported 311 billion web attacks in 2024, a 33% year-over-year increase, and 150 billion API attacks between January 2023 and December 2024. Verizon's 2025 Data Breach Investigations Report, which analysed over 22,000 incidents including 12,195 confirmed breaches, found that exploitation of vulnerabilities as an initial attack vector rose 34%.

The same applies to the tokens you create for Cyberlop. A token is a bearer token: whoever holds it can use it. OWASP rates the top API risk, API1:2023 Broken Object Level Authorization, as "Exploitability Easy" and "Prevalence Widespread" (OWASP API Security Top 10, 2023). Cyberlop lists a permission on every route for this reason. Give each token as few keys as its job needs. See OWASP API Top 10, BOLA, API authentication and least privilege.

Stat cards: web attacks up 33% in 2024 (Akamai); exploitation of vulnerabilities as initial access up 34% (Verizon 2025).
Akamai: web attacks in 2024. Verizon: exploitation of vulnerabilities as an initial attack vector. Source: Akamai: Web attacks up 33%, APIs emerge as primary targets.

How do you authenticate to the Cyberlop API?

You authenticate with either a session cookie or a Bearer API token. The browser app uses the cookie after sign-in. Anything that runs unattended, such as a script or a CI job, should use a token.

Session cookieBearer API token
Used byThe web app, after you sign inScripts, CI jobs and other machine-to-machine calls
How you get itSign in. POST /api/auth/login is throttled against brute forceAn admin issues it in Administration → Users
RenewalPOST /api/auth/refresh rotates the refresh token and issues a new sessionRegenerate or revoke through the admin token endpoints
What it can doWhat your role allowsWhat the token owner's permissions and group scope allow
Best forInteractive useAutomation
Comparison of a session cookie for the browser app and a Bearer API token for scripts and CI jobs.
Which credential to use for which job.

The token inherits its owner's permissions and group scope. The Integrations page says the same about CI runs: "The scan runs with your permissions and group scope". A token never outranks its owner.

How do you make your first call?

  1. Ask an admin for a personal API token. Tokens are issued in Administration → Users, an admin task this guide does not cover; see API tokens and permissions.
  2. Copy the raw token when it is shown. The API reference says the raw secret is returned once, and Cyberlop stores tokens only as hashes.
  3. Store it as a secret in your CI tool or secret manager, never in the repository.
  4. Set two variables: CYBERLOP_URL (the base URL of your Cyberlop app) and CYBERLOP_API_TOKEN.
  5. Send the token in the Authorization header with the Bearer scheme.
  6. Check who you are by calling GET /api/auth/me. It returns the current authenticated principal.
curl -s "$CYBERLOP_URL/api/auth/me" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN"

How do you keep the token safe?

Handle it like a password. RFC 6750, the Bearer Token Usage standard, says clients "MUST always use TLS (https)" when sending bearer tokens and that token servers "SHOULD issue short-lived (one hour or less) bearer tokens" (RFC 6750, section 5.3). Admins issue the tokens, so agree a rotation habit with them; see key rotation and secrets management.

Which routes need no token?

Login, logout, SSO availability, the SSO start and callback routes and GET /health are public, so you can call them without any credential at all. POST /api/auth/refresh uses the refresh cookie. GET /api/auth/me and POST /api/auth/change-password need any authenticated caller. Everything else needs a named permission. No exceptions.

What do the 15 API groups cover?

The page groups its 78 endpoints into 15 sections that follow the sidebar. Use this table to decide where to look first.

GroupEndpointsWhat it is for
Authentication8Login, session refresh, logout, SSO and the current user
Targets4List, read, create and delete applications. Targets are immutable once created
Scan profiles9Profiles, tags, YAML preview, key vault and OAuth2 credential checks
Scans9Launch, refresh, cancel, delete, PDF report, screenshot and diff
Issues & findings4List, read, find eligible assignees and triage
Schedules4Create, update, list and delete scheduled scans
Groups, tags & search9Access scoping, tag registry and global search
Dashboard & activity3Dashboard stats, audit event log and activity feed
Export2Targets and issues as JSON or CSV
Settings5Organisation settings and credential or webhook verification
Scan agents3List, register and revoke self-hosted agents
Administration: users & tokens7User accounts and machine-to-machine API tokens
Administration: roles & teams8Roles and team-based scoped grants
CI/CD integration2Trigger a scan and fetch a pipeline-friendly result
Health1Liveness check
API Reference rows for scans, issues and schedules, each with a method badge, path and permission chip.
Scans, Issues and Schedules, with the permission on each row. 1 Issues & findings: This section lists the issue endpoints. 2 GET /api/issues: List issues with filters like severity. 3 PATCH /api/issues/:id: Update triage; needs issue:triage permission.. Sensitive details are blurred.

Most teams need three groups and no more: Scans, Issues & findings and CI/CD integration. The rest are for setup and administration.

How do permissions work for each endpoint?

Every route enforces one permission key, written area:action. The key is shown as a chip on the route's row. If the caller's role does not hold it, the route is not available to them. The table groups the keys shown on the page.

Permission keyWhat it unlocksExample endpoint
target:read, target:create, target:deleteView, add and delete targets, and export targetsGET /api/targets
profile:read, profile:create, profile:update, profile:deleteWork with scan profiles. Secrets are masked when readGET /api/profiles
profile:manage_credentialsVerify an OAuth2 token or a key vault connectionPOST /api/oauth2/verify
scan:run, scan:cancel, scan:deleteLaunch, refresh, cancel and delete scansPOST /api/scans
scan:read, scan:read_reportRead scans, screenshots, diffs and the PDF reportGET /api/scans/:id/diff
issue:read, issue:triage, issue:exportRead, triage and export findingsPATCH /api/issues/:id
schedule:*, group:*, tag:*Read, create, update and delete schedules, groups and tagsPOST /api/schedules
activity:read, audit:read, dashboard:read, search:readFeeds, dashboard stats and global searchGET /api/activity
settings:read, settings:updateOrganisation settings, credential checks and scan agentsPUT /api/settings
user:read, user:manage, role:read, role:manage, team:read, team:manageAdministration of users, tokens, roles and teamsPOST /api/users/:id/tokens
ci:triggerStart a scan from a pipelinePOST /api/ci/scan

A few details matter in practice. GET /api/scans/:id/report.pdf needs scan:read_report, a different key from reading the scan. The agents routes use profile:read to list and settings:update to register or revoke. The system role SuperAdmin is reserved and immutable, and the base admin cannot be deleted.

Which permissions should a token hold?

Give each token only the keys its job needs. A token inherits whatever its owner holds. So a narrow token needs an owner with a narrow custom role, which an admin sets up. The examples below are suggestions built from the keys above, not preset roles.

JobKeys to ask forWhy
Start scans from CI and read the resultci:trigger, scan:readThe trigger route needs ci:trigger; the result route needs scan:read
Pull findings into a tracker or sheetissue:read, issue:exportRead-only, no way to launch or change anything
Fetch PDF reports for an auditscan:read, scan:read_reportReports are a separate key from scan data
Triage from your own toolingissue:read, issue:triageNeeded for PATCH /api/issues/:id

Use one token per job

Separate tokens let you revoke one without breaking the others, and the activity feed shows who did what. Review who holds powerful keys now and then; see RBAC and token revocation.

Do not share a personal token

Actions taken with a token are taken as its owner. If a pipeline and a person share one, you cannot tell their actions apart and revoking it cuts off both.

How do you filter the page and download the OpenAPI spec?

The OpenAPI Specification "defines a standard, programming language-agnostic interface description for HTTP APIs" (OpenAPI Initiative). Cyberlop offers both a JSON and an OpenAPI download, which you can feed to a client generator or API tool. See OpenAPI specification.

  1. Open API Reference in the sidebar.
  2. Type in the filter box, labelled "Filter by path, method, permission...". For example, type scan:run to see every route that needs it.
  3. Click ⤓ OpenAPI for the spec, or ⤓ JSON for the JSON version.
  4. Import the file into your API client or code generator.

The page shows no request bodies or response shapes. Open the downloaded file to look for them.

What do common API calls look like?

These examples use only routes, parameters and fields shown in the app. Replace the placeholders with your own values.

Trigger a scan and poll for the result

This is the same flow the CI snippet on Integrations uses; see CI/CD integration. The trigger takes a profileId (or profileName) and an optional commitSha.

curl -s -X POST "$CYBERLOP_URL/api/ci/scan" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"profileId":"PROFILE_ID","commitSha":"COMMIT_SHA"}'

curl -s "$CYBERLOP_URL/api/ci/result/SCAN_ID" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN"

The first call returns the scan ID. The second returns a CI-friendly result with status, done, totals, severity counts and findings. The CI snippet polls every 30 seconds, up to 120 times, until done is true, and never fails the build.

Integrations page CI tab with a scan profile picker and the generated pipeline YAML that calls the CI endpoints.
The CI snippet that uses the two CI endpoints. 1 Scan profile: Pick the profile the pipeline will run. 2 Copy: Copy the workflow file to your repo. 3 continue-on-error: true: Scan never blocks your build.. Sensitive details are blurred.

Filter and export findings

GET /api/issues accepts these filters: scanId, targetId, severity, confidence, vulnClass and triageStatus. Exports use ?format=json or ?format=csv.

curl -s "$CYBERLOP_URL/api/issues?severity=high&targetId=TARGET_ID" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN"

curl -s "$CYBERLOP_URL/api/export/issues?format=csv" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN" -o issues.csv

The export route needs issue:export. For the same data from the app, see export findings as JSON or CSV and the issues list.

Download a PDF report

GET /api/scans/:id/report.pdf takes a mode of open, all or fixed-only. These match the three choices in the app; see download PDF reports.

curl -s "$CYBERLOP_URL/api/scans/SCAN_ID/report.pdf?mode=open" \
  -H "Authorization: Bearer $CYBERLOP_API_TOKEN" -o report.pdf
Steps: get a token, store it, set the base URL, send the Bearer header, check identity, call a route.
Six steps to a first call.

Troubleshooting and common mistakes

Most failed calls come from a missing permission, a wrong URL or a token that has been replaced.

SymptomLikely causeWhat to do
A route works in the app but not with your tokenThe token owner lacks the route's permission keyFilter the API Reference by the route, read its chip, and ask an admin to add the key to the owner's role
Calls stop working after a whileThe token was regenerated or revokedAsk an admin for a new one and update your secret. Regenerating returns a new raw secret
Nothing matches in the filterThe filter matches path, method or permission onlyTry a path fragment such as /api/scans, a method, or a key such as issue:triage
A scan trigger finds no profileWrong profileId or profileNameCopy the profile ID from the generated snippet on Integrations
You only see some dataYour token carries its owner's group scopeCheck the owner's groups; see groups and tags
You used a session cookie in a scriptCookie sessions come from sign-in and are rotated by refreshUse a Bearer API token for automation

Keep the base URL in one variable. Treat the 78 endpoints as a menu, because most automations call only a handful. And if a script starts a scan, check that you own the target or are authorised to test it.

Next step

Now that you can read the API reference, learn how tokens are issued and scoped in API tokens and permissions. Related guides: CI/CD integration, single sign-on and self-hosted scan agents. For how Cyberlop protects credentials, read the security page.

Questions people ask

Cyberlop api reference: FAQs

What is the Cyberlop API reference?

It is the API Reference page in the sidebar. It lists every HTTP endpoint (78 in 15 groups) with its method, path, description and required permission, plus JSON and OpenAPI downloads.

How do I authenticate to the Cyberlop API?

Use a session cookie (the web app) or a Bearer API token. For scripts and CI, send Authorization: Bearer followed by your token. An admin issues tokens in Administration, Users.

What can my API token do?

It acts with its owner's permissions and group scope, no more. Each route enforces the permission key listed on the API Reference page.

Can I see an API token again after it is created?

No. The raw secret is returned once and Cyberlop stores tokens only as hashes. If it is lost, ask an admin to regenerate it and update your secret store.

Which endpoints do I need to start a scan from CI?

Use POST /api/ci/scan (needs ci:trigger) and GET /api/ci/result/:scanId (needs scan:read). See CI/CD integration.

Is there an OpenAPI file I can import?

Yes. The API Reference page has ⤓ OpenAPI and ⤓ JSON buttons. Import the file into your API client or code generator.

Can I export findings through the API?

Yes. GET /api/export/issues returns issues as JSON or CSV with filters and needs issue:export. GET /api/export/targets does the same for targets.

Can I use the API to scan a site I do not own?

No. Only scan applications you own or are authorised to test. Black-box targets also need ownership verification before scans can run.

Cyberlop mark

Need help wiring up the API?

Cyberlop can run on a schedule or in CI/CD and report what it actually exploited, with the request, the response and the line of code. Ask us to run it on one of your applications.

Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.