## Generate Pre Shared Key (PSK) for IPsec tunnels `client.magicTransit.ipsecTunnels.pskGenerate(stringipsecTunnelId, IPSECTunnelPSKGenerateParamsparams, RequestOptionsoptions?): IPSECTunnelPSKGenerateResponse` **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. ### Parameters - `ipsecTunnelId: string` Identifier - `params: IPSECTunnelPSKGenerateParams` - `account_id: string` Path param: Identifier - `body: unknown` Body param ### Returns - `IPSECTunnelPSKGenerateResponse` - `ipsec_tunnel_id?: string` Identifier - `psk?: string` A randomly generated or provided string for use in the IPsec tunnel. - `psk_metadata?: PSKMetadata` The PSK metadata that includes when the PSK was generated. - `last_generated_on?: string` The date and time the tunnel was last modified. ### Example ```node import Cloudflare from 'cloudflare'; const client = new Cloudflare({ apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted }); const response = await client.magicTransit.ipsecTunnels.pskGenerate( '023e105f4ecef8ad9ca31a8372d0c353', { account_id: '023e105f4ecef8ad9ca31a8372d0c353', body: {}, }, ); console.log(response.ipsec_tunnel_id); ``` #### Response ```json { "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 } ```