Skip to content
Start here

Get certificate distribution by dimension

radar.ct.summary(Literal["CA", "CA_OWNER", "DURATION", 11 more]dimension, CTSummaryParams**kwargs) -> CTSummaryResponse
GET/radar/ct/summary/{dimension}

Retrieves an aggregated summary of certificates grouped by the specified dimension.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
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)
User Details WriteUser Details Read
ParametersExpand Collapse
dimension: Literal["CA", "CA_OWNER", "DURATION", 11 more]

Specifies the certificate attribute by which to group the results.

One of the following:
"CA"
"CA_OWNER"
"DURATION"
"ENTRY_TYPE"
"EXPIRATION_STATUS"
"HAS_IPS"
"HAS_WILDCARDS"
"LOG"
"LOG_API"
"LOG_OPERATOR"
"PUBLIC_KEY_ALGORITHM"
"SIGNATURE_ALGORITHM"
"TLD"
"VALIDATION_LEVEL"
ca: Optional[Sequence[str]]

Filters results by certificate authority.

ca_owner: Optional[Sequence[str]]

Filters results by certificate authority owner.

date_end: Optional[Sequence[Union[str, datetime]]]

End of the date range (inclusive). Alternative to dateRange; provide together with dateStart. When requesting comparison series, every series must resolve to the same duration as the main series. Each dateStart/dateEnd is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected.

date_range: Optional[Sequence[str]]

Filters results by relative date range ending at the current time, with each value producing a separate series. Use <n>d for days (up to 364d) or <n>w for weeks (up to 52w). Append control to request the equivalent previous period for comparison: the comparison window is shifted back by the current window’s length rounded up to a whole number of weeks, so it keeps the same weekday alignment and does not overlap the current window (e.g. 7dcontrol covers days -14 to -7, 10dcontrol covers days -24 to -14). For example, pass 7d and 7dcontrol to compare this week with the previous week. All series must resolve to the same duration as the main series; relative ranges (including control) satisfy this automatically. Use this parameter or set specific start and end dates (dateStart and dateEnd parameters).

date_start: Optional[Sequence[Union[str, datetime]]]

Start of the date range. Alternative to dateRange; provide together with dateEnd. When requesting comparison series, every series must resolve to the same duration as the main series. Each dateStart/dateEnd is floored to the nearest 15 minutes before evaluation, so windows whose durations match only before alignment may be rejected.

duration: Optional[List[Literal["LTE_3D", "GT_3D_LTE_7D", "GT_7D_LTE_10D", 4 more]]]

Filters results by certificate duration.

One of the following:
"LTE_3D"
"GT_3D_LTE_7D"
"GT_7D_LTE_10D"
"GT_10D_LTE_47D"
"GT_47D_LTE_100D"
"GT_100D_LTE_200D"
"GT_200D"
entry_type: Optional[List[Literal["PRECERTIFICATE", "CERTIFICATE"]]]

Filters results by entry type (certificate vs. pre-certificate). Incompatible with the tld filter/dimension.

One of the following:
"PRECERTIFICATE"
"CERTIFICATE"
expiration_status: Optional[List[Literal["EXPIRED", "VALID"]]]

Filters results by expiration status (expired vs. valid).

One of the following:
"EXPIRED"
"VALID"
format: Optional[Literal["JSON", "CSV"]]

Format in which results will be returned.

One of the following:
"JSON"
"CSV"
has_ips: Optional[Iterable[bool]]

Filters results based on whether the certificates are bound to specific IP addresses.

has_wildcards: Optional[Iterable[bool]]

Filters results based on whether the certificates contain wildcard domains.

limit_per_group: Optional[int]

Limits the number of objects per group to the top items within the specified time range. When item count exceeds the limit, extra items appear grouped under an “other” category. Only supported on high-cardinality dimensions; otherwise the request is rejected. Minimum value is 2.

log: Optional[Sequence[str]]

Filters results by certificate log. Incompatible with the tld filter/dimension.

log_api: Optional[List[Literal["RFC6962", "STATIC"]]]

Filters results by certificate log API (RFC6962 vs. static). Incompatible with the tld filter/dimension.

One of the following:
"RFC6962"
"STATIC"
log_operator: Optional[Sequence[str]]

Filters results by certificate log operator. Incompatible with the tld filter/dimension.

name: Optional[Sequence[str]]

Array of names used to label the series in the response.

normalization: Optional[Literal["RAW_VALUES", "PERCENTAGE"]]

Normalization method applied to the results. Refer to Normalization methods.

One of the following:
"RAW_VALUES"
"PERCENTAGE"
public_key_algorithm: Optional[List[Literal["DSA", "ECDSA", "RSA"]]]

Filters results by public key algorithm.

One of the following:
"DSA"
"ECDSA"
"RSA"
signature_algorithm: Optional[List[Literal["DSA_SHA_1", "DSA_SHA_256", "ECDSA_SHA_1", 12 more]]]

Filters results by signature algorithm.

One of the following:
"DSA_SHA_1"
"DSA_SHA_256"
"ECDSA_SHA_1"
"ECDSA_SHA_256"
"ECDSA_SHA_384"
"ECDSA_SHA_512"
"PSS_SHA_256"
"PSS_SHA_384"
"PSS_SHA_512"
"RSA_MD2"
"RSA_MD5"
"RSA_SHA_1"
"RSA_SHA_256"
"RSA_SHA_384"
"RSA_SHA_512"
tld: Optional[Sequence[str]]

Filters results by top-level domain. Incompatible with the log, logApi, logOperator, and entryType filters/dimensions.

unique_entries: Optional[List[Literal["true", "false"]]]

Specifies whether to filter out duplicate certificates and pre-certificates. Set to true for unique entries only.

One of the following:
"true"
"false"
validation_level: Optional[List[Literal["DOMAIN", "ORGANIZATION", "EXTENDED"]]]

Filters results by validation level.

One of the following:
"DOMAIN"
"ORGANIZATION"
"EXTENDED"
ReturnsExpand Collapse
class CTSummaryResponse:
meta: Meta

Metadata for the results.

confidence_info: MetaConfidenceInfo
annotations: List[MetaConfidenceInfoAnnotation]
data_source: Literal["ALL", "AI_BOTS", "AI_GATEWAY", 22 more]

Data source for annotations.

One of the following:
"ALL"
"AI_BOTS"
"AI_GATEWAY"
"BGP"
"BOTS"
"CONNECTION_ANOMALY"
"CT"
"DNS"
"DNS_MAGNITUDE"
"DNS_AS112"
"DOS"
"EMAIL_ROUTING"
"EMAIL_SECURITY"
"FW"
"FW_PG"
"HTTP"
"HTTP_CONTROL"
"HTTP_CRAWLER_REFERER"
"HTTP_ORIGINS"
"IQI"
"LEAKED_CREDENTIALS"
"NET"
"ROBOTS_TXT"
"SPEED"
"WORKERS_AI"
description: str
end_date: datetime
formatdate-time
event_type: Literal["EVENT", "GENERAL", "OUTAGE", 3 more]

Event type for annotations.

One of the following:
"EVENT"
"GENERAL"
"OUTAGE"
"PARTIAL_PROJECTION"
"PIPELINE"
"TRAFFIC_ANOMALY"
is_instantaneous: bool

Whether event is a single point in time or a time range.

linked_url: str
formaturi
start_date: datetime
formatdate-time
tags: Optional[List[str]]
level: int

Provides an indication of how much confidence Cloudflare has in the data.

date_range: List[MetaDateRange]
end_time: datetime

Adjusted end of date range.

formatdate-time
start_time: datetime

Adjusted start of date range.

formatdate-time
last_updated: datetime

Timestamp of the last dataset update.

formatdate-time
normalization: Literal["PERCENTAGE", "MIN0_MAX", "MIN_MAX", 5 more]

Normalization method applied to the results. Refer to Normalization methods.

One of the following:
"PERCENTAGE"
"MIN0_MAX"
"MIN_MAX"
"RAW_VALUES"
"PERCENTAGE_CHANGE"
"ROLLING_AVERAGE"
"OVERLAPPED_PERCENTAGE"
"RATIO"
units: List[MetaUnit]

Measurement units for the results.

name: str
value: str
summary_0: Summary0
One of the following:
Dict[str, str]
class Summary0UnionMember1:
rfc6962: str
static: str
class Summary0UnionMember2:
gt_121d: str
gt_16d_lte_31d: str
gt_31d_lte_91d: str
gt_3d_lte_16d: str
gt_91d_lte_121d: str
lte_3d: str
class Summary0UnionMember3:
certificate: str
precertificate: str
class Summary0UnionMember4:
expired: str
valid: str
class Summary0UnionMember5:
negative: str
positive: str
class Summary0UnionMember6:
dsa: str
ecdsa: str
rsa: str
class Summary0UnionMember7:
domain: str
extended: str
organization: str
unknown: str

Get certificate distribution by dimension

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
response = client.radar.ct.summary(
    dimension="CA",
)
print(response.meta)
{
  "result": {
    "meta": {
      "confidenceInfo": {
        "annotations": [
          {
            "dataSource": "ALL",
            "description": "Cable cut in Tonga",
            "endDate": "2019-12-27T18:11:19.117Z",
            "eventType": "EVENT",
            "isInstantaneous": true,
            "linkedUrl": "https://example.com",
            "startDate": "2019-12-27T18:11:19.117Z",
            "tags": [
              "BOT_CLASS"
            ]
          }
        ],
        "level": 0
      },
      "dateRange": [
        {
          "endTime": "2022-09-17T10:22:57.555Z",
          "startTime": "2022-09-16T10:22:57.555Z"
        }
      ],
      "lastUpdated": "2019-12-27T18:11:19.117Z",
      "normalization": "PERCENTAGE",
      "units": [
        {
          "name": "*",
          "value": "requests"
        }
      ]
    },
    "summary_0": {
      "DigiCert": "10.274394",
      "GoDaddy": "8.381743",
      "Internet Security Research Group": "63.40249"
    }
  },
  "success": true
}
Returns Examples
{
  "result": {
    "meta": {
      "confidenceInfo": {
        "annotations": [
          {
            "dataSource": "ALL",
            "description": "Cable cut in Tonga",
            "endDate": "2019-12-27T18:11:19.117Z",
            "eventType": "EVENT",
            "isInstantaneous": true,
            "linkedUrl": "https://example.com",
            "startDate": "2019-12-27T18:11:19.117Z",
            "tags": [
              "BOT_CLASS"
            ]
          }
        ],
        "level": 0
      },
      "dateRange": [
        {
          "endTime": "2022-09-17T10:22:57.555Z",
          "startTime": "2022-09-16T10:22:57.555Z"
        }
      ],
      "lastUpdated": "2019-12-27T18:11:19.117Z",
      "normalization": "PERCENTAGE",
      "units": [
        {
          "name": "*",
          "value": "requests"
        }
      ]
    },
    "summary_0": {
      "DigiCert": "10.274394",
      "GoDaddy": "8.381743",
      "Internet Security Research Group": "63.40249"
    }
  },
  "success": true
}