Skip to content
Start here

Network Interconnects

Network InterconnectsCNIs

List existing CNI objects
GET/accounts/{account_id}/cni/cnis
Get information about a CNI object
GET/accounts/{account_id}/cni/cnis/{cni}
Create a new CNI object
POST/accounts/{account_id}/cni/cnis
Modify stored information about a CNI object
PUT/accounts/{account_id}/cni/cnis/{cni}
Delete a specified CNI object
DELETE/accounts/{account_id}/cni/cnis/{cni}
ModelsExpand Collapse
CNIListResponse { items, next }
items: array of { id, account, cust_ip, 4 more }
id: string
formatuuid
account: string

Customer account tag

cust_ip: string

Customer end of the point-to-point link

This should always be inside the same prefix as p2p_ip.

formatA.B.C.D/N
interconnect: string

Interconnect identifier hosting this CNI

magic: { conduit_name, description, mtu }
conduit_name: string
description: string
mtu: number
formatint32
minimum0
p2p_ip: string

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: optional { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: array of string

Extra set of static prefixes to advertise to the customer’s end of the session

md5_key: optional string

MD5 key to use for session authentication.

Note that this is not a security measure. MD5 is not a valid security mechanism, and the key is not treated as a secret value. This is only supported for preventing misconfiguration, not for defending against malicious attacks.

The MD5 key, if set, must be of non-zero length and consist only of the following types of character:

  • ASCII alphanumerics: [a-zA-Z0-9]
  • Special characters in the set '!@#$%^&*()+[]{}<>/.,;:_-~= |`

In other words, MD5 keys may contain any printable ASCII character aside from newline (0x0A), quotation mark ("), vertical tab (0x0B), carriage return (0x0D), tab (0x09), form feed (0x0C), and the question mark (?). Requests specifying an MD5 key with one or more of these disallowed characters will be rejected.

CNIGetResponse { id, account, cust_ip, 4 more }
id: string
formatuuid
account: string

Customer account tag

cust_ip: string

Customer end of the point-to-point link

This should always be inside the same prefix as p2p_ip.

formatA.B.C.D/N
interconnect: string

Interconnect identifier hosting this CNI

magic: { conduit_name, description, mtu }
conduit_name: string
description: string
mtu: number
formatint32
minimum0
p2p_ip: string

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: optional { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: array of string

Extra set of static prefixes to advertise to the customer’s end of the session

md5_key: optional string

MD5 key to use for session authentication.

Note that this is not a security measure. MD5 is not a valid security mechanism, and the key is not treated as a secret value. This is only supported for preventing misconfiguration, not for defending against malicious attacks.

The MD5 key, if set, must be of non-zero length and consist only of the following types of character:

  • ASCII alphanumerics: [a-zA-Z0-9]
  • Special characters in the set '!@#$%^&*()+[]{}<>/.,;:_-~= |`

In other words, MD5 keys may contain any printable ASCII character aside from newline (0x0A), quotation mark ("), vertical tab (0x0B), carriage return (0x0D), tab (0x09), form feed (0x0C), and the question mark (?). Requests specifying an MD5 key with one or more of these disallowed characters will be rejected.

CNICreateResponse { id, account, cust_ip, 4 more }
id: string
formatuuid
account: string

Customer account tag

cust_ip: string

Customer end of the point-to-point link

This should always be inside the same prefix as p2p_ip.

formatA.B.C.D/N
interconnect: string

Interconnect identifier hosting this CNI

magic: { conduit_name, description, mtu }
conduit_name: string
description: string
mtu: number
formatint32
minimum0
p2p_ip: string

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: optional { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: array of string

Extra set of static prefixes to advertise to the customer’s end of the session

md5_key: optional string

MD5 key to use for session authentication.

Note that this is not a security measure. MD5 is not a valid security mechanism, and the key is not treated as a secret value. This is only supported for preventing misconfiguration, not for defending against malicious attacks.

The MD5 key, if set, must be of non-zero length and consist only of the following types of character:

  • ASCII alphanumerics: [a-zA-Z0-9]
  • Special characters in the set '!@#$%^&*()+[]{}<>/.,;:_-~= |`

In other words, MD5 keys may contain any printable ASCII character aside from newline (0x0A), quotation mark ("), vertical tab (0x0B), carriage return (0x0D), tab (0x09), form feed (0x0C), and the question mark (?). Requests specifying an MD5 key with one or more of these disallowed characters will be rejected.

CNIUpdateResponse { id, account, cust_ip, 4 more }
id: string
formatuuid
account: string

Customer account tag

cust_ip: string

Customer end of the point-to-point link

This should always be inside the same prefix as p2p_ip.

formatA.B.C.D/N
interconnect: string

Interconnect identifier hosting this CNI

magic: { conduit_name, description, mtu }
conduit_name: string
description: string
mtu: number
formatint32
minimum0
p2p_ip: string

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: optional { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: array of string

Extra set of static prefixes to advertise to the customer’s end of the session

md5_key: optional string

MD5 key to use for session authentication.

Note that this is not a security measure. MD5 is not a valid security mechanism, and the key is not treated as a secret value. This is only supported for preventing misconfiguration, not for defending against malicious attacks.

The MD5 key, if set, must be of non-zero length and consist only of the following types of character:

  • ASCII alphanumerics: [a-zA-Z0-9]
  • Special characters in the set '!@#$%^&*()+[]{}<>/.,;:_-~= |`

In other words, MD5 keys may contain any printable ASCII character aside from newline (0x0A), quotation mark ("), vertical tab (0x0B), carriage return (0x0D), tab (0x09), form feed (0x0C), and the question mark (?). Requests specifying an MD5 key with one or more of these disallowed characters will be rejected.

Network InterconnectsInterconnects

List existing interconnects
GET/accounts/{account_id}/cni/interconnects
Get information about an interconnect object
GET/accounts/{account_id}/cni/interconnects/{icon}
Create a new interconnect
POST/accounts/{account_id}/cni/interconnects
Delete an interconnect object
DELETE/accounts/{account_id}/cni/interconnects/{icon}
Generate the Letter of Authorization (LOA) for a given interconnect
GET/accounts/{account_id}/cni/interconnects/{icon}/loa
Get the current status of an interconnect object
GET/accounts/{account_id}/cni/interconnects/{icon}/status
ModelsExpand Collapse
InterconnectListResponse { items, next }
items: array of { account, facility, name, 5 more } or { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: { address, name }
address: array of string
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner: optional string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner: optional string
speed: optional "50M" or "100M" or "200M" or 9 more

Bandwidth structure as visible through the customer-facing API.

One of the following:
"50M"
"100M"
"200M"
"300M"
"400M"
"500M"
"1G"
"2G"
"5G"
"10G"
"20G"
"50G"
InterconnectGetResponse = { account, facility, name, 5 more } or { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: { address, name }
address: array of string
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner: optional string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner: optional string
speed: optional "50M" or "100M" or "200M" or 9 more

Bandwidth structure as visible through the customer-facing API.

One of the following:
"50M"
"100M"
"200M"
"300M"
"400M"
"500M"
"1G"
"2G"
"5G"
"10G"
"20G"
"50G"
InterconnectCreateResponse = { account, facility, name, 5 more } or { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: { address, name }
address: array of string
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner: optional string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner: optional string
speed: optional "50M" or "100M" or "200M" or 9 more

Bandwidth structure as visible through the customer-facing API.

One of the following:
"50M"
"100M"
"200M"
"300M"
"400M"
"500M"
"1G"
"2G"
"5G"
"10G"
"20G"
"50G"
InterconnectStatusResponse = { state } or { state, reason } or { state, reason } or { state }
One of the following:
Pending { state }
state: "Pending"
Down { state, reason }
state: "Down"
reason: optional string

Diagnostic information, if available

Unhealthy { state, reason }
state: "Unhealthy"
reason: optional string

Diagnostic information, if available

Healthy { state }
state: "Healthy"

Network InterconnectsSettings

Get the current settings for the active account
GET/accounts/{account_id}/cni/settings
Update the current settings for the active account
PUT/accounts/{account_id}/cni/settings
ModelsExpand Collapse
SettingGetResponse { default_asn }
default_asn: number
formatint32
minimum0
SettingUpdateResponse { default_asn }
default_asn: number
formatint32
minimum0

Network InterconnectsSlots

Get information about the specified slot
GET/accounts/{account_id}/cni/slots/{slot}
ModelsExpand Collapse
SlotListResponse { items, next }
items: array of { id, facility, occupied, 3 more }
id: string

Slot ID

formatuuid
facility: { address, name }
address: array of string
name: string
occupied: boolean

Whether the slot is occupied or not

site: string
speed: string
account: optional string

Customer account tag

SlotGetResponse { id, facility, occupied, 3 more }
id: string

Slot ID

formatuuid
facility: { address, name }
address: array of string
name: string
occupied: boolean

Whether the slot is occupied or not

site: string
speed: string
account: optional string

Customer account tag