Newsletter · API reference

Newsletter API

Send newsletters built in Make, trigger recurring actions, and fetch delivery and engagement statistics for each sending.

Base URLhttps://newsletters.dialogapi.noOpenAPI spec

Newsletters

/api/public/v1/newsletters
POST/api/public/v1/newsletters/{id}/send

Creates sending

Parameters
idrequired
path · integer
newsletter ID
segment_id
body · integer
list_ids
body · integer[]
sender_id
body · integer
scheduled_at
body · string
Responses
200Return stats401Unathorized422Return error
Request · curl
curl --request POST \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --data '{ "segment_id": 1, "list_ids": [ 1 ], "sender_id": 1, "scheduled_at": "2026-01-01T12:00:00Z" }' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/newsletters/{id}/send'
Example response 200
{
  "id": 32,
  "clicks": 0,
  "unique_clicks": 0,
  "opens": 0,
  "bounce": 0,
  "unsubscribes": 0,
  "tracking_mode": "count",
  "sent": 0,
  "created_at": "2026-01-01T12:00:00.000+01:00",
  "sent_at": null,
  "openrate": 0,
  "newsletter_screenshot_url": "http://localhost:3000/v4/d013455e-f392-46d5-851e-08f5fe4735c7/1767265200",
  "mailbody": "https://example.com/v/d013455e-f392-46d5-851e-08f5fe4735c7",
  "delivered": 0,
  "subject": "Subject",
  "from_email": "personal@email.com",
  "tags": [],
  "sending_id": null,
  "segment": {
    "id": "1",
    "title": null
  }
}
GET/api/public/v1/newsletters/stats

Show newsletters stats

Parameters
from_date
query · string
to_date
query · string
Responses
200Return stats400Return error401Unathorized
Request · curl
curl --request GET \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/newsletters/stats'
Example response 200
[
  {
    "id": 37,
    "clicks": 30,
    "unique_clicks": 10,
    "opens": 90,
    "bounce": 5,
    "unsubscribes": 3,
    "tracking_mode": "standard",
    "sent": 100,
    "created_at": "2020-11-20T12:30:00.000+01:00",
    "sent_at": "2020-11-20T12:30:00.000+01:00",
    "openrate": 94.7,
    "newsletter_screenshot_url": "http://localhost:3000/v4/8ccdcc45-3a39-4962-8142-487ae67daeca/1767265200",
    "mailbody": "https://example.com/v/8ccdcc45-3a39-4962-8142-487ae67daeca",
    "delivered": 95,
    "subject": "SendingSubject",
    "from_email": "testmail@mail.sndr.nb",
    "tags": [],
    "sending_id": 0,
    "lists": [
      {
        "id": "1",
        "title": "ListTitle1"
      },
      {
        "id": "2",
        "title": "ListTitle2"
      }
    ]
  }
]
GET/api/public/v1/newsletters/{id}/stats

Show newsletter stats

Parameters
idrequired
path · integer
sending ID
Responses
200Return stats401Unathorized404Not Found
Request · curl
curl --request GET \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/newsletters/{id}/stats'
Example response 200
{
  "id": 43,
  "clicks": 30,
  "unique_clicks": 10,
  "opens": 90,
  "bounce": 5,
  "unsubscribes": 3,
  "tracking_mode": "standard",
  "sent": 100,
  "created_at": "2020-11-20T12:30:00.000+01:00",
  "sent_at": "2020-11-20T12:30:00.000+01:00",
  "openrate": 94.7,
  "newsletter_screenshot_url": "http://localhost:3000/v4/8ccdcc45-3a39-4962-8142-487ae67daeca/1767265200",
  "mailbody": "https://example.com/v/8ccdcc45-3a39-4962-8142-487ae67daeca",
  "delivered": 95,
  "subject": "SendingSubject",
  "from_email": "testmail@mail.sndr.nb",
  "tags": [
    "tagtitle"
  ],
  "sending_id": 0,
  "lists": [
    {
      "id": "1",
      "title": "ListTitle1"
    },
    {
      "id": "2",
      "title": "ListTitle2"
    }
  ]
}
GET/api/public/v1/newsletters/{id}/stats_by_external_guid

Show newsletter stats

Parameters
idrequired
path · integer
sending external ID
Responses
200Return stats401Unathorized404Not Found
Request · curl
curl --request GET \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/newsletters/{id}/stats_by_external_guid'
Example response 200
{
  "id": 47,
  "clicks": 30,
  "unique_clicks": 10,
  "opens": 90,
  "bounce": 5,
  "unsubscribes": 3,
  "tracking_mode": "standard",
  "sent": 100,
  "created_at": "2020-11-20T12:30:00.000+01:00",
  "sent_at": "2020-11-20T12:30:00.000+01:00",
  "openrate": 94.7,
  "newsletter_screenshot_url": "http://localhost:3000/v4/8ccdcc45-3a39-4962-8142-487ae67daeca/1767265200",
  "mailbody": "https://example.com/v/8ccdcc45-3a39-4962-8142-487ae67daeca",
  "delivered": 95,
  "subject": "SendingSubject",
  "from_email": "testmail@mail.sndr.nb",
  "tags": [
    "tagtitle"
  ],
  "sending_id": 0,
  "lists": [
    {
      "id": "1",
      "title": "ListTitle1"
    },
    {
      "id": "2",
      "title": "ListTitle2"
    }
  ]
}

Recurring actions

/api/public/v1/recurring_actions
GET/api/public/v1/recurring_actions

Return list of existing recurring actions

Responses
200Return recurring actions401Unathorized
Request · curl
curl --request GET \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/recurring_actions'
Example response 200
[
  {
    "id": 1,
    "name": "Action #1",
    "action": "send_email"
  }
]
POST/api/public/v1/recurring_actions/{id}/trigger

Trigger recurring action by ID

Parameters
idrequired
path · integer
ID of recurring action
guids
body · string[]
Responses
200Recurring action started401Unathorized404Not Found
Request · curl
curl --request POST \
  --user 'user_id:api_key' \
  --header 'content-type: application/json' \
  --data '{ "guids": [ "guids" ] }' \
  --url 'https://newsletters.dialogapi.no/api/public/v1/recurring_actions/{id}/trigger'