Rapid7 Community Threats API
An API used to add and replace indicators for Community Threats. See https://insightidr.help.rapid7.com/docs/threats#section-threat-api for further information on how to generate threat keys.
An API used to add and replace indicators for Community Threats. See https://insightidr.help.rapid7.com/docs/threats#section-threat-api for further information on how to generate threat keys.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/rapid7:rapid7-community-threats-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: InsightIDR Community Threats API
version: v1
description: 'Introduction
Welcome to the reference documentation for the InsightIDR public APIs.
Here are a few resources to help you learn how to start using our APIs:
Learn about basic concepts and capabilities
Get an Insight platform API key to set up authentication
See available Insight product APIs
Learn more about InsightIDR
After you''ve got the basics down, you can use this API guide to find examples of requests and responses.'
servers:
- url: https://{region}.api.insight.rapid7.com/
variables:
region:
default: us
description: Insight API region
security: []
tags:
- name: Community Threats
description: An API used to add and replace indicators for Community Threats. See https://insightidr.help.rapid7.com/docs/threats#section-threat-api for further information on how to generate threat keys.
paths:
/idr/v1/customthreats:
post:
tags:
- Community Threats
summary: Create a Community Threat
description: 'Create a private InsightIDR Community Threat and add indicators to this Community Threat. The following Community Threat indicators are supported in the request body, formatted as JSON:
communityThreatName
notetext
indicators
IP addresses (non-CIDR notation)
Process hashes
Domain names
URLs
The request content type must be to in JSON (see request samples).
The maximum file size is 50 MB.'
operationId: createCommunityThreat
requestBody:
description: "The request body format must be in JSON. \nThe maximum payload size is 50 MB."
content:
application/json:
schema:
type: string
example:
threat: threatName
note: notetext
indicators:
ips:
- 192.168.0.1
hashes:
- b95663ec7339033cf1fde459a34b6606
domain_names:
- rapid7.com
- mailxpy.com
urls:
- http://example.com/index
- ' http://www.mailxpy.com/login/index.php'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ThreatUpdateResult'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Insufficient Permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Entity Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'413':
description: Payload Is Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'502':
description: Bad Gateway
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/idr/v1/customthreats/key/{key}/indicators/replace:
post:
tags:
- Community Threats
summary: Replace indicators for a Community Threat
description: 'Replace InsightIDR Community Threat indicators for a Community Threat with the given Community Threat key. The following Community Threat indicators are supported in the request body formatted as JSON, STIX XML, or CSV:
IP addresses
Process hashes
Domain names
URLs
The request content type is expected to match the specified format: "application/json" for "json" format, "text/xml" for "stix_xml" format and "text/csv" for "csv" format. See request samples on the right.
The multipart file upload (with multipart/form-data content type) is also supported by the endpoint. The maximum file size is 50 MB.'
operationId: replaceIndicators
parameters:
- name: key
in: path
description: The key of a Community Threat for which the indicators are going to be added.
required: true
schema:
type: string
example: 156c9e48-64da-4bba-939e-e1c329be591b
- name: format
in: query
description: The input format.
required: true
schema:
type: string
enum:
- json
- csv
- stix_xml
example: json
requestBody:
description: "The request body format should be one of JSON, STIX XML, CSV, or multi-part file data. \nThe maximum payload size is 50 MB."
content:
application/json:
schema:
type: string
example:
ips:
- 192.168.0.1
hashes:
- b95663ec7339033cf1fde459a34b6606
domain_names:
- rapid7.com
urls:
- http://example.com
text/csv:
schema:
type: string
example: 192.168.0.1,b95663ec7339033cf1fde459a34b6606,rapid7.com,http://example.com
text/xml:
schema:
type: string
example: "\n<stix:STIX_Package xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:stix=\"http://stix.mitre.org/stix-1\"\n xmlns:indicator=\"http://stix.mitre.org/Indicator-2\"\n xmlns:cybox=\"http://cybox.mitre.org/cybox-2\"\n xmlns:DomainNameObj=\"http://cybox.mitre.org/objects#DomainNameObject-1\"\n xmlns:cyboxVocabs=\"http://cybox.mitre.org/default_vocabularies-2\"\n xmlns:stixVocabs=\"http://stix.mitre.org/default_vocabularies-1\"\n xmlns:example=\"http://example.com/\"\n xsi:schemaLocation=\n \"http://stix.mitre.org/stix-1 ../stix_core.xsd\n http://stix.mitre.org/Indicator-2 ../indicator.xsd\n http://cybox.mitre.org/default_vocabularies-2 ../cybox/cybox_default_vocabularies.xsd\n http://stix.mitre.org/default_vocabularies-1 ../stix_default_vocabularies.xsd\n http://cybox.mitre.org/objects#DomainNameObject-1 ../cybox/objects/Domain_Name_Object.xsd\"\n id=\"example:STIXPackage-f61cd874-494d-4194-a3e6-6b487dbb6d6e\"\n timestamp=\"2014-05-08T09:00:00.000000Z\"\n version=\"1.1.1\">\n <stix:STIX_Header>\n <stix:Title>Example watchlist that contains domain information.</stix:Title>\n <stix:Package_Intent xsi:type=\"stixVocabs:PackageIntentVocab-1.0\">Indicators - Watchlist</stix:Package_Intent>\n </stix:STIX_Header>\n <stix:Indicators>\n <stix:Indicator xsi:type=\"indicator:IndicatorType\" id=\"example:Indicator-2e20c5b2-56fa-46cd-9662-8f199c69d2c9\" timestamp=\"2014-05-08T09:00:00.000000Z\">\n <indicator:Type xsi:type=\"stixVocabs:IndicatorTypeVocab-1.1\">Domain Watchlist</indicator:Type>\n <indicator:Description>Sample domain Indicator for this watchlist</indicator:Description>\n <indicator:Observable id=\"example:Observable-87c9a5bb-d005-4b3e-8081-99f720fad62b\">\n <cybox:Object id=\"example:Object-12c760ba-cd2c-4f5d-a37d-18212eac7928\">\n <cybox:Properties xsi:type=\"DomainNameObj:DomainNameObjectType\" type=\"FQDN\">\n <DomainNameObj:Value condition=\"Equals\" apply_condition=\"ANY\">malicious1.example.com##comma##malicious2.example.com##comma##malicious3.example.com</DomainNameObj:Value>\n </cybox:Properties>\n </cybox:Object>\n </indicator:Observable>\n <indicator:Observable id=\"NCCIC:Observable-fb5606ea-23f0-472d-babf-8b7e89571881\">\n <cybox:Object id=\"NCCIC:Object-a105a51a-c324-11e7-b25d-64006a91c899\">\n <cybox:Properties xsi:type=\"AddressObj:AddressObjectType\" category=\"ipv4-addr\" is_spoofed=\"false\">\n <AddressObj:Address_Value condition=\"Equals\">185.134.98.141</AddressObj:Address_Value>\n </cybox:Properties>\n </cybox:Object>\n </indicator:Observable>\n </stix:Indicator>\n </stix:Indicators>\n</stix:STIX_Package>"
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ThreatUpdateResult'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Insufficient Permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Entity Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'413':
description: Payload Is Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'502':
description: Bad Gateway
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/idr/v1/customthreats/key/{key}/indicators/add:
post:
tags:
- Community Threats
summary: Add indicators to a Community Threat
description: 'Add InsightIDR Community Threat indicators to a Community Threat with the given Community Threat key. The following Community Threat indicators are supported in the request body formatted as JSON, STIX XML, or CSV:
IP addresses
Process hashes
Domain names
URLs
The request content type is expected to match the specified format: "application/json" for "json" format, "text/xml" for "stix_xml" format and "text/csv" for "csv" format. See request samples on the right.
The multipart file upload (with multipart/form-data content type) is also supported by the endpoint. The maximum file size is 50 MB.'
operationId: addIndicators
parameters:
- name: key
in: path
description: The key of a Community Threat for which the indicators are going to be added.
required: true
schema:
type: string
example: 156c9e48-64da-4bba-939e-e1c329be591b
- name: format
in: query
description: The input format.
required: true
schema:
type: string
enum:
- json
- csv
- stix_xml
example: json
requestBody:
description: "The request body format should be one of JSON, STIX XML, CSV, or multi-part file data. \nThe maximum payload size is 50 MB."
content:
application/json:
schema:
type: string
example:
ips:
- 192.168.0.1
hashes:
- b95663ec7339033cf1fde459a34b6606
domain_names:
- rapid7.com
urls:
- http://example.com
text/csv:
schema:
type: string
example: 192.168.0.1,b95663ec7339033cf1fde459a34b6606,rapid7.com,http://example.com
text/xml:
schema:
type: string
example: "\n<stix:STIX_Package xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:stix=\"http://stix.mitre.org/stix-1\"\n xmlns:indicator=\"http://stix.mitre.org/Indicator-2\"\n xmlns:cybox=\"http://cybox.mitre.org/cybox-2\"\n xmlns:DomainNameObj=\"http://cybox.mitre.org/objects#DomainNameObject-1\"\n xmlns:cyboxVocabs=\"http://cybox.mitre.org/default_vocabularies-2\"\n xmlns:stixVocabs=\"http://stix.mitre.org/default_vocabularies-1\"\n xmlns:example=\"http://example.com/\"\n xsi:schemaLocation=\n \"http://stix.mitre.org/stix-1 ../stix_core.xsd\n http://stix.mitre.org/Indicator-2 ../indicator.xsd\n http://cybox.mitre.org/default_vocabularies-2 ../cybox/cybox_default_vocabularies.xsd\n http://stix.mitre.org/default_vocabularies-1 ../stix_default_vocabularies.xsd\n http://cybox.mitre.org/objects#DomainNameObject-1 ../cybox/objects/Domain_Name_Object.xsd\"\n id=\"example:STIXPackage-f61cd874-494d-4194-a3e6-6b487dbb6d6e\"\n timestamp=\"2014-05-08T09:00:00.000000Z\"\n version=\"1.1.1\">\n <stix:STIX_Header>\n <stix:Title>Example watchlist that contains domain information.</stix:Title>\n <stix:Package_Intent xsi:type=\"stixVocabs:PackageIntentVocab-1.0\">Indicators - Watchlist</stix:Package_Intent>\n </stix:STIX_Header>\n <stix:Indicators>\n <stix:Indicator xsi:type=\"indicator:IndicatorType\" id=\"example:Indicator-2e20c5b2-56fa-46cd-9662-8f199c69d2c9\" timestamp=\"2014-05-08T09:00:00.000000Z\">\n <indicator:Type xsi:type=\"stixVocabs:IndicatorTypeVocab-1.1\">Domain Watchlist</indicator:Type>\n <indicator:Description>Sample domain Indicator for this watchlist</indicator:Description>\n <indicator:Observable id=\"example:Observable-87c9a5bb-d005-4b3e-8081-99f720fad62b\">\n <cybox:Object id=\"example:Object-12c760ba-cd2c-4f5d-a37d-18212eac7928\">\n <cybox:Properties xsi:type=\"DomainNameObj:DomainNameObjectType\" type=\"FQDN\">\n <DomainNameObj:Value condition=\"Equals\" apply_condition=\"ANY\">malicious1.example.com##comma##malicious2.example.com##comma##malicious3.example.com</DomainNameObj:Value>\n </cybox:Properties>\n </cybox:Object>\n </indicator:Observable>\n <indicator:Observable id=\"NCCIC:Observable-fb5606ea-23f0-472d-babf-8b7e89571881\">\n <cybox:Object id=\"NCCIC:Object-a105a51a-c324-11e7-b25d-64006a91c899\">\n <cybox:Properties xsi:type=\"AddressObj:AddressObjectType\" category=\"ipv4-addr\" is_spoofed=\"false\">\n <AddressObj:Address_Value condition=\"Equals\">185.134.98.141</AddressObj:Address_Value>\n </cybox:Properties>\n </cybox:Object>\n </indicator:Observable>\n </stix:Indicator>\n </stix:Indicators>\n</stix:STIX_Package>"
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ThreatUpdateResult'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Insufficient Permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Entity Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'413':
description: Payload Is Too Large
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'502':
description: Bad Gateway
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/idr/v1/customthreats/key/{key}/delete:
post:
tags:
- Community Threats
summary: Delete a Community Threat
description: Delete an owned InsightIDR Community Threat.
operationId: deleteCommunityThreat
parameters:
- name: key
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteThreatEvent'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Threat'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Insufficient Permissions
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Threat with key threatKey was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'502':
description: Bad Gateway
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ErrorResponse:
required:
- message
type: object
properties:
message:
type: string
description: A human-readable message describing the error that occurred.
example: A human-readable message describing the error that occurred.
correlation_id:
type: string
description: An identifier that uniquely identifies the failed request.
example: 6b6503c8-2da9-41c0-94cb-2f34069e00cd
ThreatUpdateResult:
required:
- threat
type: object
properties:
threat:
$ref: '#/components/schemas/Threat'
rejected_indicators:
type: array
description: The list of indicators that have been rejected during the update.
example:
- blacklisted
- invalid
items:
type: string
Threat:
required:
- indicator_count
- name
- published
type: object
properties:
name:
type: string
description: The name of the threat.
example: Threat
note:
type: string
description: Notes about this threat.
example: Notes
published:
type: boolean
description: Indicates whether this threat has been published.
example: true
indicator_count:
minimum: 0
type: integer
description: The number of indicators in this threat.
format: int64
example: 1
description: The information about the threat.
DeleteThreatEvent:
type: object
properties:
reason:
type: string
externalDocs:
description: Product docs
url: https://insightidr.help.rapid7.com/docs