Skip to content
Start here

Create BGP Prefix

client.Addressing.Prefixes.BGPPrefixes.New(ctx, prefixID, params) (*BGPPrefix, error)
POST/accounts/{account_id}/addressing/prefixes/{prefix_id}/bgp/prefixes

Create a BGP prefix, controlling the BGP advertisement status of a specific subnet. When created, BGP prefixes are initially withdrawn, and can be advertised with the Update BGP Prefix API.

Security

API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
ParametersExpand Collapse
prefixID string

Identifier of an IP Prefix.

maxLength32
params PrefixBGPPrefixNewParams
AccountID param.Field[string]

Path param: Identifier of a Cloudflare account.

maxLength32
CIDR param.Field[string]

Body param: IP Prefix in Classless Inter-Domain Routing format.

ReturnsExpand Collapse
type BGPPrefix struct{…}
ID stringoptional

Identifier of BGP Prefix.

maxLength32
ASN int64optional

Autonomous System Number (ASN) the prefix will be advertised under.

ASNPrependCount int64optional

Number of times to prepend the Cloudflare ASN to the BGP AS-Path attribute

maximum3
minimum0
AutoAdvertiseWithdraw booloptional

Determines if Cloudflare advertises a BYOIP BGP prefix even when there is no matching BGP prefix in the Magic routing table. When true, Cloudflare will automatically withdraw the BGP prefix when there are no matching BGP routes, and will resume advertising when there is at least one matching BGP route.

BGPSignalOpts BGPPrefixBGPSignalOptsoptional
Enabled booloptional

Whether control of advertisement of the prefix to the Internet is enabled to be performed via BGP signal

ModifiedAt Timeoptional

Last time BGP signaling control was toggled. This field is null if BGP signaling has never been enabled.

formatdate-time
CIDR stringoptional

IP Prefix in Classless Inter-Domain Routing format.

CreatedAt Timeoptional
formatdate-time
ModifiedAt Timeoptional
formatdate-time
OnDemand BGPPrefixOnDemandoptional
Advertised booloptional

Prefix advertisement status to the Internet. This field is only not ‘null’ if on demand is enabled.

AdvertisedModifiedAt Timeoptional

Last time the advertisement status was changed. This field is only not ‘null’ if on demand is enabled.

formatdate-time
OnDemandEnabled booloptional

Whether advertisement of the prefix to the Internet may be dynamically enabled or disabled.

OnDemandLocked booloptional

Whether the advertisement status of the prefix is locked, meaning it cannot be changed.

Create BGP Prefix

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/addressing"
  "github.com/cloudflare/cloudflare-go/option"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
    option.WithAPIEmail("user@example.com"),
  )
  bgpPrefix, err := client.Addressing.Prefixes.BGPPrefixes.New(
    context.TODO(),
    "2af39739cc4e3b5910c918468bb89828",
    addressing.PrefixBGPPrefixNewParams{
      AccountID: cloudflare.F("258def64c72dae45f3e4c8516e2111f2"),
      CIDR: cloudflare.F("192.0.2.0/24"),
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", bgpPrefix.ID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": "7009ba364c7a5760798ceb430e603b74",
    "asn": 13335,
    "asn_prepend_count": 2,
    "auto_advertise_withdraw": true,
    "bgp_signal_opts": {
      "enabled": false,
      "modified_at": "2014-01-01T05:20:00.12345Z"
    },
    "cidr": "192.0.2.0/24",
    "created_at": "2014-01-01T05:20:00.12345Z",
    "modified_at": "2014-01-01T05:20:00.12345Z",
    "on_demand": {
      "advertised": true,
      "advertised_modified_at": "2014-01-01T05:20:00.12345Z",
      "on_demand_enabled": true,
      "on_demand_locked": false
    }
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": "7009ba364c7a5760798ceb430e603b74",
    "asn": 13335,
    "asn_prepend_count": 2,
    "auto_advertise_withdraw": true,
    "bgp_signal_opts": {
      "enabled": false,
      "modified_at": "2014-01-01T05:20:00.12345Z"
    },
    "cidr": "192.0.2.0/24",
    "created_at": "2014-01-01T05:20:00.12345Z",
    "modified_at": "2014-01-01T05:20:00.12345Z",
    "on_demand": {
      "advertised": true,
      "advertised_modified_at": "2014-01-01T05:20:00.12345Z",
      "on_demand_enabled": true,
      "on_demand_locked": false
    }
  }
}