Skip to content
Start here

Batch create or replace origin cloud region mappings

client.Cache.OriginCloudRegions.BulkUpdate(ctx, params) (*OriginCloudRegionBulkUpdateResponse, error)
PUT/zones/{zone_id}/origin/cloud_regions/batch

Upserts up to 100 IP-to-cloud-region mappings in a single request. Items in the request body are created or replaced; mappings not included in the request body are preserved unchanged (this is a merge operation, not a full collection replacement). Each item is validated independently — valid items are applied and invalid items are returned in the failed array. The vendor and region for every item are validated against the list from GET /zones/{zone_id}/origin/cloud_regions/supported_regions.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
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
params OriginCloudRegionBulkUpdateParams
ZoneID param.Field[string]

Path param: Identifier.

maxLength32
Body param.Field[[]OriginCloudRegionBulkUpdateParamsBody]

Body param

OriginIP string

Origin IP address (IPv4 or IPv6). For the single PUT endpoint (PUT /origin/cloud_regions/{origin_ip}), this field must match the path parameter or the request will be rejected with a 400 error. For the batch PUT endpoint, this field identifies which mapping to upsert.

Region string

Cloud vendor region identifier. Must be a valid region for the specified vendor as returned by the supported_regions endpoint.

Vendor OriginCloudRegionBulkUpdateParamsBodyVendor

Cloud vendor hosting the origin. Must be one of the supported vendors.

One of the following:
const OriginCloudRegionBulkUpdateParamsBodyVendorAws OriginCloudRegionBulkUpdateParamsBodyVendor = "aws"
const OriginCloudRegionBulkUpdateParamsBodyVendorAzure OriginCloudRegionBulkUpdateParamsBodyVendor = "azure"
const OriginCloudRegionBulkUpdateParamsBodyVendorGcp OriginCloudRegionBulkUpdateParamsBodyVendor = "gcp"
const OriginCloudRegionBulkUpdateParamsBodyVendorOci OriginCloudRegionBulkUpdateParamsBodyVendor = "oci"
ReturnsExpand Collapse
type OriginCloudRegionBulkUpdateResponse struct{…}

Response result for a batch origin cloud region operation.

Failed []OriginCloudRegionBulkUpdateResponseFailed

Items that could not be applied, with error details.

OriginIP string

The origin IP address for this item.

Error stringOptional

Error message explaining why the item failed. Present only on failed items.

Region stringOptional

Cloud vendor region identifier. Present on succeeded items (the new value for upsert, the deleted value for delete).

Vendor stringOptional

Cloud vendor identifier. Present on succeeded items (the new value for upsert, the deleted value for delete).

Succeeded []OriginCloudRegionBulkUpdateResponseSucceeded

Items that were successfully applied.

OriginIP string

The origin IP address for this item.

Error stringOptional

Error message explaining why the item failed. Present only on failed items.

Region stringOptional

Cloud vendor region identifier. Present on succeeded items (the new value for upsert, the deleted value for delete).

Vendor stringOptional

Cloud vendor identifier. Present on succeeded items (the new value for upsert, the deleted value for delete).

Batch create or replace origin cloud region mappings

package main

import (
  "context"
  "fmt"

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

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  response, err := client.Cache.OriginCloudRegions.BulkUpdate(context.TODO(), cache.OriginCloudRegionBulkUpdateParams{
    ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    Body: []cache.OriginCloudRegionBulkUpdateParamsBody{cache.OriginCloudRegionBulkUpdateParamsBody{
      OriginIP: cloudflare.F("192.0.2.1"),
      Region: cloudflare.F("us-east-1"),
      Vendor: cloudflare.F(cache.OriginCloudRegionBulkUpdateParamsBodyVendorAws),
    }, cache.OriginCloudRegionBulkUpdateParamsBody{
      OriginIP: cloudflare.F("2001:db8::1"),
      Region: cloudflare.F("us-central1"),
      Vendor: cloudflare.F(cache.OriginCloudRegionBulkUpdateParamsBodyVendorGcp),
    }},
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.Failed)
}
{
  "errors": [],
  "messages": [],
  "result": {
    "failed": [],
    "succeeded": [
      {
        "origin_ip": "192.0.2.1",
        "region": "us-east-1",
        "vendor": "aws"
      },
      {
        "origin_ip": "2001:db8::1",
        "region": "us-central1",
        "vendor": "gcp"
      }
    ]
  },
  "success": true
}
{
  "errors": [
    {
      "code": 1164,
      "message": "Maximum number of IP mappings configured for zone."
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}
Returns Examples
{
  "errors": [],
  "messages": [],
  "result": {
    "failed": [],
    "succeeded": [
      {
        "origin_ip": "192.0.2.1",
        "region": "us-east-1",
        "vendor": "aws"
      },
      {
        "origin_ip": "2001:db8::1",
        "region": "us-central1",
        "vendor": "gcp"
      }
    ]
  },
  "success": true
}
{
  "errors": [
    {
      "code": 1164,
      "message": "Maximum number of IP mappings configured for zone."
    }
  ],
  "messages": [],
  "result": null,
  "success": false
}