Node.js SDK
Official Node.js SDK for the ToSend email API.
- Package:
tosend - Requirements: Node.js 18+
- Repository: tosend/tosend-node
Installation
npm install tosendQuick Start
import { ToSend } from 'tosend';
const tosend = new ToSend('tsend_your_api_key');
const response = await tosend.send({ from: { email: 'hello@yourdomain.com', name: 'Your App' }, to: [{ email: 'user@example.com' }], subject: 'Welcome!', html: '<h1>Hello!</h1><p>Thanks for signing up.</p>',});
console.log(response.message_id);Configuration
Simple (API key only)
const tosend = new ToSend('tsend_your_api_key');With Options
const tosend = new ToSend({ apiKey: 'tsend_your_api_key', baseUrl: 'https://api.tosend.com', // optional timeout: 30000, // optional, in milliseconds});Send Email
Basic Email
const response = await tosend.send({ from: { email: 'hello@yourdomain.com', name: 'Your App' }, to: [ { email: 'user@example.com' }, { email: 'another@example.com', name: 'John Doe' }, ], subject: 'Hello!', html: '<h1>Welcome</h1>', text: 'Welcome', // optional});With CC, BCC, and Reply-To
const response = await tosend.send({ from: { email: 'hello@yourdomain.com' }, to: [{ email: 'user@example.com' }], cc: [{ email: 'cc@example.com' }], bcc: [{ email: 'bcc@example.com' }], reply_to: { email: 'support@yourdomain.com', name: 'Support' }, subject: 'Hello', html: '<p>Hello World</p>',});With Attachments
import * as fs from 'fs';
const response = await tosend.send({ from: { email: 'hello@yourdomain.com' }, to: [{ email: 'user@example.com' }], subject: 'Your Invoice', html: '<p>Please find your invoice attached.</p>', attachments: [ { type: 'application/pdf', name: 'invoice.pdf', content: fs.readFileSync('invoice.pdf').toString('base64'), }, ],});Batch Sending
Send multiple emails in a single request:
const response = await tosend.batch([ { from: { email: 'hello@yourdomain.com' }, to: [{ email: 'user1@example.com' }], subject: 'Hello User 1', html: '<p>Welcome!</p>', }, { from: { email: 'hello@yourdomain.com' }, to: [{ email: 'user2@example.com' }], subject: 'Hello User 2', html: '<p>Welcome!</p>', },]);
response.results.forEach((result) => { if (result.status === 'success') { console.log('Sent:', result.message_id); } else { console.log('Failed:', result.message); }});Account Info
const info = await tosend.getAccountInfo();
console.log(info.account.title);console.log(info.account.emails_usage_this_month);console.log(info.account.emails_sent_last_24hrs);
info.domains.forEach((domain) => { console.log(domain.domain_name, domain.verification_status);});Error Handling
import { ToSend, ToSendError } from 'tosend';
try { const response = await tosend.send({ from: { email: 'hello@yourdomain.com' }, to: [{ email: 'user@example.com' }], subject: 'Hello', html: '<p>Hello</p>', });} catch (error) { if (error instanceof ToSendError) { console.log('Error:', error.message); console.log('Code:', error.code); console.log('Errors:', error.errors);
if (error.isValidationError) { // Handle validation error (422) }
if (error.isAuthenticationError) { // Handle auth error (401/403) }
if (error.isRateLimitError) { // Handle rate limit (429) } }}TypeScript
Full TypeScript support with exported types:
import { ToSend, ToSendError, SendEmailParams, SendEmailResponse, BatchEmailResponse, AccountInfo, Address, Attachment,} from 'tosend';