Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/hacknotice-calc-endpoints-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: HackNotice Calc endpoints API
version: '2026-08-22'
summary: External threat-intelligence API for first-party, third-party and end-user breach monitoring, threat research and vendor assessments.
description: 'HackNotice''s REST API over its external threat-intelligence platform: credential and breach alerts for first-party domains, third-party vendors and end users; dark-web / hacker-forum research search; and AI-assisted vendor security assessments.
PROVENANCE: this document was DERIVED by API Evangelist from HackNotice''s own published Postman collection "HackNotice-API", reached at https://api-docs.hacknotice.com (HTTP 301 -> https://documenter.getpostman.com/view/806684/2sBXiri7pT), linked from HackNotice''s help centre article "API". Paths, methods, parameters, request bodies and tags are transcribed from that collection; nothing was invented. Concrete record ids in the collection''s example URLs were templated into path parameters, and every token-shaped example value was redacted.
HackNotice publishes a rate limit of 1 query per second, and states that API access is granted to approved accounts only after a 30-minute consultation call.'
termsOfService: https://hacknotice.com/businesstandc/
contact:
name: HackNotice Support
url: https://hacknotice.zendesk.com/hc/en-us
email: support@hacknotice.com
x-api-evangelist-derived-from: https://api-docs.hacknotice.com
servers:
- url: https://extensionapi.hacknotice.com
description: HackNotice production API host, as declared by HackNotice's own first-party n8n node (API_BASE_URL in credentials/HackNoticeApi.credentials.ts, github.com/HackNotice/n8n-nodes-hacknotice). The published Postman collection ships an internal {{url}} variable pointing at a developer VPN host, which is not the production base.
security:
- jwtAuth: []
- apiKeyAuth: []
tags:
- name: Calc endpoints
description: Aggregate/rollup calculation endpoints for breaches, threat actors and per-service alerts.
paths:
/breachcalcs/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /breachcalcs/aggregatedates
operationId: postBreachcalcsAggregatedates
description: 'Folder: Breaches. Mongo $group aggregation that sums totals, per-NAICS counts, per-geo-region counts, and per-source counts over the matching docs. Body fields : same date/naics/georegion filters as /count , plus: csv (boolean, optional) — if truthy, response is a CSV download ( Content-Disposition: attachment; filename=breachcalcs.csv ); otherwise JSON. Response : array with one aggregated object containing total , totalIndustries , totalGeographies , naics11 .. naics99 , geoEurope .. geoMiddleEast , sourceSec .. sourceLeakreport .'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
csv:
type: boolean
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
csv: false
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/breachcalcs/count:
post:
tags:
- Calc endpoints
summary: POST /breachcalcs/count
operationId: postBreachcalcsCount
description: 'Folder: Breaches. Returns the count of breach-landscape records matching the filter. Body fields startdate (string, ISO date) — required together with enddate to filter by date range. If either is empty, the date filter is skipped. enddate (string, ISO date) naics (string|number, optional) — single NAICS code filter. If absent, exclusivenaics is set to null (i.e. "all NAICS"). naicsarray (array, optional) — NAICS $in filter; overrides naics when present. georegions (string, optional) — single geo-region filter. georegionsarray (array, optional) — geo-region $in filter; overrides georegions when present. Response : integer count.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/breachcalcs/listdates:
post:
tags:
- Calc endpoints
summary: POST /breachcalcs/listdates
operationId: postBreachcalcsListdates
description: 'Folder: Breaches. Unpaginated list of breach-landscape records matching the filter, sorted by date desc. Body fields : same as /count . Response : array of breach-landscape records.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/breachcalcs/page/{pageNum}:
post:
tags:
- Calc endpoints
summary: POST /breachcalcs/page/:pageNum
operationId: postBreachcalcsPagePagenum
description: 'Folder: Breaches. Paginated list of breach-landscape records (50 per page, sorted by date desc). Path params pageNum (integer) — zero-indexed page. Body fields : naics , naicsarray , georegions , georegionsarray — same semantics as /count . Note: this handler does not apply a date filter. Response : array of breach-landscape records.'
parameters:
- name: pageNum
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/breachcalcs/{docId}:
get:
tags:
- Calc endpoints
summary: GET /breachcalcs/:docId
operationId: getBreachcalcsDocid
description: 'Folder: Breaches. Fetch a single breach-landscape record by _id . Path params docId — Mongo ObjectId of the breach-landscape record. Response : the breach-landscape record.'
parameters:
- name: docId
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /domainalertcalcs/aggregatedates
operationId: postDomainalertcalcsAggregatedates
description: 'Folder: First Party Alerts. Aggregates totalcreddump , totalinfostealer , totaltags , totaltaggroups , totalleakfiles , total , plus rolled-up taggroups and per-leakfile counts over the matching docs. Customer types accepted: domain , research , enduser .'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
domainwatchlist_id:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
domainwatchlist_id: ''
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/count:
post:
tags:
- Calc endpoints
summary: POST /domainalertcalcs/count
operationId: postDomainalertcalcsCount
description: 'Folder: First Party Alerts. Count of domain credential-exposure records for the authenticated customer. Body fields startdate / enddate (string, ISO date, optional pair) — date range filter. domainwatchlist_id (string, optional) — filter to a single domain watchlist. Response : integer count.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
domainwatchlist_id:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
domainwatchlist_id: ''
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/listdates:
post:
tags:
- Calc endpoints
summary: POST /domainalertcalcs/listdates
operationId: postDomainalertcalcsListdates
description: 'Folder: First Party Alerts. Unpaginated list, sorted by date desc, for the authenticated customer.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
domainwatchlist_id:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
domainwatchlist_id: ''
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/page/{pageNum}:
post:
tags:
- Calc endpoints
summary: POST /domainalertcalcs/page/:pageNum
operationId: postDomainalertcalcsPagePagenum
description: 'Folder: First Party Alerts. Paginated list (50 per page) for the authenticated customer.'
parameters:
- name: pageNum
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
domainwatchlist_id:
type: string
example:
domainwatchlist_id: ''
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/stats/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /domainalertcalcs/stats/aggregatedates
operationId: postDomainalertcalcsStatsAggregatedates
description: 'Folder: First Party Alerts. Stats-flavored aggregation over a preset domain-watchlist changeset . Body fields startdate / enddate — date range. changeset (string) — preset name (e.g. "USA" ) selecting a server-side group of domain watchlists; without it the aggregation has no $in set.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
changeset:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
changeset: USA
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/domainalertcalcs/{docId}:
get:
tags:
- Calc endpoints
summary: GET /domainalertcalcs/:docId
operationId: getDomainalertcalcsDocid
description: 'Folder: First Party Alerts. Fetch a single domain credential-exposure record by _id .'
parameters:
- name: docId
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/enduseralertcalcs/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /enduseralertcalcs/aggregatedates
operationId: postEnduseralertcalcsAggregatedates
description: 'Folder: End User Alerts. Aggregation over the matching employee credential-exposure records for the authenticated customer.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/enduseralertcalcs/count:
post:
tags:
- Calc endpoints
summary: POST /enduseralertcalcs/count
operationId: postEnduseralertcalcsCount
description: 'Folder: End User Alerts. Count of employee credential-exposure records for the authenticated customer. Body fields startdate / enddate (string, ISO date, optional pair) — date range. Response : integer count.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/enduseralertcalcs/listdates:
post:
tags:
- Calc endpoints
summary: POST /enduseralertcalcs/listdates
operationId: postEnduseralertcalcsListdates
description: 'Folder: End User Alerts. Unpaginated list, sorted by date desc, for the authenticated customer.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/enduseralertcalcs/page/{pageNum}:
post:
tags:
- Calc endpoints
summary: POST /enduseralertcalcs/page/:pageNum
operationId: postEnduseralertcalcsPagePagenum
description: 'Folder: End User Alerts. Paginated list (50 per page) for the authenticated customer.'
parameters:
- name: pageNum
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties: {}
example: {}
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/enduseralertcalcs/{docId}:
get:
tags:
- Calc endpoints
summary: GET /enduseralertcalcs/:docId
operationId: getEnduseralertcalcsDocid
description: 'Folder: End User Alerts. Fetch a single employee credential-exposure record by _id .'
parameters:
- name: docId
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/hackalertcalcs/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /hackalertcalcs/aggregatedates
operationId: postHackalertcalcsAggregatedates
description: 'Folder: Third Party Alerts. $group aggregation over the matching docs for the authenticated customer.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/hackalertcalcs/count:
post:
tags:
- Calc endpoints
summary: POST /hackalertcalcs/count
operationId: postHackalertcalcsCount
description: 'Folder: Third Party Alerts. Count of hack/breach exposure records for the authenticated customer. Body fields : same as breachcalcs /count . Response : integer count.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/hackalertcalcs/listdates:
post:
tags:
- Calc endpoints
summary: POST /hackalertcalcs/listdates
operationId: postHackalertcalcsListdates
description: 'Folder: Third Party Alerts. Unpaginated list, sorted by date desc, for the authenticated customer.'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
startdate: '2025-04-01'
enddate: '2025-05-01'
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/hackalertcalcs/page/{pageNum}:
post:
tags:
- Calc endpoints
summary: POST /hackalertcalcs/page/:pageNum
operationId: postHackalertcalcsPagePagenum
description: 'Folder: Third Party Alerts. Paginated list (50 per page) for the authenticated customer.'
parameters:
- name: pageNum
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
naics:
type: string
naicsarray:
type: array
georegions:
type: string
georegionsarray:
type: array
example:
naics: ''
naicsarray: []
georegions: ''
georegionsarray: []
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/hackalertcalcs/{docId}:
get:
tags:
- Calc endpoints
summary: GET /hackalertcalcs/:docId
operationId: getHackalertcalcsDocid
description: 'Folder: Third Party Alerts. Fetch a single hack/breach exposure record by _id .'
parameters:
- name: docId
in: path
required: true
schema:
type: string
- name: apikey
in: header
required: false
schema:
type: string
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
'401':
description: Unauthorized — missing or invalid JWT / API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
security:
- jwtAuth: []
- apiKeyAuth: []
/threatactorcalcs/aggregatedates:
post:
tags:
- Calc endpoints
summary: POST /threatactorcalcs/aggregatedates
operationId: postThreatactorcalcsAggregatedates
description: 'Folder: Threat Actors. Mongo $group aggregation over the matching docs. Body fields : same as /count , plus: harvesterarray (array, optional) — harvester $in filter. csv / exportcsv (boolean, optional) — if truthy, response is a CSV download. Response : aggregated totals (per-NAICS, per-geo-region, etc.) similar to breachcalcs /aggregatedates .'
parameters:
- name: apikey
in: header
required: false
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
startdate:
type: string
enddate:
type: string
naics:
type
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hacknotice/refs/heads/main/openapi/hacknotice-calc-endpoints-api-openapi.yml