Skip to content
Start here

Network Interconnects

Network InterconnectsCNIs

List existing CNI objects
network_interconnects.cnis.list(CNIListParams**kwargs) -> CNIListResponse
GET/accounts/{account_id}/cni/cnis
Get information about a CNI object
network_interconnects.cnis.get(strcni, CNIGetParams**kwargs) -> CNIGetResponse
GET/accounts/{account_id}/cni/cnis/{cni}
Create a new CNI object
network_interconnects.cnis.create(CNICreateParams**kwargs) -> CNICreateResponse
POST/accounts/{account_id}/cni/cnis
Modify stored information about a CNI object
network_interconnects.cnis.update(strcni, CNIUpdateParams**kwargs) -> CNIUpdateResponse
PUT/accounts/{account_id}/cni/cnis/{cni}
Delete a specified CNI object
network_interconnects.cnis.delete(strcni, CNIDeleteParams**kwargs)
DELETE/accounts/{account_id}/cni/cnis/{cni}
ModelsExpand Collapse
class CNIListResponse:
items: List[Item]
id: str
formatuuid
account: str

Customer account tag

cust_ip: str

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: str

Interconnect identifier hosting this CNI

magic: ItemMagic
conduit_name: str
description: str
mtu: int
formatint32
minimum0
p2p_ip: str

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: Optional[ItemBGP]
customer_asn: int

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: List[str]

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

md5_key: Optional[str]

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.

class CNIGetResponse:
id: str
formatuuid
account: str

Customer account tag

cust_ip: str

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: str

Interconnect identifier hosting this CNI

magic: Magic
conduit_name: str
description: str
mtu: int
formatint32
minimum0
p2p_ip: str

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: Optional[BGP]
customer_asn: int

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: List[str]

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

md5_key: Optional[str]

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.

class CNICreateResponse:
id: str
formatuuid
account: str

Customer account tag

cust_ip: str

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: str

Interconnect identifier hosting this CNI

magic: Magic
conduit_name: str
description: str
mtu: int
formatint32
minimum0
p2p_ip: str

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: Optional[BGP]
customer_asn: int

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: List[str]

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

md5_key: Optional[str]

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.

class CNIUpdateResponse:
id: str
formatuuid
account: str

Customer account tag

cust_ip: str

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: str

Interconnect identifier hosting this CNI

magic: Magic
conduit_name: str
description: str
mtu: int
formatint32
minimum0
p2p_ip: str

Cloudflare end of the point-to-point link

formatA.B.C.D/N
bgp: Optional[BGP]
customer_asn: int

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: List[str]

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

md5_key: Optional[str]

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
network_interconnects.interconnects.list(InterconnectListParams**kwargs) -> InterconnectListResponse
GET/accounts/{account_id}/cni/interconnects
Get information about an interconnect object
network_interconnects.interconnects.get(stricon, InterconnectGetParams**kwargs) -> InterconnectGetResponse
GET/accounts/{account_id}/cni/interconnects/{icon}
Create a new interconnect
network_interconnects.interconnects.create(InterconnectCreateParams**kwargs) -> InterconnectCreateResponse
POST/accounts/{account_id}/cni/interconnects
Delete an interconnect object
network_interconnects.interconnects.delete(stricon, InterconnectDeleteParams**kwargs)
DELETE/accounts/{account_id}/cni/interconnects/{icon}
Generate the Letter of Authorization (LOA) for a given interconnect
network_interconnects.interconnects.loa(stricon, InterconnectLOAParams**kwargs)
GET/accounts/{account_id}/cni/interconnects/{icon}/loa
Get the current status of an interconnect object
network_interconnects.interconnects.status(stricon, InterconnectStatusParams**kwargs) -> InterconnectStatusResponse
GET/accounts/{account_id}/cni/interconnects/{icon}/status
ModelsExpand Collapse
class InterconnectListResponse:
items: List[Item]
One of the following:
class ItemNscInterconnectPhysicalBody:
account: str
facility: ItemNscInterconnectPhysicalBodyFacility
address: List[str]
name: str
name: str
site: str

A Cloudflare site name.

slot_id: str
formatuuid
speed: str
type: str
owner: Optional[str]
class ItemNscInterconnectGcpPartnerBody:
account: str
name: str
region: str
type: str
owner: Optional[str]
speed: Optional[Literal["50M", "100M", "200M", 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"
One of the following:
class NscInterconnectPhysicalBody:
account: str
facility: NscInterconnectPhysicalBodyFacility
address: List[str]
name: str
name: str
site: str

A Cloudflare site name.

slot_id: str
formatuuid
speed: str
type: str
owner: Optional[str]
class NscInterconnectGcpPartnerBody:
account: str
name: str
region: str
type: str
owner: Optional[str]
speed: Optional[Literal["50M", "100M", "200M", 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"
One of the following:
class NscInterconnectPhysicalBody:
account: str
facility: NscInterconnectPhysicalBodyFacility
address: List[str]
name: str
name: str
site: str

A Cloudflare site name.

slot_id: str
formatuuid
speed: str
type: str
owner: Optional[str]
class NscInterconnectGcpPartnerBody:
account: str
name: str
region: str
type: str
owner: Optional[str]
speed: Optional[Literal["50M", "100M", "200M", 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"
One of the following:
class Pending:
state: Literal["Pending"]
class Down:
state: Literal["Down"]
reason: Optional[str]

Diagnostic information, if available

class Unhealthy:
state: Literal["Unhealthy"]
reason: Optional[str]

Diagnostic information, if available

class Healthy:
state: Literal["Healthy"]

Network InterconnectsSettings

Get the current settings for the active account
network_interconnects.settings.get(SettingGetParams**kwargs) -> SettingGetResponse
GET/accounts/{account_id}/cni/settings
Update the current settings for the active account
network_interconnects.settings.update(SettingUpdateParams**kwargs) -> SettingUpdateResponse
PUT/accounts/{account_id}/cni/settings
ModelsExpand Collapse
class SettingGetResponse:
default_asn: int
formatint32
minimum0
class SettingUpdateResponse:
default_asn: int
formatint32
minimum0

Network InterconnectsSlots

Retrieve a list of all slots matching the specified parameters
network_interconnects.slots.list(SlotListParams**kwargs) -> SlotListResponse
GET/accounts/{account_id}/cni/slots
Get information about the specified slot
network_interconnects.slots.get(strslot, SlotGetParams**kwargs) -> SlotGetResponse
GET/accounts/{account_id}/cni/slots/{slot}
ModelsExpand Collapse
class SlotListResponse:
items: List[Item]
id: str

Slot ID

formatuuid
facility: ItemFacility
address: List[str]
name: str
occupied: bool

Whether the slot is occupied or not

site: str
speed: str
account: Optional[str]

Customer account tag

class SlotGetResponse:
id: str

Slot ID

formatuuid
facility: Facility
address: List[str]
name: str
occupied: bool

Whether the slot is occupied or not

site: str
speed: str
account: Optional[str]

Customer account tag