website/src/content/docs/actors/destroy.mdx
Actors sleep when idle, so destruction is only needed to permanently remove data — not to save compute.
To destroy an actor, use c.destroy() like this:
import { actor } from "rivetkit";
interface UserInput {
email: string;
name: string;
}
const userActor = actor({
createState: (c, input: UserInput) => ({
email: input.email,
name: input.name,
}),
actions: {
deleteAccount: (c) => {
c.destroy();
},
},
});
Send a DELETE request to destroy an actor. This requires a token for authentication:
sk_*) from your RIVET_ENDPOINT URL. Find this in the dashboard under Settings > Advanced > Backend Configuration (e.g. the sk_... portion of https://default:[email protected]).const actorId = "your-actor-id";
const namespace = "default";
const token = "your-token";
await fetch(`https://api.rivet.dev/actors/${actorId}?namespace=${namespace}`, {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
},
});
curl -X DELETE "https://api.rivet.dev/actors/{actorId}?namespace={namespace}" \
-H "Authorization: Bearer {token}"
To find the actor ID, you can list actors first:
curl "https://api.rivet.dev/actors?namespace={namespace}" \
-H "Authorization: Bearer {token}"
To destroy an actor via the dashboard, navigate to the actor and press the red "X" in the top right.
Once destroyed, the onDestroy hook will be called. This can be used to clean up resources related to the actor. For example:
import { actor } from "rivetkit";
interface UserState {
email: string;
name: string;
}
// Example email service interface
const emailService = {
send: async (options: { from: string; to: string; subject: string; text: string }) => {},
};
const userActor = actor({
state: { email: "", name: "" } as UserState,
onDestroy: async (c) => {
await emailService.send({
from: "[email protected]",
to: c.state.email,
subject: "Account Deleted",
text: `Goodbye ${c.state.name}, your account has been deleted.`,
});
},
actions: {
deleteAccount: (c) => {
c.destroy();
},
},
});
Once an actor is destroyed, any subsequent requests to it will return an actor_not_found error. The actor's state is permanently deleted.
ActorHandle - Has destroy methodsActorContext - Context during destruction