Skip to content
Start here

Network Interconnects

Network InterconnectsCNIs

List existing CNI objects
client.networkInterconnects.cnis.list(CNIListParams { account_id, cursor, limit, 2 more } params, RequestOptionsoptions?): CNIListResponse { items, next }
GET/accounts/{account_id}/cni/cnis
Get information about a CNI object
client.networkInterconnects.cnis.get(stringcni, CNIGetParams { account_id } params, RequestOptionsoptions?): CNIGetResponse { id, account, cust_ip, 4 more }
GET/accounts/{account_id}/cni/cnis/{cni}
Create a new CNI object
client.networkInterconnects.cnis.create(CNICreateParams { account_id, account, interconnect, 2 more } params, RequestOptionsoptions?): CNICreateResponse { id, account, cust_ip, 4 more }
POST/accounts/{account_id}/cni/cnis
Modify stored information about a CNI object
client.networkInterconnects.cnis.update(stringcni, CNIUpdateParams { account_id, id, account, 5 more } params, RequestOptionsoptions?): CNIUpdateResponse { id, account, cust_ip, 4 more }
PUT/accounts/{account_id}/cni/cnis/{cni}
Delete a specified CNI object
client.networkInterconnects.cnis.delete(stringcni, CNIDeleteParams { account_id } params, RequestOptionsoptions?): void
DELETE/accounts/{account_id}/cni/cnis/{cni}
ModelsExpand Collapse
CNIListResponse { items, next }
items: Array<Item>
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: 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?: BGP { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: Array<string>

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

md5_key?: string | null

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: 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?: BGP { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: Array<string>

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

md5_key?: string | null

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: 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?: BGP { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: Array<string>

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

md5_key?: string | null

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: 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?: BGP { customer_asn, extra_prefixes, md5_key }
customer_asn: number

ASN used on the customer end of the BGP session

formatint32
minimum0
extra_prefixes: Array<string>

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

md5_key?: string | null

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
client.networkInterconnects.interconnects.list(InterconnectListParams { account_id, cursor, limit, 2 more } params, RequestOptionsoptions?): InterconnectListResponse { items, next }
GET/accounts/{account_id}/cni/interconnects
Get information about an interconnect object
client.networkInterconnects.interconnects.get(stringicon, InterconnectGetParams { account_id } params, RequestOptionsoptions?): InterconnectGetResponse
GET/accounts/{account_id}/cni/interconnects/{icon}
Create a new interconnect
client.networkInterconnects.interconnects.create(InterconnectCreateParamsparams, RequestOptionsoptions?): InterconnectCreateResponse
POST/accounts/{account_id}/cni/interconnects
Delete an interconnect object
client.networkInterconnects.interconnects.delete(stringicon, InterconnectDeleteParams { account_id } params, RequestOptionsoptions?): void
DELETE/accounts/{account_id}/cni/interconnects/{icon}
Generate the Letter of Authorization (LOA) for a given interconnect
client.networkInterconnects.interconnects.loa(stringicon, InterconnectLOAParams { account_id } params, RequestOptionsoptions?): void
GET/accounts/{account_id}/cni/interconnects/{icon}/loa
Get the current status of an interconnect object
client.networkInterconnects.interconnects.status(stringicon, InterconnectStatusParams { account_id } params, RequestOptionsoptions?): InterconnectStatusResponse
GET/accounts/{account_id}/cni/interconnects/{icon}/status
ModelsExpand Collapse
InterconnectListResponse { items, next }
items: Array<NscInterconnectPhysicalBody { account, facility, name, 5 more } | NscInterconnectGcpPartnerBody { account, name, region, 3 more } >
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: Facility { address, name }
address: Array<string>
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner?: string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner?: string
speed?: "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"
InterconnectGetResponse = NscInterconnectPhysicalBody { account, facility, name, 5 more } | NscInterconnectGcpPartnerBody { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: Facility { address, name }
address: Array<string>
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner?: string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner?: string
speed?: "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"
InterconnectCreateResponse = NscInterconnectPhysicalBody { account, facility, name, 5 more } | NscInterconnectGcpPartnerBody { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody { account, facility, name, 5 more }
account: string
facility: Facility { address, name }
address: Array<string>
name: string
name: string
site: string

A Cloudflare site name.

slot_id: string
formatuuid
speed: string
type: string
owner?: string
NscInterconnectGcpPartnerBody { account, name, region, 3 more }
account: string
name: string
region: string
type: string
owner?: string
speed?: "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"
InterconnectStatusResponse = Pending { state } | Down { state, reason } | Unhealthy { state, reason } | Healthy { state }
One of the following:
Pending { state }
state: "Pending"
Down { state, reason }
state: "Down"
reason?: string | null

Diagnostic information, if available

Unhealthy { state, reason }
state: "Unhealthy"
reason?: string | null

Diagnostic information, if available

Healthy { state }
state: "Healthy"

Network InterconnectsSettings

Get the current settings for the active account
client.networkInterconnects.settings.get(SettingGetParams { account_id } params, RequestOptionsoptions?): SettingGetResponse { default_asn }
GET/accounts/{account_id}/cni/settings
Update the current settings for the active account
client.networkInterconnects.settings.update(SettingUpdateParams { account_id, default_asn } params, RequestOptionsoptions?): SettingUpdateResponse { default_asn }
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

Retrieve a list of all slots matching the specified parameters
client.networkInterconnects.slots.list(SlotListParams { account_id, address_contains, cursor, 4 more } params, RequestOptionsoptions?): SlotListResponse { items, next }
GET/accounts/{account_id}/cni/slots
Get information about the specified slot
client.networkInterconnects.slots.get(stringslot, SlotGetParams { account_id } params, RequestOptionsoptions?): SlotGetResponse { id, facility, occupied, 3 more }
GET/accounts/{account_id}/cni/slots/{slot}
ModelsExpand Collapse
SlotListResponse { items, next }
items: Array<Item>
id: string

Slot ID

formatuuid
facility: Facility { address, name }
address: Array<string>
name: string
occupied: boolean

Whether the slot is occupied or not

site: string
speed: string
account?: string

Customer account tag

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

Slot ID

formatuuid
facility: Facility { address, name }
address: Array<string>
name: string
occupied: boolean

Whether the slot is occupied or not

site: string
speed: string
account?: string

Customer account tag