Most threat intelligence API integration projects do not fail because the connection breaks. They fail because the data arrives and nobody can work out which of it belongs to you. A feed starts delivering indicators, the parser works, the tickets appear, and three weeks later the queue has four hundred open items that no engineer can attribute to a system they own. The integration gets throttled back to a weekly digest, then ignored.

Treat this as an attack surface problem before you treat it as a plumbing problem. The plumbing matters, and this article covers it properly, but the decision that determines whether the feed earns its place is whether every finding can be joined to an asset or identity you can prove belongs to your organisation.

What A Threat Intelligence API Should Actually Give You

Security teams routinely ask for "the API"without specifying which of three very different payloads they want, and vendors are happy to let the ambiguity sit there.

Three Payload Types People Conflate

  • Raw indicator lists. Domains, IPs, file hashes, URLs. High volume, no context, useful for blocking and retrospective hunting.
  • Enriched entity lookups. You send a domain or hash, you get back reputation, registration data, passive DNS, related infrastructure. On-demand, low volume, ideal for enrichment inside a SOAR playbook.
  • Contextualised findings. A specific exposure tied to a named asset, person or supplier: an unpatched internet-facing instance, a lookalike domain registered last Tuesday, a credential set appearing in a leak that matches your corporate domain.

Only the third type arrives with an owner attached. The first two create work that somebody has to finish.

The Question To Ask Before You Write Any Code

What decision will this data trigger? If the honest answer is "an analyst will look at it", you are building a reading list, not an integration. Write the decision down for each payload type: block at the perimeter, raise a change request, reset a credential, instruct a registrar, update an asset tag. If a payload maps to no decision, do not ingest it, because SIEM ingestion is charged by volume and unactioned data still costs money.

Where Attack Surface Data Differs From A Classic Feed

Classic intel answers "is this thing bad". External attack surface data answers "is this thing mine, and is it exposed". Discovered assets, forgotten subdomains, exposed management interfaces, lookalike domains and identity exposure all carry an implicit ownership claim, which is exactly what makes them actionable and exactly what makes verification non-negotiable. The client-facing API model that matters here delivers findings already attributed to a verified asset rather than a list of strings you have to reconcile yourself.

A Quick Scope Test

Pull for enrichment, push for findings. Your SOAR wants synchronous lookups on demand. Your ticketing system wants a webhook that fires when a new exposure appears. Your SIEM wants a controlled, deduplicated subset, not everything. Map tool to pattern on one page before procurement, and ask about STIX 2.1 and TAXII 2.1 support if you intend to land data in MISP or OpenCTI. A bespoke JSON schema with no versioning policy will break your parser on a Friday afternoon, and you will be the one fixing it.

The Integration Mechanics That Decide Whether It Survives Month Three

Authentication And Secret Handling

API keys belong in a secrets manager, not a pipeline variable and not a config file in the repository. Issue separate credentials per environment so a test harness cannot exhaust your production rate limit, set a rotation interval you will actually honour, and log key usage. Ironically, hard-coded intel platform keys in public repositories are exactly the kind of exposure the platform is meant to find for you.

Rate Limits, Pagination And 429 Handling

HTTP 429 is a backoff signal, not a failed job. The most common silent failure in a nightly bulk pull is retry logic that treats a 429 as an error, logs it, and exits having written page one. Your dashboard shows a successful run. Your coverage is five per cent. Implement exponential backoff with jitter, respect Retry-After where the vendor sends it, and alert on partial completion rather than only on hard failure. Cursor-based pagination is safer than offset pagination for anything that changes while you are reading it, so ask which the vendor uses.

Webhooks, Polling And The Backfill Problem

Webhooks are lower latency and lower cost. Polling is more resilient and easier to debug. Run both if the vendor allows: webhooks for real-time findings, a reconciliation poll every few hours using a since-timestamp or cursor to catch anything the webhook dropped. The question nobody asks during procurement is how deep historical backfill goes and how long webhook retries persist. If your consumer is down for six hours during a maintenance window, you need to know whether those events are recoverable or gone.

Idempotency Keys And Stable Finding IDs

A retry must not create a second ticket. Insist on a stable, persistent finding ID that survives rescans and status changes, and key your ticket creation on it. Without that, a transient timeout followed by three retries produces four tickets for one exposure, and the first thing your team learns is to distrust the automation.

Matching Intel To Assets You Can Prove You Own

Here is where most integrations quietly die. Intel arrives keyed on domains, IP addresses, hashes and email addresses. Your CMDB is keyed on hostnames, service names and owners. The join between the two is the whole project, and it is almost always built last.

Ownership verification has to run before the feed, not after. An unverified match produces a finding nobody can assign, nobody can close and nobody can learn from, so it gets bulk-closed as noise along with the genuine ones sitting next to it. Continuous discovery is the input that makes the join possible: shadow IT, regional office registrations, marketing microsites and cloud estates spun up outside change control are precisely the assets intel will mention and your inventory will not contain.

Attack surface drift makes this a continuous job rather than a one-off reconciliation. Cloud IP addresses change hands between tenants. Subdomains outlive the services they pointed at and become takeover candidates. A subsidiary in another jurisdiction registers a domain under a local registrar and nobody tells security. Geographical asset mapping and change detection are not nice-to-haves in an integration design; they are what stops a verified inventory decaying into a stale spreadsheet.

The exposure waves are the proof. During the ServiceNow and PaperCut episodes, the useful question was never "has an advisory been published". It was which of our instances are internet-facing and unpatched right now, which you can only answer in minutes if intel is already joined to a verified asset inventory.

Noise Control: Deduplication, Confidence And Indicator Ageing

Deduplicate Before Ticket Creation, Not After

Run infrastructure scanning, web application scanning and an external intel feed together and the same underlying exposure will appear three times under three identifiers. Deduplication has to happen upstream of the ticket queue. Group by asset plus vulnerability identity, not by scanner output, and accept that a one-to-one mapping between finding and ticket is the wrong model. One grouped risk, one remediation project, many evidence items. We have written separately about the sources of alert noise that wear teams down, and duplicate findings across overlapping tools is consistently near the top.

Indicator Time To Live

Indicator ageing is the most neglected setting in any integration. Pull a command and control IP once, never expire it, and eighteen months later that address has been reassigned to a shared hosting range serving a supplier portal your finance team needs. Your blocklist is now an outage generator. Set a time to live per indicator type, because a malware hash stays relevant far longer than a phishing URL or a fast-flux IP, and let the integration retire entries automatically rather than relying on an annual clean-up nobody schedules.

Confidence, Severity And Auto-Resolution

Normalise vendor severity onto CVSS and then weight it by your own asset criticality, otherwise a medium on a payment gateway sits below a high on a decommissioned test box. Build auto-resolution rules so findings close when the exposure genuinely disappears, and put a verification step in front of closure. Automation that closes something still live is worse than automation that closes nothing.

Identity, Dark Web And Telegram Signals Need Different Handling

Some payloads should never flow into a shared workflow. Plaintext credentials from a leaked credential database do not belong in a general Jira project or a Slack channel the engineering team can read. Hash or truncate at ingestion, store the match rather than the secret, and route the action (force a reset, revoke a session) without exposing the value.

Separate internal identities from external ones at the point of ingestion. Supplier and customer email addresses appearing in a third-party breach are a vendor risk signal and a notification question, not a staff password reset, and merging the two streams means your service desk spends a week chasing people who do not work for you.

Executive and VIP exposure needs a discreet route with its own access control. Dark web and Telegram monitoring surfaces marketplace listings, forum posts, leak site entries and chatter that names individuals, and findings about a named director should not land on a board visible to contractors. Build that restriction into the integration, not into a policy document.

Storing breach data about named individuals brings UK GDPR obligations with it. Define a retention period and enforce it technically, log access to the records, and keep organisation-level data separation in place. The ICO's guidance for organisations on security, accountability and data minimisation is the reference point your DPO will expect you to have read before you ingest the first record.

Where Automation Stops And A Human Analyst Starts

An API handles enrichment, correlation, ticket creation, blocklist updates and asset tagging well. Reliably, at volume, without complaint.

It cannot read intent. A Telegram post naming your brand might be resale of a five-year-old combolist, generic boasting, or genuine pre-attack reconnaissance by someone who has already tested your VPN. The payload looks identical in all three cases. Only a human analyst reading the surrounding thread, the seller's history and the claimed sample can tell you which, and that judgement is the difference between a board escalation and an ignored alert.

Impersonation works the same way. A typosquat domain hit or a reverse image match is a starting point; a registrar or platform will not act on a takedown without assembled evidence showing use, intent and harm. That is analyst work.

The pattern that holds up: machine matching, grouping and deduplication first, human verification on anything touching brand, named people or suppliers, then automated action once verified. Supplier signals illustrate it neatly. Public accreditation checks and validation summaries tell you something, but they need interpretation before they move a vendor risk score, as the ConnectWise supply chain case showed about standing vendor access.

Build, Buy Or Both

Free community endpoints and an open source platform such as MISP or OpenCTI genuinely fit when you have an engineer who owns it, a clear use case like internal enrichment, and tolerance for maintenance. The load nobody budgets for is parser breakage, taxonomy curation, deduplication logic and the slow accumulation of stale indicators. Buy when you need asset attribution, human OSINT research and collection from closed sources you cannot reach yourself.

Questions worth putting to any vendor: what is the schema versioning policy and deprecation notice period, how deep does historical backfill go, what are the rate limits on the tier you are actually buying, how do webhook retries behave, and do findings carry verified asset attribution or just an indicator. Our guide to questions to ask before buying attack surface monitoring covers the procurement side in more detail.

Model the real costs: engineering time to build and maintain, storage, SIEM ingestion charges and analyst hours spent closing findings nobody could action. Then measure what matters. The percentage of findings matched to a verified owned asset. The duplicate rate. Time from publication to ticket. And how many grouped risks became completed remediation projects, which is the only number that describes a reduction in exposure.

Done properly, threat intelligence API integration stops being a feed you tolerate and becomes the mechanism that tells you what attackers can already see across your external attack surface, attributed, deduplicated and routed to whoever can fix it. If you want to see how that looks against your own estate, start with what is already exposed.

Frequently Asked Questions

What does threat intelligence API integration actually involve?

It involves authenticating to a provider, retrieving or receiving data, normalising it into your own schema, joining it to your asset and identity records, deduplicating it, and routing the result to a tool that triggers a decision. The connection itself is usually the easiest part. The join to verified owned assets and the noise controls take most of the effort.

Should I use webhooks or polling for threat intelligence feeds?

Use webhooks for time-sensitive findings and polling for enrichment and reconciliation, and run both where the vendor supports it. Webhooks reduce latency and cost but can be missed during outages, so a periodic poll using a since-timestamp or cursor gives you a safety net. Confirm the webhook retry window and the depth of historical backfill before you rely on either.

How do I stop a threat intelligence API from flooding my SIEM with alerts?

Filter at ingestion rather than at the alert stage, and only ingest payloads tied to a decision you have defined. Deduplicate across scanners and sources before anything creates a ticket, normalise severity against your own asset criticality, and set a time to live per indicator type so stale entries retire automatically. Group related findings into one remediation item rather than one ticket per detection.

Can I handle leaked credential and dark web data through an API safely?

Yes, with restrictions built into the integration. Hash or truncate credential values rather than passing plaintext into shared queues, separate internal identities from supplier and customer ones, and route executive exposure through a channel with its own access control. Set a retention period for records about named individuals, log access, and check your approach against UK GDPR expectations with your DPO.

Is it better to build on free community intel APIs or buy a managed platform?

Build if you have a dedicated engineer, a narrow use case and appetite for ongoing maintenance of parsers, taxonomies and indicator hygiene. Buy if you need findings already attributed to verified assets, collection from closed forums, marketplaces and Telegram channels, and human analysts to interpret intent. Many teams run both: an open source platform internally, fed by a commercial source for the data they cannot collect themselves.