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 object { items, next }
items: array of object { 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: object { 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 object { 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 object { 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: object { 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 object { 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 object { 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: object { 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 object { 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 object { 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: object { 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 object { 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 object { items, next }
items: array of object { account, facility, name, 5 more } or object { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody object { account, facility, name, 5 more }
account: string
facility: object { 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 object { 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 = object { account, facility, name, 5 more } or object { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody object { account, facility, name, 5 more }
account: string
facility: object { 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 object { 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 = object { account, facility, name, 5 more } or object { account, name, region, 3 more }
One of the following:
NscInterconnectPhysicalBody object { account, facility, name, 5 more }
account: string
facility: object { 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 object { 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 = object { state } or object { state, reason } or object { state, reason } or object { state }
One of the following:
Pending object { state }
state: "Pending"
Down object { state, reason }
state: "Down"
reason: optional string

Diagnostic information, if available

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

Diagnostic information, if available

Healthy object { 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 object { default_asn }
default_asn: number
formatint32
minimum0
SettingUpdateResponse object { 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 object { items, next }
items: array of object { id, facility, occupied, 3 more }
id: string

Slot ID

formatuuid
facility: object { 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 object { id, facility, occupied, 3 more }
id: string

Slot ID

formatuuid
facility: object { 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