Email SDK
Reference

Client

Reference for createEmailClient, send, sendBatch, and adapter helpers.

createEmailClient(options)

Creates an email client.

const email = createEmailClient({
  adapters,
  defaultAdapter,
  fallback,
  retry,
  hooks,
});
OptionTypeDefault
adaptersEmailProvider[]Required
providersEmailProvider[]Alias for adapters
defaultAdapterstringFirst adapter
defaultProviderstringFirst adapter
fallbackstring[][]
retryEmailRetryConfigNo retries
hooksEmailHooksNo hooks

Routing names must be unique.

email.send(message, options?)

Sends one message.

const result = await email.send(message, {
  adapter: "resend",
  fallbackAdapters: ["smtp"],
  retries: 2,
  idempotencyKey: "receipt:order_123",
  metadata: {
    route: "checkout.receipt",
  },
});
OptionTypeNotes
adapterstringOverride the default routing name.
providerstringAlias for adapter.
fallbackAdaptersstring[]Override fallback adapters for this send.
fallbackProvidersstring[]Alias for fallbackAdapters.
retriesnumberOverride retry count for this send.
signalAbortSignalAbort provider work when supported.
idempotencyKeystringPassed to adapters that support it.
metadataRecord<string, unknown>Passed to hooks.

email.sendBatch(messages, options?)

Sends messages one at a time and returns one result per item.

const results = await email.sendBatch([messageA, messageB]);

sendBatch does not throw for the first failed item. Failed sends are returned as { ok: false, index, error }.

email.adapter(name)

Returns a registered adapter or throws EmailProviderNotFoundError.

const resendAdapter = email.adapter("resend");

email.provider(name) is kept as an alias.

email.withAdapter(name)

Returns a small client bound to one adapter.

const transactional = email.withAdapter("postmark");

await transactional.send(message);

email.withProvider(name) is kept as an alias.

On this page