curl --request POST \
--url https://api.journeybee.io/v1/campaigns/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"type": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": true,
"partner_type_reseller": true,
"partner_type_distributor": true,
"enabled_modules": [],
"email_template_uuid": "<string>"
}
'import requests
url = "https://api.journeybee.io/v1/campaigns/"
payload = {
"title": "<string>",
"type": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": True,
"partner_type_reseller": True,
"partner_type_distributor": True,
"enabled_modules": [],
"email_template_uuid": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
type: '<string>',
description: '<string>',
start_date: '<string>',
end_date: '<string>',
scheduled_at: '<string>',
timezone: '<string>',
venue: '<string>',
physical_address: '<string>',
partner_type_referral: true,
partner_type_reseller: true,
partner_type_distributor: true,
enabled_modules: [],
email_template_uuid: '<string>'
})
};
fetch('https://api.journeybee.io/v1/campaigns/', 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://api.journeybee.io/v1/campaigns/",
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([
'title' => '<string>',
'type' => '<string>',
'description' => '<string>',
'start_date' => '<string>',
'end_date' => '<string>',
'scheduled_at' => '<string>',
'timezone' => '<string>',
'venue' => '<string>',
'physical_address' => '<string>',
'partner_type_referral' => true,
'partner_type_reseller' => true,
'partner_type_distributor' => true,
'enabled_modules' => [
],
'email_template_uuid' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.journeybee.io/v1/campaigns/"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.journeybee.io/v1/campaigns/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.journeybee.io/v1/campaigns/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"title": "<string>",
"type": "<string>",
"description": "<string>",
"status": "<string>",
"completed": true,
"lead_sharing_enabled": true,
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": true,
"partner_type_reseller": true,
"partner_type_distributor": true,
"email_status": "draft",
"enabled_modules": [
"details"
],
"email_template": {
"uuid": "<string>",
"name": "<string>",
"subject": "<string>",
"channel": "email"
},
"tags": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"created_at": "<string>",
"updated_at": "<string>",
"tiers": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"categories": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"stages": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"partners": [
{
"uuid": "<string>",
"name": "<string>",
"partner_type": "referral",
"shared": true,
"shared_leads": true
}
],
"recipient_partnerships": [
{
"uuid": "<string>",
"name": "<string>",
"partner_type": "referral"
}
],
"contact_tags": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"contacts": [
{
"uuid": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>"
}
]
}Create a campaign
Create a campaign — the send configuration (audience filters, partner sharing, and a LINK to one email template). A campaign is NOT the email content itself: to create the actual email (a “campaign email” — its header, body, footer), use createMarketingTemplate, then link it here via PATCH email_template_uuid. All fields are optional — a campaign is created in draft and configured afterwards via the sub-resource endpoints. Sending emails is not available through the API.
curl --request POST \
--url https://api.journeybee.io/v1/campaigns/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"type": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": true,
"partner_type_reseller": true,
"partner_type_distributor": true,
"enabled_modules": [],
"email_template_uuid": "<string>"
}
'import requests
url = "https://api.journeybee.io/v1/campaigns/"
payload = {
"title": "<string>",
"type": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": True,
"partner_type_reseller": True,
"partner_type_distributor": True,
"enabled_modules": [],
"email_template_uuid": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
type: '<string>',
description: '<string>',
start_date: '<string>',
end_date: '<string>',
scheduled_at: '<string>',
timezone: '<string>',
venue: '<string>',
physical_address: '<string>',
partner_type_referral: true,
partner_type_reseller: true,
partner_type_distributor: true,
enabled_modules: [],
email_template_uuid: '<string>'
})
};
fetch('https://api.journeybee.io/v1/campaigns/', 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://api.journeybee.io/v1/campaigns/",
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([
'title' => '<string>',
'type' => '<string>',
'description' => '<string>',
'start_date' => '<string>',
'end_date' => '<string>',
'scheduled_at' => '<string>',
'timezone' => '<string>',
'venue' => '<string>',
'physical_address' => '<string>',
'partner_type_referral' => true,
'partner_type_reseller' => true,
'partner_type_distributor' => true,
'enabled_modules' => [
],
'email_template_uuid' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.journeybee.io/v1/campaigns/"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.journeybee.io/v1/campaigns/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.journeybee.io/v1/campaigns/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"type\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"timezone\": \"<string>\",\n \"venue\": \"<string>\",\n \"physical_address\": \"<string>\",\n \"partner_type_referral\": true,\n \"partner_type_reseller\": true,\n \"partner_type_distributor\": true,\n \"enabled_modules\": [],\n \"email_template_uuid\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "<string>",
"title": "<string>",
"type": "<string>",
"description": "<string>",
"status": "<string>",
"completed": true,
"lead_sharing_enabled": true,
"start_date": "<string>",
"end_date": "<string>",
"scheduled_at": "<string>",
"timezone": "<string>",
"venue": "<string>",
"physical_address": "<string>",
"partner_type_referral": true,
"partner_type_reseller": true,
"partner_type_distributor": true,
"email_status": "draft",
"enabled_modules": [
"details"
],
"email_template": {
"uuid": "<string>",
"name": "<string>",
"subject": "<string>",
"channel": "email"
},
"tags": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"created_at": "<string>",
"updated_at": "<string>",
"tiers": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"categories": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"stages": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"partners": [
{
"uuid": "<string>",
"name": "<string>",
"partner_type": "referral",
"shared": true,
"shared_leads": true
}
],
"recipient_partnerships": [
{
"uuid": "<string>",
"name": "<string>",
"partner_type": "referral"
}
],
"contact_tags": [
{
"uuid": "<string>",
"label": "<string>"
}
],
"contacts": [
{
"uuid": "<string>",
"first_name": "<string>",
"last_name": "<string>",
"email": "<string>"
}
]
}Authorizations
API key authentication. Use "Bearer <api_key>" or "Api-Key <api_key>".
Body
Modules to enable on the campaign. Only built modules may be enabled: details, schedule, recipients, partners, email, templates, forms, leads, settings. The legacy "audience" value is accepted and mapped to "recipients". Any other value (the reserved tags/notes/analytics/assets/mdf/social slots) is rejected with a validation error.
details, schedule, partners, audience, recipients, email, templates, forms, tags, notes, leads, analytics, assets, mdf, social, settings Response
Default Response
draft, scheduled, sending, sent, partial, failed, cancelled Modules enabled on the campaign, aliased to canonical names (the legacy "audience" value is always reported as "recipients", even if the row still stores "audience"). Built modules: details, schedule, recipients, partners, email, templates, forms, leads, settings. Reserved/roadmap values (tags, notes, analytics, assets, mdf, social) may also appear if already stored on the row.
details, schedule, partners, audience, recipients, email, templates, forms, tags, notes, leads, analytics, assets, mdf, social, settings Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes