Skip to content

NewsletterApi

Defined in: packages/sdk/src/resources/NewsletterApi.ts:21

The newsletter feature — enable/disable, subscriber list, campaign compose + send. Mirrors packages/api/src/routes/newsletter.ts.

Subscribe + unsubscribe are NOT exposed here — those go through the platform’s public endpoints (the per-tenant site’s SubscribeForm proxies to them). Operators don’t need an authed path to subscribe arbitrary emails to their own audience; the portal removes subscribers via removeSubscriber instead.

  • Resource

new NewsletterApi(opts): NewsletterApi

Defined in: packages/sdk/src/request.ts:93

VantageClientOptions

NewsletterApi

Resource.constructor

archiveCampaign(websiteId, campaignId): Promise<{ archived: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:165

Archive a sent campaign (hide from the default list).

string

string

Promise<{ archived: true; }>


createCampaign(websiteId, input): Promise<NewsletterCampaign>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:71

Create a campaign draft. Send via sendCampaign.

string

NewsletterCampaignInput

Promise<NewsletterCampaign>


deleteCampaign(websiteId, campaignId): Promise<{ deleted: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:110

Hard-delete a draft. Resend (rightly) rejects DELETE on sent/queued campaigns — operators wanting a sent campaign out of the active view should archive it instead.

string

string

Promise<{ deleted: true; }>


disable(websiteId): Promise<{ disabled: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:37

Disable + tear down audience. DESTRUCTIVE — subscribers gone.

string

Promise<{ disabled: true; }>


enable(websiteId): Promise<{ audienceId: string; defaultFromEmail: string; enabledAt: string; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:28

Enable newsletter for the website (mints audience, pushes env, redeploys).

string

Promise<{ audienceId: string; defaultFromEmail: string; enabledAt: string; }>


getAssetUploadUrl(websiteId, input): Promise<{ fields: Record<string, string>; maxBytes: number; publicUrl: string; uploadUrl: string; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:217

Mint a presigned S3 POST so the caller can upload an image asset directly to the public newsletter-assets bucket. Returns the upload form + the final public URL — the caller POSTs the file to S3 itself; bytes never pass through the API.

Use the returned publicUrl as the src in your campaign’s ![alt](publicUrl) Markdown.

string

string

string

Promise<{ fields: Record<string, string>; maxBytes: number; publicUrl: string; uploadUrl: string; }>


getCampaign(websiteId, campaignId): Promise<NewsletterCampaign>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:121

Get one campaign + its latest stats snapshot.

string

string

Promise<NewsletterCampaign>


listCampaigns(websiteId): Promise<{ campaigns: NewsletterCampaign[]; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:64

List all campaigns (drafts + sent) for the website.

string

Promise<{ campaigns: NewsletterCampaign[]; }>


listSubscribers(websiteId): Promise<NewsletterSubscriberPage>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:42

One page of subscribers (Resend doesn’t paginate today; cursor null).

string

Promise<NewsletterSubscriberPage>


listTemplates(websiteId): Promise<NewsletterTemplatesResponse>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:204

Available templates + the default template id.

string

Promise<NewsletterTemplatesResponse>


removeSubscriber(websiteId, contactId): Promise<{ removed: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:53

Remove a subscriber by provider contact id (admin cleanup — NOT the user-facing unsubscribe).

string

string

Promise<{ removed: true; }>


sendCampaign(websiteId, campaignId, opts?): Promise<NewsletterCampaign>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:135

Send a draft. scheduledAt (ISO future timestamp) defers; omit for immediate send. Returns the campaign with its new status.

string

string

string

Promise<NewsletterCampaign>


sendTestEmail(websiteId, campaignId, input): Promise<{ sent: true; to: string; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:152

Send the rendered campaign to a single test address (not a broadcast — doesn’t touch the audience). Subject is prefixed with [TEST] server-side.

string

string

string

Promise<{ sent: true; to: string; }>


setSubscriberUnsubscribed(websiteId, contactId, unsubscribed): Promise<{ updated: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:191

Operator-initiated flip of a subscriber’s unsubscribed flag. Useful for the suppression-list “Resubscribe” action, or for marking someone unsubscribed who opted out by other channels.

string

string

boolean

Promise<{ updated: true; }>


status(websiteId): Promise<NewsletterStatusResponse>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:23

Status snapshot — enabled flag + counts.

string

Promise<NewsletterStatusResponse>


unarchiveCampaign(websiteId, campaignId): Promise<{ unarchived: true; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:176

Restore a previously-archived sent campaign.

string

string

Promise<{ unarchived: true; }>


unsubscribeUrl(websiteId, input): Promise<{ token: string; url: string; }>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:238

Admin-only helper: mint a test unsubscribe URL pointing at the per-tenant site’s /unsubscribe page. Useful for QA without having to send a real campaign.

string

string

Promise<{ token: string; url: string; }>


updateCampaign(websiteId, campaignId, input): Promise<NewsletterCampaign>

Defined in: packages/sdk/src/resources/NewsletterApi.ts:87

Update a draft. Only works while status === “draft” (Resend rejects updates on sent/queued campaigns). Pass only the fields you want to change.

string

string

string

string

string

string

Record<string, unknown>

Promise<NewsletterCampaign>