Add tags to batch and scheduled emails.
The Resend API has supported tags to help you associate emails with your application.
curl -X POST 'https://api.resend.com/emails' \-H 'Authorization: Bearer re_xxxxxxxxx' \-H 'Content-Type: application/json' \-d $'{"from": "Acme <onboarding@resend.dev>","to": ["delivered@resend.dev"],"subject": "hello world","html": "<p>it works!</p>","tags": [{"name": "category","value": "confirm_email"}]}'
Some examples of when to use a tag:
Tags can include ASCII letters, numbers, underscores, or dashes. After the email is sent, the tag is included in the webhook event.
In the past, tags were not supported when:
emails/batch
endpointYou can now add tags to scheduled emails. Both the Resend API and all SDKs support tags in scheduled emails, but here is a quick example using the Resend API.
curl -X POST 'https://api.resend.com/emails' \-H 'Authorization: Bearer re_xxxxxxxxx' \-H 'Content-Type: application/json' \-d $'{"from": "Acme <onboarding@resend.dev>","to": ["delivered@resend.dev"],"subject": "hello world","html": "<p>it works!</p>","scheduled_at": "2025-09-25T11:52:01.858Z","tags": [{"name": "category","value": "confirm_email"}]}'
You can now also send batch emails with tags. All SDKs support this improvement.
import { Resend } from 'resend';const resend = new Resend('re_xxxxxxxxx');const { data, error } = await resend.batch.send([{from: 'Acme <onboarding@resend.dev>',to: ['foo@gmail.com'],subject: 'hello world',html: '<h1>it works!</h1>',tags: [{name: 'category',value: 'confirm_email',},],},{from: 'Acme <onboarding@resend.dev>',to: ['bar@outlook.com'],subject: 'world hello',html: '<p>it works!</p>',tags: [{name: 'category',value: 'confirm_email',},],},]);
For more help, see the documentation on tags.
We hope this expansion of tags improves your experience and makes it easier for you to track emails in your app.
We're working on additional improvements across the Resend API to bring feature parity across endpoints.