Developer API Documentation

Welcome to the AssurePort Freemium Threat Intel API. This API exposes all 14 public reconnaissance and security inspection tools driving our online toolbox, enabling you to automate scans directly inside your CI/CD workflows, custom monitoring scripts, or security pipelines.

With a free developer account, you receive a personal API key providing 100 free requests per month across all endpoints, bypassing anonymous IP-based rate limiting.

Authentication

All programmatic API requests must carry your personal API Key passed as a Bearer token in the Authorization header:

AUTHORIZATION HEADER EXAMPLE
Authorization: Bearer aprt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

To generate your API Key, sign in to your dashboard at app.assureport.com, navigate to Settings > API Keys, and click Generate Key.

Limits & Quotas

Our freemium layer enforces two levels of rate limits to guarantee system reliability:

  • Monthly Quota: 100 requests per calendar month per tenant. Check your usage metrics in the developer dashboard.
  • Burst Limit: 10 requests per minute per API key to prevent brief throttling or spamming.

API Endpoints

1. DNS Lookup

Query standard DNS records directly from global authoritative name servers.

GET https://api.assureport.com/api/intel/dns
Parameter Type Required Description
host string Yes The domain name to resolve (e.g. example.com).

2. TLS/SSL Logs

Query Certificate Transparency logs for public certificate mappings and expirations.

GET https://api.assureport.com/api/intel/ssl
Parameter Type Required Description
host string Yes The hostname to scan (e.g. example.com).

3. HTTP Security Headers

Inspect HTTP headers and calculate security grade (A+ to F).

GET https://api.assureport.com/api/intel/headers
Parameter Type Required Description
url string Yes The full destination URL to check (e.g. https://example.com).

4. CryptoCheck Grader

Grade the cryptographic hygiene, TLS configurations, and post-quantum readiness.

GET https://api.assureport.com/api/intel/cryptocheck
Parameter Type Required Description
target string Yes The hostname (without https://) to assess.

5. Aggregated Threat Intelligence

Aggregate reputation lookups across Shodan, URLhaus, ThreatFox, and ASN listings.

GET https://api.assureport.com/api/intel/threat-intel
Parameter Type Required Description
target string Yes The domain name, IPv4, or email address to query.
type string Yes Must be one of domain, ip, or email.

Code Examples

Integrate our endpoints using your favorite programming language:

curl -X GET "https://api.assureport.com/api/intel/headers?url=https://example.com" \
  -H "Authorization: Bearer aprt_YOUR_FREE_API_KEY"

Response

All endpoints return JSON. A successful GET /api/intel/headers responds 200 with a HeaderGrade object:

{
  "url": "https://example.com",
  "status": 200,
  "scoreOutOf100": 82,
  "letterGrade": "B",
  "redirects": 0,
  "headers": {
    "strict-transport-security": "max-age=63072000; includeSubDomains; preload",
    "content-security-policy": "default-src 'self'"
  },
  "checks": [
    { "name": "Strict-Transport-Security", "status": "pass", "value": "max-age=63072000; includeSubDomains; preload", "weight": 20, "notes": "Present with a long max-age." },
    { "name": "Content-Security-Policy", "status": "warn", "value": "default-src 'self'", "weight": 20, "notes": "Present, but no report-uri configured." }
  ]
}
FieldTypeDescription
urlstringThe URL that was probed (final target after redirects).
statusnumberHTTP status returned by the target.
scoreOutOf100numberWeighted security-header hygiene score.
letterGradestringOne of A+ A B C D F, derived from scoreOutOf100.
redirectsnumberNumber of redirects followed before grading.
headersobjectObserved response headers (lowercased keys).
checksarrayPer-header evaluation: name, status (pass/warn/fail), value, weight, notes.

Errors

Errors return a JSON body with an error code (and often a human-readable message) at the matching HTTP status:

StatuserrorMeaning
400missing_url / missing_hostA required query parameter is absent.
401unauthenticatedMissing or invalid Authorization: Bearer aprt_… key.
403untrusted_originRequest rejected as an off-platform spoofing attempt.
429rate_limit / quota_exceededPer-minute burst or monthly quota exceeded. Burst responses include resetIn (seconds).
500probe_failedThe target could not be reached or its response parsed.

Parameter reference

Endpoints take one of three input parameters. The name reflects what the check actually needs — it is not interchangeable:

ParameterFormatUsed by
urlFull URL incl. scheme — https://example.comHTTP-probing checks (/intel/headers, /intel/tech, /intel/cookies) — the scheme and port are part of what is graded.
hostBare hostname — example.comDNS / TLS lookups (/intel/ssl, /intel/dns) — these resolve a name, not a URL.
typedomain | ip | emailClassification / reputation endpoints.

Platform API — run real scans

Everything above is the free threat-intel surface. The Platform API drives the paid engines — dispatch a pentest, poll it, read findings, check your balance — with the same aprt_ key. It is the API behind the console, exposed for CI/CD, a scan step in your pipeline, or your own tooling.

RequirementDetail
AuthAuthorization: Bearer aprt_…
ScopeDispatch needs a key carrying scan:write; registering targets needs asset:write. Keys default to both. Issue a narrower key from the console (Settings → API Keys) for least privilege — a scan:read-only key can poll but not start scans.
BillingEach dispatch reserves scan credit up front (engine-priced); a successful scan consumes it, a failed scan releases the full reservation.

Dispatch a scan

POST /api/scans — start a scan. Supply a URL target (web/api/github/email) or structured config (cloud/ad/sap). Returns 202 with a scanId to poll.

curl -X POST "https://api.assureport.com/api/scans" \
  -H "Authorization: Bearer aprt_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9f2c1e7a-..." \
  -d '{ "engine": "web", "targetUrl": "https://example.com", "onboardingMode": "quick", "attestation": true }'

Idempotency (recommended). Send a unique Idempotency-Key header and reuse it verbatim if you retry (a timed-out request, an at-least-once queue). A retry with the same key replays the original scan instead of starting — and charging for — a second one. Keys are scoped to your tenant and cover a short retry window.

Successful 202 response:

{
  "scanId": "b6571822-4232-4f5e-81b8-15a3c62c5855",
  "status": "queued",
  "reservation": { "id": "...", "credits": 6900 },
  "gate": "quick_scan"
}
StatuserrorMeaning
400bad_requestMissing/invalid field (e.g. unknown engine).
402(preflight)Insufficient scan credit for the engine — top up.
403insufficient_scopeKey lacks scan:write.
409idempotency_in_progressA scan with this Idempotency-Key is still being created — retry shortly.
200(idempotentReplay)Replay of a prior identical dispatch — body carries the original scanId.
503audit_log_unavailableImmutable audit log temporarily down; nothing charged — retry.

Poll, findings & balance

EndpointReturns
GET /api/scans/:idScan status (queuedrunningsucceeded/failed) and progress.
GET /api/scans/:id/findingsFindings for a completed scan — severity, title, CWE/OWASP, and a reproducible PoC for every Critical/High.
GET /api/scans/:id/report?format=pdfThe rendered PDF report.
GET /api/balanceCurrent scan-credit balance for your tenant.

All Platform endpoints are tenant-scoped: a key only ever sees its own tenant's scans, findings and balance.

Ready to automate your security checks?

Create a free developer account in under 30 seconds to generate your personal API Key.

Get Free API Key

Download AssurePort Browser Extension

Audit security headers, cookie flags, and TLS hygiene instantly on any active browser tab. Includes direct integrations and one-click target verify.

Download Extension (ZIP)