HackNotice Research Service Accounts API

Threat-research search over terms, filenames and word pools, plus saved searches.

Operations 14

POST /research/count/filename/term Count search filename term #
POST /research/count/pool Count word pool #
POST /research/count/term Count search term #
POST /research/search/filename/term/page/{pageNum} Search filename term and page #
POST /research/search/pool/page/{pageNum} Search word pool and page #
POST /research/search/term/page/{pageNum} Search term and page #
GET /researchsavedsearch/count Get the count of documents #
POST /researchsavedsearch/create Create a doc #
GET /researchsavedsearch/page/{pageNum} Read a page of documents #
GET /researchsavedsearch/runsearch/{documentId} Run search a doc #
POST /researchsavedsearch/search Search for a search name #
GET /researchsavedsearch/{documentId} Read a doc #
PUT /researchsavedsearch/{documentId} Update a doc #
DELETE /researchsavedsearch/{documentId} Delete a doc #

Work with this as data

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-research-service-accounts-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 Specification

hacknotice-research-service-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HackNotice Research Service Accounts 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: Research Service Accounts
  description: Threat-research search over terms, filenames and word pools, plus saved searches.
paths:
  /research/count/filename/term:
    post:
      tags:
      - Research Service Accounts
      summary: Count search filename term
      operationId: postCountSearchFilenameTerm
      parameters:
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                term:
                  type: string
                  description: Any search word or phrase
                searchtype:
                  type: string
                  description: 'Search type: match_phrase, wildcard_pre, wildcard_post, wildcard_both. If no or incorrect type is given, defaults to match_phrase.'
      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: []
  /research/count/pool:
    post:
      tags:
      - Research Service Accounts
      summary: Count word pool
      operationId: postCountWordPool
      parameters:
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                searchtype:
                  type: string
                pool:
                  type: array
                match:
                  type: string
            example:
              searchtype: word_pool
              pool:
              - '1600'
              - pennsylvania
              - washington
              match: '3'
      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: []
  /research/count/term:
    post:
      tags:
      - Research Service Accounts
      summary: Count search term
      operationId: postCountSearchTerm
      parameters:
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                term:
                  type: string
                  description: Any search word or phrase
                searchtype:
                  type: string
                  description: 'Search type: match_phrase, wildcard_pre, wildcard_post, wildcard_both. If no or incorrect type is given, defaults to match_phrase.'
      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: []
  /research/search/filename/term/page/{pageNum}:
    post:
      tags:
      - Research Service Accounts
      summary: Search filename term and page
      operationId: postSearchFilenameTermAndPage
      parameters:
      - name: pageNum
        in: path
        required: true
        schema:
          type: integer
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                term:
                  type: string
                  description: Any search word or phrase
                searchtype:
                  type: string
                  description: 'Search type: match_phrase, wildcard_post. If incorrect type is given, defaults to match_phrase.'
      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: []
  /research/search/pool/page/{pageNum}:
    post:
      tags:
      - Research Service Accounts
      summary: Search word pool and page
      operationId: postSearchWordPoolAndPage
      parameters:
      - name: pageNum
        in: path
        required: true
        schema:
          type: integer
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                searchtype:
                  type: string
                pool:
                  type: array
                match:
                  type: string
                startdate:
                  type: string
                enddate:
                  type: string
                fullrecords:
                  type: boolean
            example:
              searchtype: word_pool
              pool:
              - first
              - second
              match: '2'
              startdate: '2015-04-03'
              enddate: '2022-07-30'
              fullrecords: true
      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: []
  /research/search/term/page/{pageNum}:
    post:
      tags:
      - Research Service Accounts
      summary: Search term and page
      operationId: postSearchTermAndPage
      parameters:
      - name: pageNum
        in: path
        required: true
        schema:
          type: integer
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                term:
                  type: string
                  description: Any search word or phrase
                searchtype:
                  type: string
                  description: 'Search type: match_phrase, wildcard_pre, wildcard_post, wildcard_both. If incorrect type is given, defaults to match_phrase.'
      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: []
  /researchsavedsearch/count:
    get:
      tags:
      - Research Service Accounts
      summary: Get the count of documents
      operationId: getTheCountOfDocuments3
      description: 'Folder: Research Saved Search. Read a count of all documents.'
      parameters:
      - 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: []
  /researchsavedsearch/create:
    post:
      tags:
      - Research Service Accounts
      summary: Create a doc
      operationId: postCreateADoc2
      description: 'Folder: Research Saved Search. Add a document to your documents.'
      parameters:
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                search:
                  type: string
                endpoint:
                  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: []
  /researchsavedsearch/page/{pageNum}:
    get:
      tags:
      - Research Service Accounts
      summary: Read a page of documents
      operationId: getReadAPageOfDocuments3
      description: 'Folder: Research Saved Search. Read all documents.'
      parameters:
      - name: pageNum
        in: path
        required: true
        schema:
          type: integer
      - 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: []
  /researchsavedsearch/runsearch/{documentId}:
    get:
      tags:
      - Research Service Accounts
      summary: Run search a doc
      operationId: getRunSearchADoc
      description: 'Folder: Research Saved Search. Run a document by the document ID.'
      parameters:
      - name: documentId
        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: []
  /researchsavedsearch/search:
    post:
      tags:
      - Research Service Accounts
      summary: Search for a search name
      operationId: postSearchForASearchName
      description: 'Folder: Research Saved Search. Search your documents for a search name.'
      parameters:
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                term:
                  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: []
  /researchsavedsearch/{documentId}:
    get:
      tags:
      - Research Service Accounts
      summary: Read a doc
      operationId: getReadADoc3
      description: 'Folder: Research Saved Search. Get a document by the document ID.'
      parameters:
      - name: documentId
        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: []
    put:
      tags:
      - Research Service Accounts
      summary: Update a doc
      operationId: putUpdateADoc2
      description: 'Folder: Research Saved Search. Update a document by the document ID.'
      parameters:
      - name: documentId
        in: path
        required: true
        schema:
          type: string
      - name: apikey
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  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: []
    delete:
      tags:
      - Research Service Accounts
      summary: Delete a doc
      operationId: deleteADoc3
      description: 'Folder: Research Saved Search. Remove a document by the document ID.'
      parameters:
      - name: documentId
        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: []
components:
  schemas:
    Error:
      type: object
      description: HackNotice error envelope observed on the live API hosts.
      properties:
        message:
          type: string
          description: Human-readable error message, e.g. "Unauthorized user!" or "Not found".
  securitySchemes:
    jwtAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Session token from POST /auth/sign_in, sent as the literal prefix "JWT " followed by the token — e.g. Authorization: JWT <token>. Note this is HackNotice''s own scheme, not RFC 6750 Bearer.'
    apiKeyAuth:
      type: apiKey
      in: header
      name: apikey
      description: Per-account API key issued by HackNotice, sent in the lower-case "apikey" header alongside the JWT on most operations.
    integrationKeyAuth:
      type: apiKey
      in: header
      name: X-HackNotice-Integration-Key
      description: Per-user HackNotice integration secret (hn_ik_ prefix). Single-header alternative to apikey + email + password; also the credential used by the HackNotice MCP server.