smartchat

Get newsletter

Returns one newsletter with its text, audience, template state and send state. Use it to follow a send: the status moves from sending to completed. Read-only.

GET /v1/newsletters/{newsletter_id}

Permissionnewsletters:read (all permissions)
RiskRead
Idempotency-KeyNot needed (how it works)
Safe to repeatSafe: the call only reads.
Rate limit classread (120 requests per minute per key)
ConfirmationNone
MCP toolget_newsletter
Since version2026-10-25

#What it does

  • Only reads data. It changes nothing and sends nothing.

#Request

Path parameters

NameTypeDescription
newsletter_idstringID of the newsletter, from list_newsletters.

#Examples

curl "https://api.smartchat.marketing/v1/newsletters/nwl_3c9e1f7a5b2d4e8f9a0b1c2d3e4f5a6b" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
import os
import requests

response = requests.get(
    "https://api.smartchat.marketing/v1/newsletters/nwl_3c9e1f7a5b2d4e8f9a0b1c2d3e4f5a6b",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.smartchat.marketing/v1/newsletters/nwl_3c9e1f7a5b2d4e8f9a0b1c2d3e4f5a6b", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

Response (200):

{
  "object": "newsletter",
  "id": "nwl_3c9e1f7a5b2d4e8f9a0b1c2d3e4f5a6b",
  "title": "Autumn menu",
  "text": "Hi {{first_name}}, our autumn menu is here. Book a table for this week.",
  "language": "en",
  "button": {
    "type": "url",
    "text": "See the menu",
    "url": "https://example.com/menu"
  },
  "audience": {
    "tags": [
      "regular customer"
    ],
    "mode": "any",
    "sources": []
  },
  "status": "draft",
  "template_id": "tpl_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "template_status": "approved",
  "ready_to_send": true,
  "not_ready_reason": null,
  "recipients": 412,
  "scheduled_at": null,
  "sent_at": null,
  "created_at": "2026-10-25T09:41:07Z",
  "updated_at": "2026-10-25T09:41:07Z"
}

#Response

Status 200. Every response has the headers Request-Id, SmartChat-Version and X-RateLimit-*.

NameTypeDescription
objectstringAlways "newsletter". always newsletter
idstringNewsletter ID.
titlestringInternal title and name of the template. up to 200 characters
textstringMessage text of the newsletter. up to 20000 characters
languagestring or nullLanguage of the message, or null for the account language. up to 10 characters
buttonanyButton of the newsletter or null.
audienceobject or nullAudience filter. Null means all contacts with a confirmed opt-in.
audience.tagsarray of stringTags used for the filter (lower case). up to 100 items
audience.modestringall = contact has every tag. any = contact has at least one tag. none = contact has none of the tags. one of: all, any, none
audience.sourcesarray of stringWhere the contact came from. A contact matches if a tag OR a source matches. up to 20 items
statusstringState of the newsletter. one of: draft, scheduled, sending, paused, completed, canceled, failed
template_idstring or nullID of the template that carries this newsletter. Submit it with create_template_submissions. up to 36 characters
template_statusstring or nullApproval state of that template. A newsletter can only be sent when it is approved. one of: draft, pending, approved, rejected, paused, disabled, null
ready_to_sendbooleanTrue if send_newsletter would be accepted now (draft or scheduled, with text, approved template and a connected number).
not_ready_reasonstring or nullWhy it cannot be sent yet, otherwise null. one of: no_text, template_not_approved, no_number, locked, null; up to 60 characters
recipientsintegerNumber of contacts that receive it (planned for drafts, actual for started newsletters). 0 to 100000000
scheduled_atstring or nullWhen the send is scheduled, otherwise null. up to 40 characters; format date-time
sent_atstring or nullWhen the send finished, otherwise null. up to 40 characters; format date-time
created_atstringWhen the newsletter was created. up to 40 characters; format date-time
updated_atstringWhen the newsletter was last changed. up to 40 characters; format date-time

#Errors

CodeStatusWhen
api_key_expired401This API key has expired.
api_key_invalid401This API key is not valid.
api_key_revoked401This API key was revoked.
authentication_required401No API key was sent. Send 'Authorization: Bearer <key>'.
account_blocked403This account is blocked.
insufficient_scope403This key lacks a required permission.
ip_not_allowed403This IP address is not allowed for this key.
newsletter_not_found404No newsletter with this ID exists in this account.
validation_failed422A field is not valid.
rate_limited429Too many requests. Wait and try again.
internal_error500Something went wrong on our side.
service_unavailable503The service is temporarily unavailable.

All errors use one format.