Skip to content
Start here

Generate Pre Shared Key (PSK) for IPsec tunnels

client.MagicTransit.IPSECTunnels.PSKGenerate(ctx, ipsecTunnelID, params) (*IPSECTunnelPSKGenerateResponse, error)
POST/accounts/{account_id}/magic/ipsec_tunnels/{ipsec_tunnel_id}/psk_generate

Generates a Pre Shared Key for a specific IPsec tunnel used in the IKE session. Use ?validate_only=true as an optional query parameter to only run validation without persisting changes. After a PSK is generated, the PSK is immediately persisted to Cloudflare's edge and cannot be retrieved later. Note the PSK in a safe place.

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
Accepted Permissions (at least one required)
Magic WAN WriteMagic Transit Write
ParametersExpand Collapse
ipsecTunnelID string

Identifier

maxLength32
params IPSECTunnelPSKGenerateParams
AccountID param.Field[string]

Path param: Identifier

maxLength32
Body param.Field[unknown]

Body param

ReturnsExpand Collapse
type IPSECTunnelPSKGenerateResponse struct{…}
IPSECTunnelID stringoptional

Identifier

maxLength32
PSK stringoptional

A randomly generated or provided string for use in the IPsec tunnel.

PSKMetadata PSKMetadataoptional

The PSK metadata that includes when the PSK was generated.

LastGeneratedOn Timeoptional

The date and time the tunnel was last modified.

formatdate-time

Generate Pre Shared Key (PSK) for IPsec tunnels

package main

import (
  "context"
  "fmt"

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

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  response, err := client.MagicTransit.IPSECTunnels.PSKGenerate(
    context.TODO(),
    "023e105f4ecef8ad9ca31a8372d0c353",
    magic_transit.IPSECTunnelPSKGenerateParams{
      AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
      Body: map[string]interface{}{
      },
    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", response.IPSECTunnelID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "ipsec_tunnel_id": "023e105f4ecef8ad9ca31a8372d0c353",
    "psk": "O3bwKSjnaoCxDoUxjcq4Rk8ZKkezQUiy",
    "psk_metadata": {
      "last_generated_on": "2017-06-14T05:20:00Z"
    }
  },
  "success": true
}
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"
      }
    }
  ],
  "result": {
    "ipsec_tunnel_id": "023e105f4ecef8ad9ca31a8372d0c353",
    "psk": "O3bwKSjnaoCxDoUxjcq4Rk8ZKkezQUiy",
    "psk_metadata": {
      "last_generated_on": "2017-06-14T05:20:00Z"
    }
  },
  "success": true
}