import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.webhooks.rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0',
);
$resend = Resend::client('re_xxxxxxxxx');
$webhook = $resend->webhooks->rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
);
import resend
resend.api_key = 're_xxxxxxxxx'
webhook = resend.Webhooks.rotate_signing_secret(
webhook_id='4dd369bc-aa82-4ff3-97de-514ae3000ee0',
)
require 'resend'
Resend.api_key = 're_xxxxxxxxx'
webhook = Resend::Webhooks.rotate_signing_secret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
)
package main
import "github.com/resend/resend-go/v4"
func main() {
client := resend.NewClient("re_xxxxxxxxx")
client.Webhooks.RotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0",
)
}
use resend_rs::{Resend, Result};
#[tokio::main]
async fn main() -> Result<()> {
let resend = Resend::new("re_xxxxxxxxx");
let _webhook = resend
.webhooks
.rotate_signing_secret("4dd369bc-aa82-4ff3-97de-514ae3000ee0")
.await?;
Ok(())
}
import com.resend.*;
import com.resend.core.exception.ResendException;
import com.resend.services.webhooks.model.RotateWebhookSigningSecretResponseSuccess;
public class Main {
public static void main(String[] args) throws ResendException {
Resend resend = new Resend("re_xxxxxxxxx");
RotateWebhookSigningSecretResponseSuccess webhook = resend.webhooks().rotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0"
);
}
}
using Resend;
IResend resend = ResendClient.Create( "re_xxxxxxxxx" ); // Or from DI
var resp = await resend.WebhookRotateSigningSecretAsync(
new Guid( "4dd369bc-aa82-4ff3-97de-514ae3000ee0" )
);
Console.WriteLine( "Signing secret={0}", resp.Content.SigningSecret );
curl -X POST 'https://api.resend.com/webhooks/4dd369bc-aa82-4ff3-97de-514ae3000ee0/signing-secret/rotate' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0
{
"object": "webhook",
"id": "4dd369bc-aa82-4ff3-97de-514ae3000ee0",
"signing_secret": "whsec_xxxxxxxxxx"
}
Rotate Signing Secret
Generate a new signing secret for a webhook.
POST
/
webhooks
/
:webhook_id
/
signing-secret
/
rotate
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.webhooks.rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0',
);
$resend = Resend::client('re_xxxxxxxxx');
$webhook = $resend->webhooks->rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
);
import resend
resend.api_key = 're_xxxxxxxxx'
webhook = resend.Webhooks.rotate_signing_secret(
webhook_id='4dd369bc-aa82-4ff3-97de-514ae3000ee0',
)
require 'resend'
Resend.api_key = 're_xxxxxxxxx'
webhook = Resend::Webhooks.rotate_signing_secret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
)
package main
import "github.com/resend/resend-go/v4"
func main() {
client := resend.NewClient("re_xxxxxxxxx")
client.Webhooks.RotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0",
)
}
use resend_rs::{Resend, Result};
#[tokio::main]
async fn main() -> Result<()> {
let resend = Resend::new("re_xxxxxxxxx");
let _webhook = resend
.webhooks
.rotate_signing_secret("4dd369bc-aa82-4ff3-97de-514ae3000ee0")
.await?;
Ok(())
}
import com.resend.*;
import com.resend.core.exception.ResendException;
import com.resend.services.webhooks.model.RotateWebhookSigningSecretResponseSuccess;
public class Main {
public static void main(String[] args) throws ResendException {
Resend resend = new Resend("re_xxxxxxxxx");
RotateWebhookSigningSecretResponseSuccess webhook = resend.webhooks().rotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0"
);
}
}
using Resend;
IResend resend = ResendClient.Create( "re_xxxxxxxxx" ); // Or from DI
var resp = await resend.WebhookRotateSigningSecretAsync(
new Guid( "4dd369bc-aa82-4ff3-97de-514ae3000ee0" )
);
Console.WriteLine( "Signing secret={0}", resp.Content.SigningSecret );
curl -X POST 'https://api.resend.com/webhooks/4dd369bc-aa82-4ff3-97de-514ae3000ee0/signing-secret/rotate' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0
{
"object": "webhook",
"id": "4dd369bc-aa82-4ff3-97de-514ae3000ee0",
"signing_secret": "whsec_xxxxxxxxxx"
}
For 24 hours after the rotation, payloads are signed with both the new and the
previous secret, so either one verifies them. After that, only the new secret
does. Use that window to update the secret your application uses to verify
requests without dropping events.
Path Parameters
Response Fields
string
Always
webhook.string
The Webhook ID.
string
The new signing secret.
import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.webhooks.rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0',
);
$resend = Resend::client('re_xxxxxxxxx');
$webhook = $resend->webhooks->rotateSigningSecret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
);
import resend
resend.api_key = 're_xxxxxxxxx'
webhook = resend.Webhooks.rotate_signing_secret(
webhook_id='4dd369bc-aa82-4ff3-97de-514ae3000ee0',
)
require 'resend'
Resend.api_key = 're_xxxxxxxxx'
webhook = Resend::Webhooks.rotate_signing_secret(
'4dd369bc-aa82-4ff3-97de-514ae3000ee0'
)
package main
import "github.com/resend/resend-go/v4"
func main() {
client := resend.NewClient("re_xxxxxxxxx")
client.Webhooks.RotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0",
)
}
use resend_rs::{Resend, Result};
#[tokio::main]
async fn main() -> Result<()> {
let resend = Resend::new("re_xxxxxxxxx");
let _webhook = resend
.webhooks
.rotate_signing_secret("4dd369bc-aa82-4ff3-97de-514ae3000ee0")
.await?;
Ok(())
}
import com.resend.*;
import com.resend.core.exception.ResendException;
import com.resend.services.webhooks.model.RotateWebhookSigningSecretResponseSuccess;
public class Main {
public static void main(String[] args) throws ResendException {
Resend resend = new Resend("re_xxxxxxxxx");
RotateWebhookSigningSecretResponseSuccess webhook = resend.webhooks().rotateSigningSecret(
"4dd369bc-aa82-4ff3-97de-514ae3000ee0"
);
}
}
using Resend;
IResend resend = ResendClient.Create( "re_xxxxxxxxx" ); // Or from DI
var resp = await resend.WebhookRotateSigningSecretAsync(
new Guid( "4dd369bc-aa82-4ff3-97de-514ae3000ee0" )
);
Console.WriteLine( "Signing secret={0}", resp.Content.SigningSecret );
curl -X POST 'https://api.resend.com/webhooks/4dd369bc-aa82-4ff3-97de-514ae3000ee0/signing-secret/rotate' \
-H 'Authorization: Bearer re_xxxxxxxxx'
resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0
{
"object": "webhook",
"id": "4dd369bc-aa82-4ff3-97de-514ae3000ee0",
"signing_secret": "whsec_xxxxxxxxxx"
}
Was this page helpful?
⌘I