Send or schedule an email
curl --request POST \
--url https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send \
--header 'Content-Type: application/json' \
--data '
{
"scheduled_at": null
}
'import requests
url = "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send"
payload = { "scheduled_at": None }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({scheduled_at: null})
};
fetch('https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'scheduled_at' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send"
payload := strings.NewReader("{\n \"scheduled_at\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send")
.header("Content-Type", "application/json")
.body("{\n \"scheduled_at\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"scheduled_at\": null\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"subject": "<string>",
"preview": "<string>",
"slug": "<string>",
"status": "<string>",
"content_html": "<string>",
"content_json": {
"type": "<string>",
"content": [
"<string>"
]
},
"author_id": 123,
"newsletter_id": 123,
"scheduled_at": "<string>",
"sent_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}Emails
Send or schedule an email
POST
/
newsletters
/
{newsletter_id}
/
emails
/
{id}
/
send
Send or schedule an email
curl --request POST \
--url https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send \
--header 'Content-Type: application/json' \
--data '
{
"scheduled_at": null
}
'import requests
url = "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send"
payload = { "scheduled_at": None }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({scheduled_at: null})
};
fetch('https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'scheduled_at' => null
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send"
payload := strings.NewReader("{\n \"scheduled_at\": null\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send")
.header("Content-Type", "application/json")
.body("{\n \"scheduled_at\": null\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.blogbowl.io/api/v1/newsletters/{newsletter_id}/emails/{id}/send")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"scheduled_at\": null\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"subject": "<string>",
"preview": "<string>",
"slug": "<string>",
"status": "<string>",
"content_html": "<string>",
"content_json": {
"type": "<string>",
"content": [
"<string>"
]
},
"author_id": 123,
"newsletter_id": 123,
"scheduled_at": "<string>",
"sent_at": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}Body
application/json
Schedule for future (ISO 8601 format). Omit to send immediately.
Response
200 - */*
Email queued for sending
Email ID
Email subject
Email preview text
Email slug
Email status (draft, scheduled, sent, failed)
Email HTML content
Show child attributes
Show child attributes
Author ID
Newsletter ID
Scheduled send date
Actual send date
Creation date
Updated date
