Launch initiative
Launch a draft initiative — it goes active and Boom starts reaching out. Its journey is published as part of the launch, on every channel (fails with the journey’s issues if it cannot be), so no separate journeys_publish is needed. A WhatsApp initiative also needs an approved template first. Over MCP, requires the org:initiatives:launch permission (Owner and Admin roles).
curl --request POST \
--url https://www.useboom.ai/api/v1/initiatives/{id}/launch \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.useboom.ai/api/v1/initiatives/{id}/launch"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.useboom.ai/api/v1/initiatives/{id}/launch', 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://www.useboom.ai/api/v1/initiatives/{id}/launch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.useboom.ai/api/v1/initiatives/{id}/launch"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.useboom.ai/api/v1/initiatives/{id}/launch")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.useboom.ai/api/v1/initiatives/{id}/launch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"channel": "WHATSAPP",
"sendChannels": [
"WHATSAPP"
],
"status": "DRAFT",
"language": "<string>",
"objective": "<string>",
"isRecurring": true,
"isTransactional": true,
"flagCondition": "<string>",
"identityDeflection": "<string>",
"smartSendingMode": "DEFER",
"createdAt": "<string>",
"updatedAt": "<string>",
"activatedAt": "<string>",
"completedAt": "<string>",
"canceledAt": "<string>",
"pausedAt": "<string>",
"context": "<string>",
"maxAttempts": 0,
"guidingQuestions": [
{
"id": "<string>",
"questionText": "<string>",
"answerType": "<string>",
"priority": 0,
"scaleMin": 0,
"scaleMax": 0,
"options": [
{
"id": "<string>",
"label": "<string>",
"position": 0
}
]
}
]
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Organization API key, sent as Authorization: Bearer boom_org_....
Path Parameters
The initiative id.
1Response
Success
Initiative id.
Which identifier this initiative reaches people by, derived from its journey: EMAIL when the journey only mails, WHATSAPP when anything phone-shaped sends. See sendChannels for what it actually sends on — this field cannot express SMS or the Meta DMs.
WHATSAPP, EMAIL Every channel this initiative's journey sends on — the authoritative answer. Empty when it has no journey yet, in which case channel falls back to the value stored at creation.
WHATSAPP, EMAIL, SMS, INSTAGRAM, FACEBOOK_MESSENGER DRAFT, ACTIVE, PAUSED, COMPLETED, CANCELED Conversation language, e.g. es.
Splits campaigns from initiatives (a Transactional is the third kind, see isTransactional): false is a campaign (one-time outreach, listed under Campaigns), true is an initiative (ongoing work, listed under Initiatives). A campaign auto-completes once its outreach run finishes; an initiative stays ACTIVE afterward, though no scheduled process currently re-triggers outreach for it.
True for a Transactional (one event, one message per channel; listed under Transactional).
Natural-language condition; matching conversations get flagged during analysis.
Custom reply when a contact asks whether they are talking to a bot.
Smart Sending mode: DEFER, DROP or FORCE.
DEFER, DROP, FORCE ISO 8601 timestamp.
ISO 8601 timestamp.
-9007199254740991 <= x <= 9007199254740991Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://www.useboom.ai/api/v1/initiatives/{id}/launch \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.useboom.ai/api/v1/initiatives/{id}/launch"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.useboom.ai/api/v1/initiatives/{id}/launch', 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://www.useboom.ai/api/v1/initiatives/{id}/launch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://www.useboom.ai/api/v1/initiatives/{id}/launch"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://www.useboom.ai/api/v1/initiatives/{id}/launch")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.useboom.ai/api/v1/initiatives/{id}/launch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"channel": "WHATSAPP",
"sendChannels": [
"WHATSAPP"
],
"status": "DRAFT",
"language": "<string>",
"objective": "<string>",
"isRecurring": true,
"isTransactional": true,
"flagCondition": "<string>",
"identityDeflection": "<string>",
"smartSendingMode": "DEFER",
"createdAt": "<string>",
"updatedAt": "<string>",
"activatedAt": "<string>",
"completedAt": "<string>",
"canceledAt": "<string>",
"pausedAt": "<string>",
"context": "<string>",
"maxAttempts": 0,
"guidingQuestions": [
{
"id": "<string>",
"questionText": "<string>",
"answerType": "<string>",
"priority": 0,
"scaleMin": 0,
"scaleMax": 0,
"options": [
{
"id": "<string>",
"label": "<string>",
"position": 0
}
]
}
]
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}