Skip to content
Start here

Get indicator feed metadata

client.Intel.IndicatorFeeds.Get(ctx, feedID, query) (*IndicatorFeedGetResponse, error)
GET/accounts/{account_id}/intel/indicator-feeds/{feed_id}

Retrieves details for a specific custom threat indicator feed.

Security

API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Intel WriteIntel Read
ParametersExpand Collapse
feedID int64

Indicator feed ID

query IndicatorFeedGetParams
AccountID param.Field[string]

Identifier

maxLength32
ReturnsExpand Collapse
type IndicatorFeedGetResponse struct{…}
ID int64Optional

The unique identifier for the indicator feed

CreatedOn TimeOptional

The date and time when the data entry was created

formatdate-time
Description stringOptional

The description of the example test

IsAttributable boolOptional

Whether the indicator feed can be attributed to a provider

IsDownloadable boolOptional

Whether the indicator feed can be downloaded

IsPublic boolOptional

Whether the indicator feed is exposed to customers

LastUploadSummary IndicatorFeedGetResponseLastUploadSummaryOptional

Summary of indicator counts from the last successful upload to this feed. Populated by the custom-threat-feeds loader at the end of each successful load. Absent (omitted) when no upload has completed successfully or the upload errored before the summary write. Surfaces silent-failure paths so operators can see when their indicators were dropped (popularity allowlist, expired valid_until, etc.) without reading loader logs.

Persisted IndicatorFeedGetResponseLastUploadSummaryPersistedOptional

Net delta applied to feed indicators by this upload. Snapshot uploads emit both *_added and *_removed; delta-add emits only *_added; delta-remove emits only *_removed.

DomainsAdded int64Optional
DomainsRemoved int64Optional
IPsAdded int64Optional
IPsRemoved int64Optional
URLsAdded int64Optional
URLsRemoved int64Optional
Skipped IndicatorFeedGetResponseLastUploadSummarySkippedOptional

Counts of indicators that were uploaded but did not reach QuickSilver, broken down by reason.

AllowlistedDomains int64Optional

Domains filtered by the global popularity allowlist at QS provisioning time. Popular domains (bing.com, naver.com, etc.) are protected from custom-threat-feed enforcement.

ExpiredIndicators int64Optional

Indicators in the upload whose valid_until is already in the past. These are not added to QS; the expiration cron handles cleanup.

InvalidIndicators int64Optional

Reserved for future use. Currently always 0 — the unifier aborts the entire upload on a single bad indicator.

Uploaded IndicatorFeedGetResponseLastUploadSummaryUploadedOptional

Indicator counts from the unified file the loader received

Domains int64Optional

Number of domain indicators in the upload

IPs int64Optional

Number of IP indicators in the upload

URLs int64Optional

Number of URL indicators in the upload

LatestUploadStatus IndicatorFeedGetResponseLatestUploadStatusOptional

Status of the latest snapshot uploaded

One of the following:
const IndicatorFeedGetResponseLatestUploadStatusMirroring IndicatorFeedGetResponseLatestUploadStatus = "Mirroring"
const IndicatorFeedGetResponseLatestUploadStatusUnifying IndicatorFeedGetResponseLatestUploadStatus = "Unifying"
const IndicatorFeedGetResponseLatestUploadStatusLoading IndicatorFeedGetResponseLatestUploadStatus = "Loading"
const IndicatorFeedGetResponseLatestUploadStatusProvisioning IndicatorFeedGetResponseLatestUploadStatus = "Provisioning"
const IndicatorFeedGetResponseLatestUploadStatusComplete IndicatorFeedGetResponseLatestUploadStatus = "Complete"
const IndicatorFeedGetResponseLatestUploadStatusError IndicatorFeedGetResponseLatestUploadStatus = "Error"
ModifiedOn TimeOptional

The date and time when the data entry was last modified

formatdate-time
Name stringOptional

The name of the indicator feed

ProviderID int64Optional

The unique identifier for the provider

ProviderName stringOptional

The provider of the indicator feed

Get indicator feed metadata

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/intel"
  "github.com/cloudflare/cloudflare-go/option"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
    option.WithAPIEmail("user@example.com"),
  )
  indicatorFeed, err := client.Intel.IndicatorFeeds.Get(
    context.TODO(),
    int64(12),
    intel.IndicatorFeedGetParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", indicatorFeed.ID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": 1,
    "created_on": "2023-05-12T12:21:56.777653Z",
    "description": "example feed description",
    "is_attributable": false,
    "is_downloadable": false,
    "is_public": false,
    "last_upload_summary": {
      "persisted": {
        "domains_added": 2,
        "domains_removed": 1,
        "ips_added": 0,
        "ips_removed": 0,
        "urls_added": 0,
        "urls_removed": 0
      },
      "skipped": {
        "allowlisted_domains": 1,
        "expired_indicators": 0,
        "invalid_indicators": 0
      },
      "uploaded": {
        "domains": 3,
        "ips": 0,
        "urls": 0
      }
    },
    "latest_upload_status": "Complete",
    "modified_on": "2023-06-18T03:13:34.123321Z",
    "name": "example_feed_1",
    "provider_id": 1,
    "provider_name": "provider_name"
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": 1,
    "created_on": "2023-05-12T12:21:56.777653Z",
    "description": "example feed description",
    "is_attributable": false,
    "is_downloadable": false,
    "is_public": false,
    "last_upload_summary": {
      "persisted": {
        "domains_added": 2,
        "domains_removed": 1,
        "ips_added": 0,
        "ips_removed": 0,
        "urls_added": 0,
        "urls_removed": 0
      },
      "skipped": {
        "allowlisted_domains": 1,
        "expired_indicators": 0,
        "invalid_indicators": 0
      },
      "uploaded": {
        "domains": 3,
        "ips": 0,
        "urls": 0
      }
    },
    "latest_upload_status": "Complete",
    "modified_on": "2023-06-18T03:13:34.123321Z",
    "name": "example_feed_1",
    "provider_id": 1,
    "provider_name": "provider_name"
  }
}