AbuseIPDB · Arazzo Workflow

AbuseIPDB Check Then Report

Version 1.0.0

Check an IP's reputation and conditionally file an abuse report based on its confidence score.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub Anti MalwareBlacklistCybersecurityIP ReputationNetwork SecurityPublic APIsThreat IntelligenceArazzoWorkflows

Provider

abuseipdb

Workflows

check-then-report
Check an IP and report it only when its abuse confidence score is below a threshold.
Reads the abuse confidence score for the target IP and, when that score is under the supplied threshold, submits an abuse report with the given categories and comment. Already-flagged IPs are skipped.
2 steps inputs: apiKey, categories, comment, ipAddress, maxAgeInDays, scoreThreshold outputs: newScore, priorScore, reportedIp
1
checkIp
Look up the current abuse data for the IP, returning the abuse confidence score used to decide whether a new report is warranted.
2
reportIp
Submit a new abuse report for the IP using the supplied categories and optional comment because its existing score was below the threshold.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: AbuseIPDB Check Then Report
  summary: Check an IP's reputation and conditionally file an abuse report based on its confidence score.
  description: >-
    A defensive SOC pattern that looks before it acts. The workflow first checks
    the current abuse data for an IP address, then branches on the returned abuse
    confidence score: when the score is below a supplied threshold (meaning the
    address is not yet widely flagged) it submits a fresh abuse report so the
    community catches up to the observed activity, and when the score is already
    at or above the threshold it ends without re-reporting. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: reportsApi
  url: ../openapi/abuseipdb-reports-api-openapi.yml
  type: openapi
- name: reputationApi
  url: ../openapi/abuseipdb-reputation-api-openapi.yml
  type: openapi
workflows:
- workflowId: check-then-report
  summary: Check an IP and report it only when its abuse confidence score is below a threshold.
  description: >-
    Reads the abuse confidence score for the target IP and, when that score is
    under the supplied threshold, submits an abuse report with the given
    categories and comment. Already-flagged IPs are skipped.
  inputs:
    type: object
    required:
    - apiKey
    - ipAddress
    - categories
    properties:
      apiKey:
        type: string
        description: AbuseIPDB API key supplied via the Key header.
      ipAddress:
        type: string
        description: The IPv4 or IPv6 address to check and potentially report.
      categories:
        type: string
        description: Comma-separated abuse category IDs to file the report under (up to 30).
      comment:
        type: string
        description: Optional description and supporting log evidence for the report.
      maxAgeInDays:
        type: integer
        description: Restrict the reports considered when scoring to the last N days (1-365).
        default: 30
      scoreThreshold:
        type: integer
        description: Only report when the existing abuse confidence score is below this value.
        default: 50
  steps:
  - stepId: checkIp
    description: >-
      Look up the current abuse data for the IP, returning the abuse confidence
      score used to decide whether a new report is warranted.
    operationId: checkIp
    parameters:
    - name: Key
      in: header
      value: $inputs.apiKey
    - name: ipAddress
      in: query
      value: $inputs.ipAddress
    - name: maxAgeInDays
      in: query
      value: $inputs.maxAgeInDays
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      abuseConfidenceScore: $response.body#/data/abuseConfidenceScore
      totalReports: $response.body#/data/totalReports
    onSuccess:
    - name: needsReport
      type: goto
      stepId: reportIp
      criteria:
      - context: $response.body
        condition: $.data.abuseConfidenceScore < $inputs.scoreThreshold
        type: jsonpath
    - name: alreadyFlagged
      type: end
      criteria:
      - context: $response.body
        condition: $.data.abuseConfidenceScore >= $inputs.scoreThreshold
        type: jsonpath
  - stepId: reportIp
    description: >-
      Submit a new abuse report for the IP using the supplied categories and
      optional comment because its existing score was below the threshold.
    operationId: reportIp
    parameters:
    - name: Key
      in: header
      value: $inputs.apiKey
    requestBody:
      contentType: application/x-www-form-urlencoded
      payload:
        ip: $inputs.ipAddress
        categories: $inputs.categories
        comment: $inputs.comment
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      reportedIp: $response.body#/data/ipAddress
      newScore: $response.body#/data/abuseConfidenceScore
  outputs:
    priorScore: $steps.checkIp.outputs.abuseConfidenceScore
    reportedIp: $steps.reportIp.outputs.reportedIp
    newScore: $steps.reportIp.outputs.newScore

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/abuseipdb-check-then-report-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?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.