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.
Extends
Section titled “Extends”Resource
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new NewsletterApi(
opts):NewsletterApi
Defined in: packages/sdk/src/request.ts:93
Parameters
Section titled “Parameters”Returns
Section titled “Returns”NewsletterApi
Inherited from
Section titled “Inherited from”Resource.constructor
Methods
Section titled “Methods”archiveCampaign()
Section titled “archiveCampaign()”archiveCampaign(
websiteId,campaignId):Promise<{archived:true; }>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:165
Archive a sent campaign (hide from the default list).
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
Returns
Section titled “Returns”Promise<{ archived: true; }>
createCampaign()
Section titled “createCampaign()”createCampaign(
websiteId,input):Promise<NewsletterCampaign>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:71
Create a campaign draft. Send via sendCampaign.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
NewsletterCampaignInput
Returns
Section titled “Returns”Promise<NewsletterCampaign>
deleteCampaign()
Section titled “deleteCampaign()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
Returns
Section titled “Returns”Promise<{ deleted: true; }>
disable()
Section titled “disable()”disable(
websiteId):Promise<{disabled:true; }>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:37
Disable + tear down audience. DESTRUCTIVE — subscribers gone.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<{ disabled: true; }>
enable()
Section titled “enable()”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).
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<{ audienceId: string; defaultFromEmail: string; enabledAt: string; }>
getAssetUploadUrl()
Section titled “getAssetUploadUrl()”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
 Markdown.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
contentType
Section titled “contentType”string
fileName
Section titled “fileName”string
Returns
Section titled “Returns”Promise<{ fields: Record<string, string>; maxBytes: number; publicUrl: string; uploadUrl: string; }>
getCampaign()
Section titled “getCampaign()”getCampaign(
websiteId,campaignId):Promise<NewsletterCampaign>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:121
Get one campaign + its latest stats snapshot.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
Returns
Section titled “Returns”Promise<NewsletterCampaign>
listCampaigns()
Section titled “listCampaigns()”listCampaigns(
websiteId):Promise<{campaigns:NewsletterCampaign[]; }>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:64
List all campaigns (drafts + sent) for the website.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<{ campaigns: NewsletterCampaign[]; }>
listSubscribers()
Section titled “listSubscribers()”listSubscribers(
websiteId):Promise<NewsletterSubscriberPage>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:42
One page of subscribers (Resend doesn’t paginate today; cursor null).
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<NewsletterSubscriberPage>
listTemplates()
Section titled “listTemplates()”listTemplates(
websiteId):Promise<NewsletterTemplatesResponse>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:204
Available templates + the default template id.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<NewsletterTemplatesResponse>
removeSubscriber()
Section titled “removeSubscriber()”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).
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
contactId
Section titled “contactId”string
Returns
Section titled “Returns”Promise<{ removed: true; }>
sendCampaign()
Section titled “sendCampaign()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
scheduledAt?
Section titled “scheduledAt?”string
Returns
Section titled “Returns”Promise<NewsletterCampaign>
sendTestEmail()
Section titled “sendTestEmail()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
string
Returns
Section titled “Returns”Promise<{ sent: true; to: string; }>
setSubscriberUnsubscribed()
Section titled “setSubscriberUnsubscribed()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
contactId
Section titled “contactId”string
unsubscribed
Section titled “unsubscribed”boolean
Returns
Section titled “Returns”Promise<{ updated: true; }>
status()
Section titled “status()”status(
websiteId):Promise<NewsletterStatusResponse>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:23
Status snapshot — enabled flag + counts.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
Returns
Section titled “Returns”Promise<NewsletterStatusResponse>
unarchiveCampaign()
Section titled “unarchiveCampaign()”unarchiveCampaign(
websiteId,campaignId):Promise<{unarchived:true; }>
Defined in: packages/sdk/src/resources/NewsletterApi.ts:176
Restore a previously-archived sent campaign.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
Returns
Section titled “Returns”Promise<{ unarchived: true; }>
unsubscribeUrl()
Section titled “unsubscribeUrl()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
string
Returns
Section titled “Returns”Promise<{ token: string; url: string; }>
updateCampaign()
Section titled “updateCampaign()”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.
Parameters
Section titled “Parameters”websiteId
Section titled “websiteId”string
campaignId
Section titled “campaignId”string
string
string
subject?
Section titled “subject?”string
templateId?
Section titled “templateId?”string
templateVars?
Section titled “templateVars?”Record<string, unknown>
Returns
Section titled “Returns”Promise<NewsletterCampaign>