Node SDK
v0.1.0Full reference for the @coffeemail/node package. Complete coverage of the Product API with safe returns in the data, error pattern and typed errors.
Installation
Client
Instantiates the client. The key can come from the constructor or the COFFEEMAIL_API_KEY environment variable.
new CoffeeMail(apiKey?: string, options?: CoffeeMailClientOptions): CoffeeMailcoffeemail.Emails
.send
coffeemail.emails.send(payload): Promise<CoffeeMailResponse<SendEmailResponse>>Enqueues a transactional email.
.sendBatch
coffeemail.emails.sendBatch(items): Promise<CoffeeMailResponse<SendBatchResponse>>Sends up to 100 emails in a single call.
.get
coffeemail.emails.get(id): Promise<CoffeeMailResponse<EmailDetail>>Returns email details by ID.
.list
coffeemail.emails.list(query?): Promise<CoffeeMailResponse<ListEmailsResponse>>Lists sent emails with filters and pagination.
.getEvents
coffeemail.emails.getEvents(id): Promise<CoffeeMailResponse<EmailEventsResponse>>Returns the event timeline of the email.
.cancel
coffeemail.emails.cancel(id): Promise<CoffeeMailResponse<void>>Cancels a scheduled email before it is sent.
.resend
coffeemail.emails.resend(id): Promise<CoffeeMailResponse<SendEmailResponse>>Resends an existing email.
coffeemail.Domains
.create
coffeemail.domains.create(payload): Promise<CoffeeMailResponse<DomainDetail>>Adds a domain and returns the DNS records.
.list
coffeemail.domains.list(query?): Promise<CoffeeMailResponse<ListDomainsResponse>>Lists the organization's domains.
.get
coffeemail.domains.get(id): Promise<CoffeeMailResponse<DomainDetail>>Returns domain details.
.verify
coffeemail.domains.verify(id): Promise<CoffeeMailResponse<DomainVerificationResult>>Runs active DNS verification.
.getHealth
coffeemail.domains.getHealth(id): Promise<CoffeeMailResponse<DomainHealthResponse>>Reputation and blacklist diagnostic.
.delete
coffeemail.domains.delete(id): Promise<CoffeeMailResponse<void>>Removes the domain from the organization.
coffeemail.Templates
.create
coffeemail.templates.create(payload): Promise<CoffeeMailResponse<TemplateDetail>>Registers a template (handlebars or react_email).
.list
coffeemail.templates.list(query?): Promise<CoffeeMailResponse<ListTemplatesResponse>>Lists the organization's templates.
.get
coffeemail.templates.get(id): Promise<CoffeeMailResponse<TemplateDetail>>Returns template details.
.update
coffeemail.templates.update(id, patch): Promise<CoffeeMailResponse<TemplateDetail>>Updates an existing template.
.delete
coffeemail.templates.delete(id): Promise<CoffeeMailResponse<void>>Removes a template.
.format
coffeemail.templates.format(payload): Promise<CoffeeMailResponse<FormatTemplateResponse>>Formats and indents template HTML/Handlebars code.
.testRender
coffeemail.templates.testRender(payload): Promise<CoffeeMailResponse<RenderPreviewResponse>>Renders template with tag sanitization and variable interpolation.
.listStarters
coffeemail.templates.listStarters(): Promise<CoffeeMailResponse<ListStartersResponse>>Lists pre-built starter templates provided by the platform.
.getStarter
coffeemail.templates.getStarter(id): Promise<CoffeeMailResponse<StarterTemplateDetail>>Retrieves a starter template by identifier or slug.
coffeemail.Audiences
.create
coffeemail.audiences.create(payload): Promise<CoffeeMailResponse<AudienceDetail>>Creates an audience.
.list
coffeemail.audiences.list(): Promise<CoffeeMailResponse<ListAudiencesResponse>>Lists audiences.
.get
coffeemail.audiences.get(id): Promise<CoffeeMailResponse<AudienceDetail>>Returns audience details.
.update
coffeemail.audiences.update(id, patch): Promise<CoffeeMailResponse<AudienceDetail>>Updates an audience name or description.
.delete
coffeemail.audiences.delete(id): Promise<CoffeeMailResponse<void>>Removes an audience.
.contacts.create
coffeemail.audiences.contacts.create(audienceId, payload): Promise<CoffeeMailResponse<ContactDetail>>Adds a contact to the audience.
.contacts.bulkAdd
coffeemail.audiences.contacts.bulkAdd(audienceId, contacts): Promise<CoffeeMailResponse<BulkAddResult>>Imports multiple contacts in batch to an audience.
.contacts.list
coffeemail.audiences.contacts.list(audienceId, query?): Promise<CoffeeMailResponse<ListContactsResponse>>Lists audience contacts.
.contacts.update
coffeemail.audiences.contacts.update(audienceId, contactId, payload): Promise<CoffeeMailResponse<ContactDetail>>Updates contact attributes or metadata.
.contacts.delete
coffeemail.audiences.contacts.delete(audienceId, contactId): Promise<CoffeeMailResponse<void>>Removes a contact from the audience.
coffeemail.Broadcasts
.create
coffeemail.broadcasts.create(payload): Promise<CoffeeMailResponse<BroadcastDetail>>Creates a campaign for an audience.
.list
coffeemail.broadcasts.list(query?): Promise<CoffeeMailResponse<ListBroadcastsResponse>>Lists campaigns.
.get
coffeemail.broadcasts.get(id): Promise<CoffeeMailResponse<BroadcastDetail>>Returns campaign details.
.send
coffeemail.broadcasts.send(id): Promise<CoffeeMailResponse<BroadcastDetail>>Sends the campaign. RFC 8058 headers are injected automatically.
.cancel
coffeemail.broadcasts.cancel(id): Promise<CoffeeMailResponse<void>>Cancels a campaign that has not been sent yet.
coffeemail.Suppressions
.list
coffeemail.suppressions.list(query?): Promise<CoffeeMailResponse<ListSuppressionsResponse>>Lists suppression list entries.
.create
coffeemail.suppressions.create(payload): Promise<CoffeeMailResponse<SuppressionDetail>>Manually adds an entry.
.get
coffeemail.suppressions.get(id): Promise<CoffeeMailResponse<SuppressionDetail>>Retrieves details and reason for a specific suppression.
.delete
coffeemail.suppressions.delete(id): Promise<CoffeeMailResponse<void>>Removes an entry.
.reactivate
coffeemail.suppressions.reactivate(id): Promise<CoffeeMailResponse<void>>Reactivates a suppressed recipient to resume deliveries.
coffeemail.Webhooks
.create
coffeemail.webhooks.create(payload): Promise<CoffeeMailResponse<WebhookDetail>>Registers an HTTPS endpoint.
.list
coffeemail.webhooks.list(): Promise<CoffeeMailResponse<ListWebhooksResponse>>Lists registered webhooks.
.get
coffeemail.webhooks.get(id): Promise<CoffeeMailResponse<WebhookDetail>>Returns webhook details.
.update
coffeemail.webhooks.update(id, patch): Promise<CoffeeMailResponse<WebhookDetail>>Updates URL, events or secret.
.toggle
coffeemail.webhooks.toggle(id, status: 'active' | 'paused'): Promise<CoffeeMailResponse<WebhookDetail>>Activates or pauses webhook event delivery.
.delete
coffeemail.webhooks.delete(id): Promise<CoffeeMailResponse<void>>Removes a webhook.
.listDeliveries
coffeemail.webhooks.listDeliveries(id, query?): Promise<CoffeeMailResponse<ListDeliveriesResponse>>Lists webhook delivery attempt logs and statuses.
.rotateSecret
coffeemail.webhooks.rotateSecret(id): Promise<CoffeeMailResponse<RotateSecretResponse>>Rotates and returns a new HMAC secret for the webhook.
.test
coffeemail.webhooks.test(id): Promise<CoffeeMailResponse<TestWebhookResponse>>Triggers a simulated event.
.verifySignature
coffeemail.webhooks.verifySignature(options): booleanValidates the X-CoffeeMail-Signature header (HMAC SHA-256 + timingSafeEqual).
coffeemail.Statistics
.get
coffeemail.stats.get(query?): Promise<CoffeeMailResponse<StatsResponse>>Queries aggregated metrics and time series for the organization.