Integrate Build Emotion with your tools and workflows. Create, read, update, and delete marketing activities programmatically.
Go to your Settings page and generate an API key.
The project ID is the UUID found in your project's URL. When you open a project in the dashboard, the URL will look like:
https://buildemotion.com/user/projects/your-project-id-hereCopy the UUID from the URL (the part after /projects/) and use it in all API requests.
Include your API key in the Authorization header (recommended) or X-API-Key header:
Authorization: Bearer sk_live_your_api_key_hereX-API-Key: sk_live_your_api_key_hereCreate a marketing activity:
curl -X POST https://buildemotion.com/api/projects/{project_id}/marketing-activities/ \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature launch",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost"
}'All API requests require authentication using an API key. You can authenticate using any of the following methods:
Authorization: Bearer sk_live_your_api_key_hereX-API-Key: sk_live_your_api_key_here?api_key=sk_live_your_api_key_herehttps://buildemotion.comAll API endpoints are relative to this base URL.
/api/projects/{project_id}/marketing-activities/List all marketing activities for a project. Supports optional date filtering.
from_date (optional) - Filter activities from this date (YYYY-MM-DD)to_date (optional) - Filter activities until this date (YYYY-MM-DD)GET https://buildemotion.com/api/projects/abc123/marketing-activities/?from_date=2026-01-01&to_date=2026-01-31 Authorization: Bearer sk_live_your_api_key
{
"marketingActivities": [
{
"id": "activity_123",
"projectId": "abc123",
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost",
"created": "2026-01-15T14:30:00Z",
"modified": "2026-01-15T14:30:00Z"
}
]
}/api/projects/{project_id}/marketing-activities/Create a new marketing activity.
category (required) - One of: email, directory, social, seo, influencers, paid, offline, othersubcategory (required) - Subcategory string (see categories below)description (required) - Description of the marketing activitydate (required) - Date in YYYY-MM-DD formattime (optional) - Time in HH:MM format (24-hour)link (optional) - URL related to the activityPOST https://buildemotion.com/api/projects/abc123/marketing-activities/
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
{
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature launch",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost"
}{
"marketingActivity": {
"id": "activity_123",
"projectId": "abc123",
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature launch",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost",
"created": "2026-01-15T14:30:00Z",
"modified": "2026-01-15T14:30:00Z"
}
}/api/projects/{project_id}/marketing-activities/{activity_id}/Get a specific marketing activity by ID.
{
"marketingActivity": {
"id": "activity_123",
"projectId": "abc123",
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost",
"created": "2026-01-15T14:30:00Z",
"modified": "2026-01-15T14:30:00Z"
}
}/api/projects/{project_id}/marketing-activities/{activity_id}/Update a marketing activity. PATCH supports partial updates, PUT requires all fields.
PATCH https://buildemotion.com/api/projects/abc123/marketing-activities/activity_123/
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
{
"description": "Updated description",
"link": "https://twitter.com/updatedpost"
}/api/projects/{project_id}/marketing-activities/{activity_id}/Delete a marketing activity.
{
"status": "deleted"
}Use these category and subcategory values when creating marketing activities:
The API uses standard HTTP status codes. Error responses include a message in the response body:
{
"error": "Authentication required. Provide valid API key in Authorization header (Bearer sk_live_...) or user session."
}{
"error": "Category is required"
}{
"error": "Project not found"
}const createMarketingActivity = async (projectId, activityData) => {
const response = await fetch(
`https://buildemotion.com/api/projects/${projectId}/marketing-activities/`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer sk_live_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
category: 'social',
subcategory: 'Twitter/X',
description: 'Posted about new feature',
date: '2026-01-15',
time: '14:30',
link: 'https://twitter.com/yourpost'
})
}
);
return await response.json();
};import requests
API_KEY = "sk_live_your_api_key"
BASE_URL = "https://buildemotion.com"
def create_marketing_activity(project_id, activity_data):
url = f"{BASE_URL}/api/projects/{project_id}/marketing-activities/"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
response = requests.post(url, json=activity_data, headers=headers)
return response.json()
# Example usage
activity = {
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost"
}
result = create_marketing_activity("your-project-id", activity)curl -X POST https://buildemotion.com/api/projects/abc123/marketing-activities/ \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"category": "social",
"subcategory": "Twitter/X",
"description": "Posted about new feature",
"date": "2026-01-15",
"time": "14:30",
"link": "https://twitter.com/yourpost"
}'from_date and to_date parameters to reduce response size and improve performance.Get your API key and start integrating Build Emotion into your workflow.