---
title: Post Quantum
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api/typescript)

[Radar](https://developers.cloudflare.com/api/typescript/resources/radar)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Post Quantum

#### Post QuantumOrigin

##### [Get Origin Post-Quantum Data Summary](https://developers.cloudflare.com/api/typescript/resources/radar/subresources/post%5Fquantum/subresources/origin/methods/summary)

client.radar.postQuantum.origin.summary("KEY\_AGREEMENT"dimension, OriginSummaryParams { dateEnd, dateRange, dateStart, 2 more } query?, RequestOptionsoptions?): [OriginSummaryResponse](https://developers.cloudflare.com/api/typescript/resources/radar#%28resource%29%20radar.post%5Fquantum.origin%20%3E%20%28model%29%20origin%5Fsummary%5Fresponse%20%3E%20%28schema%29) { meta, summary\_0 } 

GET/radar/post\_quantum/origin/summary/{dimension}

##### [Get Origin Post-Quantum Data Over Time](https://developers.cloudflare.com/api/typescript/resources/radar/subresources/post%5Fquantum/subresources/origin/methods/timeseries%5Fgroups)

client.radar.postQuantum.origin.timeseriesGroups("KEY\_AGREEMENT"dimension, OriginTimeseriesGroupsParams { dateEnd, dateRange, dateStart, 2 more } query?, RequestOptionsoptions?): [OriginTimeseriesGroupsResponse](https://developers.cloudflare.com/api/typescript/resources/radar#%28resource%29%20radar.post%5Fquantum.origin%20%3E%20%28model%29%20origin%5Ftimeseries%5Fgroups%5Fresponse%20%3E%20%28schema%29) { meta, serie\_0 } 

GET/radar/post\_quantum/origin/timeseries\_groups/{dimension}

##### ModelsExpand Collapse 

OriginSummaryResponse { meta, summary\_0 } 

meta: Meta { confidenceInfo, dateRange, lastUpdated, 2 more } 

Metadata for the results.

confidenceInfo: ConfidenceInfo { annotations, level } 

annotations: Array<Annotation\>

dataSource: "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: string

endDate: string

formatdate-time

eventType: "GENERAL" | "OUTAGE" | "PARTIAL\_PROJECTION" | 2 more

Event type for annotations.

One of the following:

"GENERAL"

"OUTAGE"

"PARTIAL\_PROJECTION"

"PIPELINE"

"TRAFFIC\_ANOMALY"

isInstantaneous: boolean

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

linkedUrl: string

formaturi

startDate: string

formatdate-time

tags?: Array<string\>

level: number

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

dateRange: Array<DateRange\>

endTime: string

Adjusted end of date range.

formatdate-time

startTime: string

Adjusted start of date range.

formatdate-time

lastUpdated: string

Timestamp of the last dataset update.

formatdate-time

normalization: "PERCENTAGE" | "MIN0\_MAX" | "MIN\_MAX" | 5 more

Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).

One of the following:

"PERCENTAGE"

"MIN0\_MAX"

"MIN\_MAX"

"RAW\_VALUES"

"PERCENTAGE\_CHANGE"

"ROLLING\_AVERAGE"

"OVERLAPPED\_PERCENTAGE"

"RATIO"

units: Array<Unit\>

Measurement units for the results.

name: string

value: string

summary\_0: Record<string, string\>

OriginTimeseriesGroupsResponse { meta, serie\_0 } 

meta: Meta { aggInterval, confidenceInfo, dateRange, 3 more } 

Metadata for the results.

aggInterval: "FIFTEEN\_MINUTES" | "ONE\_HOUR" | "ONE\_DAY" | 2 more

Aggregation interval of the results (e.g., in 15 minutes or 1 hour intervals). Refer to [Aggregation intervals](https://developers.cloudflare.com/radar/concepts/aggregation-intervals/).

One of the following:

"FIFTEEN\_MINUTES"

"ONE\_HOUR"

"ONE\_DAY"

"ONE\_WEEK"

"ONE\_MONTH"

confidenceInfo: ConfidenceInfo { annotations, level } 

annotations: Array<Annotation\>

dataSource: "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: string

endDate: string

formatdate-time

eventType: "GENERAL" | "OUTAGE" | "PARTIAL\_PROJECTION" | 2 more

Event type for annotations.

One of the following:

"GENERAL"

"OUTAGE"

"PARTIAL\_PROJECTION"

"PIPELINE"

"TRAFFIC\_ANOMALY"

isInstantaneous: boolean

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

linkedUrl: string

formaturi

startDate: string

formatdate-time

tags?: Array<string\>

level: number

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

dateRange: Array<DateRange\>

endTime: string

Adjusted end of date range.

formatdate-time

startTime: string

Adjusted start of date range.

formatdate-time

lastUpdated: string

Timestamp of the last dataset update.

formatdate-time

normalization: "PERCENTAGE" | "MIN0\_MAX" | "MIN\_MAX" | 5 more

Normalization method applied to the results. Refer to [Normalization methods](https://developers.cloudflare.com/radar/concepts/normalization/).

One of the following:

"PERCENTAGE"

"MIN0\_MAX"

"MIN\_MAX"

"RAW\_VALUES"

"PERCENTAGE\_CHANGE"

"ROLLING\_AVERAGE"

"OVERLAPPED\_PERCENTAGE"

"RATIO"

units: Array<Unit\>

Measurement units for the results.

name: string

value: string

serie\_0: Serie0 { timestamps } 

timestamps: Array<string\>

#### Post QuantumTLS

##### [Check Post-Quantum TLS support](https://developers.cloudflare.com/api/typescript/resources/radar/subresources/post%5Fquantum/subresources/tls/methods/support)

client.radar.postQuantum.tls.support(TLSSupportParams { host } query, RequestOptionsoptions?): [TLSSupportResponse](https://developers.cloudflare.com/api/typescript/resources/radar#%28resource%29%20radar.post%5Fquantum.tls%20%3E%20%28model%29%20tls%5Fsupport%5Fresponse%20%3E%20%28schema%29) { bugs, host, kex, 2 more } 

GET/radar/post\_quantum/tls/support

##### ModelsExpand Collapse 

TLSSupportResponse { bugs, host, kex, 2 more } 

bugs: Bugs { hrrFailure, splitClientHello, unknownKeyshare } 

hrrFailure: boolean

Server sends a HelloRetryRequest but fails to complete the handshake after the client sends the second ClientHello. Often caused by non-compliant TLS 1.3 implementations on shared hosting providers.

splitClientHello: boolean

Server rejects fragmented ClientHello caused by large PQ keyshare, but accepts classical (non-PQ) handshakes. Typically caused by middleboxes or firewalls that cannot reassemble split TLS ClientHello messages.

unknownKeyshare: boolean

Server cannot handle an unknown key exchange algorithm in the ClientHello keyshare extension. Compliant servers should respond with HelloRetryRequest for a supported algorithm.

host: string

The host that was tested

kex: number

TLS CurveID of the negotiated key exchange

kexName: string

Human-readable name of the key exchange algorithm

pq: boolean

Whether the negotiated key exchange uses Post-Quantum cryptography (specifically X25519MLKEM768)