The S4E platform provides a public REST API for programmatic access to scanning, asset management, reporting, and more. All public API endpoints authenticate via a Public API Token.
Base URL
| Environment | Base URL |
|---|---|
| Cloud | https://api.s4e.io |
| On-Premises | https://api.<your-domain> |
All endpoint paths below are relative to this base URL. Replace API_URL in examples with your base URL.
Authentication
Every request requires a token parameter (your Public API Token). Generate one from Settings > API Token in the platform.
Validate token
POST /auth/check
Check extension login
POST /auth/check-extension-login
Returns whether the user has used the browser extension in the last 7 days.
Assets
Add assets in bulk
POST /asset/handler/bulk-asset-add
Add multiple assets for the token owner. Performs validation and adds assets if not already owned.
| Parameter | Type | Required | Description |
|---|---|---|---|
assets |
array | Yes | List of assets to add. |
token |
string | Yes | Public API token. |
description |
string | No | Optional description (3-300 chars). |
source |
string | No | manuel, s4e_subdomain_finder, s4e_iprange_extender, digitalocean_integration, cloudflare_integration, wordpress_integration. |
Check asset ownership
POST /asset/handler/bulk-asset-ownership-check
Check if assets can be registered by the token owner.
Validate asset type
POST /asset/handler/bulk-asset-type-check
Validate type and format for multiple assets (domain, IP, CIDR).
Retrieve an asset
POST /asset/info/detail
Get detailed information for a single asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
token |
string | Yes | Public API token. |
asset_id |
integer | No | Asset ID. |
asset |
string | No | Asset name. |
List all assets
POST /asset/info/list
List assets with filtering, sorting, and pagination.
| Parameter | Type | Description |
|---|---|---|
asset |
string | Filter by asset name. |
asset_ids |
array | Filter by asset IDs. |
tag_ids |
array | Filter by tag IDs. |
if_premium |
boolean | Premium filter. |
if_verified |
boolean | Verification filter. |
asset_types |
array | domain, ipv4, etc. |
search_text |
string | Search by asset and description. |
search_condition |
string | contains, equal, startswith, endswith. |
inet |
string | Network-aware IP filter (single IP, CIDR, or range). |
Update scan categories
POST /asset/settings/update-scan-categories
Enable or disable scan categories for an asset.
Category slugs: dns-controls, ssl-controls, misconfiguration, network-vulnerabilities, web-vulnerabilities, information-scans, product-based-web-vulnerabilities, product-based-network-vulnerabilities, exposed-panels.
Scans
List all scans
POST /scan/list
Retrieve available scan definitions with filtering and pagination.
| Parameter | Type | Description |
|---|---|---|
query |
string | Search text. |
asset_type |
string | domain, ipv4, url, request, email. |
scan_category_slug |
string | Filter by category. |
severity |
string | critical, high, medium, low, info. |
if_single_scan |
boolean | Single scan filter. |
if_group_scan |
boolean | Group scan filter. |
List scan categories
POST /scan/scan-categories-with-count
Get scan categories and their counts for a given asset type.
Start a single scan
POST /scan/start-single-scan
Start a scan identified by its slug against a specific asset.
| Parameter | Type | Required | Description |
|---|---|---|---|
asset |
string | Yes | Target asset name. |
slug |
string | Yes | Scan slug identifier. |
token |
string | Yes | Public API token. |
port |
integer | No | Target port (1-65535). |
Start a group scan
POST /scan/start-group-scan
Start a Full Scan, Light Scan, Crawl Only, or Fast Scan.
| Slug | Scan Type |
|---|---|
full-scan |
Full Scan |
half-scan |
Light Scan |
crawl-only |
Crawl Only |
fast-scan |
Fast Scan (use asset string instead of assets array) |
Verify an asset
POST /scan/start-verify
Trigger the verification process for an asset.
Retrieve activity logs
POST /scan/get-activity-logs
Retrieve timestamped activity logs for a group scan.
List scan history
POST /scan/history-single-scan | /scan/history-group-scan | /scan/history-crawler
Retrieve past scan executions. All three endpoints accept the same parameters.
Reports
List reports
POST /report/list
Retrieve a paginated list of scan reports.
Severity: 1 Info · 2 Low · 3 Medium · 4 High · 5 Critical
Status: 0 Open · 1 Fixed · 2 Request for Approval · 3 Accepted Risk · 4 False Positive · 5 Support Ongoing · 6 No Action Required · 7 Reopened · 8 In Progress
Source: 0 single-scan · 1 full-scan · 2 half-scan · 3 continuous-scan · 5 crawl-only · 9 fast-scan
Retrieve a single scan report
POST /report/single-scan-result
Retrieve a group scan report
POST /report/group-scan-result
Retrieve report history
POST /report/report-history
Returns past scan results for a given report.
Retrieve severity statistics
POST /report/get-severities
Retrieve status statistics
POST /report/get-statuses
Export reports
POST /report/export
Export reports based on filters and the requested format. Supports CSV, HTML, PDF, and JSON.
| Response | Description |
|---|---|
| 200 | Report exported successfully. |
| 401 | Invalid API token. |
Required JSON body fields: output_type, token.
| Field | Type | Default | Description |
|---|---|---|---|
output_type |
string | — | csv, html, pdf, json |
token |
string | — | Public API token (3–256 chars) |
template |
string | short |
full (detailed) or short (summary) |
delimiter |
string | , |
, or ; (CSV) |
scan_output_slugs |
string[] | — | Scan output slugs to export |
severity |
int[] | — | 1–5: Information … Critical |
slug |
string | — | Scan result id (pattern ^([a-zA-Z0-9-]){3,400}$) |
group_scan_slug |
string | — | Group scan result id (same pattern) |
started_at |
integer | — | Start timestamp filter |
finished_at |
integer | — | End timestamp filter |
until_date |
integer | — | Filter until this date |
order_by |
string | finished_at |
id, severity, finished_at |
order_type |
string | desc |
desc or asc |
if_custom |
boolean | — | Include custom fields |
asset_id |
int[] | — | Asset IDs |
asset |
string | — | Asset name filter |
scan_category_slug |
string[] | — | e.g. web-vulnerabilities, network-vulnerabilities, … |
report_status |
int[] | — | 0 Open through 8 In Progress |
source |
int[] | — | Scan source enum (e.g. 3 continuous-scan) |
name |
string | — | Report name (3–300) |
scan_slug |
string | — | Scan slug (3–300) |
read |
boolean | — | Read status filter |
count_total_only |
boolean | false |
Return only total count |
port |
int[] | — | Ports (max 10) |
tag |
string | — | Tag filter |
tag_ids |
int[] | — | Tag IDs |
For a longer field reference and UI mapping (template ↔ Detailed/Summary), see Exporting Data — API.
Crawler
Retrieve crawler settings
POST /crawler/get-settings
Returns include/exclude URLs, API specs, headers, and enrichment configuration.
Add included URLs
POST /crawler/add-included-urls
Add URLs to the crawling inclusion list.
Add excluded URLs
POST /crawler/add-excluded-urls
Add URLs to the crawling exclusion list.
Note
Use /crawler/remove-included-urls and /crawler/remove-excluded-urls with the same body format to remove URLs.
Add API specifications
POST /crawler/add-api-specs
Add API specification URLs (.json, .wadl, .wsdl) for crawler discovery.
Note
Use /crawler/remove-api-specs with the same body format to remove specs.
Update crawler headers
POST /crawler/update-header
Set custom HTTP headers sent during crawling.
headers_valid_for: validity in milliseconds, -1 for indefinite.
Update enrichment setting
POST /crawler/update-enrichment-setting
Enable or disable enrichment analysis for crawled data.
List all crawled URLs
POST /crawler/list-alls
Retrieve a paginated list of all discovered URLs.
| Parameter | Type | Description |
|---|---|---|
port |
array | Filter by ports. |
endpoint |
string | Filter by endpoint path. |
method |
array | GET, POST, PUT, DELETE, PATCH. |
status_code |
array | Filter by HTTP status codes. |
filter_pii_only |
boolean | Show only URLs with PII. |
Dashboard
Retrieve terminal data
POST /dashboard/terminal/v2
Real-time scan activity data with filtering and pagination.
Retrieve group scan counts
POST /dashboard/group-scan-counts
Retrieve open ports
POST /dashboard/get-open-ports
Retrieve asset count by ports
POST /dashboard/get-asset-count-by-ports
Retrieve monthly URL statistics
POST /dashboard/get-monthly-total-url
Retrieve monthly unique requests
POST /dashboard/get-monthly-unique-request
Security Score
Retrieve security score
POST /risk/user-score
Retrieve risk score history for the token owner.
Threat Intelligence
List credentials
GET /threatintelligence/list
Retrieve threat intelligence credential data.
Integration types: brand-defense, proudsec.
User
Retrieve current user
POST /user/info
Returns profile data, privileges, and onboarding status.
Retrieve subscription info
POST /user/package-info
Check current subscription status and expiration.
HTTP Response Codes
| Code | Description |
|---|---|
200 |
Success. |
400 |
Validation error, asset not found, or ownership conflict. |
401 |
Invalid API token. |
404 |
Resource not found. |
500 |
Internal server error. |