Marketing API
Base URL
All marketing endpoints are prefixed with:
/dev/marketing
Note: All endpoints require authentication via Bearer token in the Authorization header.
Campaign Management
Endpoints for managing marketing campaigns
List Campaigns
Retrieve all campaigns for the project
GET /dev/marketing/campaigns Authorization: Bearer YOUR_API_KEY
Create Campaign
Create a new marketing campaign
Required Fields:
- name (string)
- type (enum: 'brand_awareness', 'lead_generation', 'sales', 'engagement', 'retention')
- start_date (date)
- end_date (date, must be greater than start_date)
- total_budget (number, min 0, max 99999999.99)
Optional Fields:
- description (string)
- status (enum: 'draft', 'active', 'paused', 'completed', 'cancelled')
- target_audience (object)
- goals (object) - requires primary field if provided
- channels (array)
- metrics (object)
- kpis (array)
POST /dev/marketing/campaigns
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Summer Sale Campaign",
"description": "Promotional campaign for summer products",
"type": "sales",
"status": "draft",
"start_date": "2024-06-01T00:00:00Z",
"end_date": "2024-08-31T23:59:59Z",
"total_budget": 10000.00,
"target_audience": {
"age_range": [25, 45],
"gender": ["male", "female"],
"locations": ["US", "CA"],
"interests": ["technology", "shopping"]
},
"goals": {
"primary": "Increase sales by 30%",
"secondary": ["Brand awareness", "Customer retention"],
"kpis": [
{
"metric": "conversions",
"target": 1000,
"current": 0
}
]
},
"channels": [
{
"name": "Facebook Ads",
"type": "social_media",
"platform": "facebook",
"budget_allocation": 5000.00,
"start_date": "2024-06-01T00:00:00Z",
"end_date": "2024-08-31T23:59:59Z"
}
],
"kpis": [
{
"name": "Conversions",
"target": 1000,
"current": 0,
"unit": "count"
}
]
}Get Campaign
Retrieve details of a specific campaign
GET /dev/marketing/campaigns/:campaignId Authorization: Bearer YOUR_API_KEY
Update Campaign
Update an existing campaign
PUT /dev/marketing/campaigns/:campaignId
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "Updated Campaign Name",
"total_budget": 15000.00,
"description": "Updated description"
}Update Campaign Status
Update the status of a campaign
PATCH /dev/marketing/campaigns/:campaignId/status
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"status": "active"
}
Valid statuses: draft, active, paused, completed, cancelledDelete Campaign
Delete a campaign
DELETE /dev/marketing/campaigns/:campaignId Authorization: Bearer YOUR_API_KEY
Campaign Tasks
Endpoints for managing campaign tasks
List Campaign Tasks
Retrieve all tasks for a campaign
GET /dev/marketing/campaigns/:campaignId/tasks Authorization: Bearer YOUR_API_KEY
Create Campaign Task
Create a new task for a campaign
Required Fields:
- title (string)
Optional Fields:
- description (string)
- status (enum: 'pending', 'in_progress', 'completed', 'cancelled')
- due_date (date)
- assigned_to (UUID)
POST /dev/marketing/campaigns/:campaignId/tasks
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"title": "Create ad copy",
"description": "Write compelling ad copy for Facebook",
"assigned_to": "uuid-here",
"due_date": "2024-06-15T00:00:00Z",
"status": "pending"
}Update Campaign Task
Update a campaign task
PUT /dev/marketing/campaigns/:campaignId/tasks/:taskId
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"status": "completed",
"description": "Updated description"
}Delete Campaign Task
Delete a campaign task
DELETE /dev/marketing/campaigns/:campaignId/tasks/:taskId Authorization: Bearer YOUR_API_KEY
Content Calendar
Endpoints for managing content calendar
List Content
Retrieve all content for a campaign
GET /dev/marketing/campaigns/:campaignId/content Authorization: Bearer YOUR_API_KEY
Create Content
Create new content with optional media files
Required Fields:
- title (string)
- content_type (enum: 'blog', 'social_post', 'email', 'video', 'infographic', 'podcast')
- scheduled_date (date)
Optional Fields:
- platform (string)
- status (enum: 'draft', 'scheduled', 'published', 'cancelled')
- content (string)
- media_urls (array of URI strings)
- assigned_to (UUID)
Note: Media files can be uploaded using multipart/form-data
POST /dev/marketing/campaigns/:campaignId/content Authorization: Bearer YOUR_API_KEY Content-Type: multipart/form-data title: New Blog Post content_type: blog scheduled_date: 2024-06-15T10:00:00Z platform: wordpress status: draft content: Content description assigned_to: uuid-here media: (file upload)
Update Content
Update existing content
PUT /dev/marketing/campaigns/:campaignId/content/:contentId Authorization: Bearer YOUR_API_KEY Content-Type: multipart/form-data title: Updated Title status: published content: Updated content media: (file upload)
Delete Content
Delete content from calendar
DELETE /dev/marketing/campaigns/:campaignId/content/:contentId Authorization: Bearer YOUR_API_KEY
Campaign Analytics
Endpoints for tracking and viewing campaign analytics
Get Analytics
Retrieve analytics data for a campaign
GET /dev/marketing/campaigns/:campaignId/analytics?start_date=2024-06-01&end_date=2024-06-30&source=facebook Authorization: Bearer YOUR_API_KEY
Track Analytics
Record analytics data for a campaign
Required Fields:
- date (date)
- source (string)
- metrics (object)
Metrics object can include: impressions, clicks, conversions, cost, revenue, custom_metrics
POST /dev/marketing/campaigns/:campaignId/analytics
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"date": "2024-06-15",
"source": "facebook",
"metrics": {
"impressions": 10000,
"clicks": 500,
"conversions": 50,
"cost": 250.00,
"revenue": 5000.00,
"custom_metrics": {
"engagement_rate": 0.05
}
}
}Get Analytics Summary
Get aggregated analytics summary for a campaign
GET /dev/marketing/campaigns/:campaignId/analytics/summary?start_date=2024-06-01&end_date=2024-06-30 Authorization: Bearer YOUR_API_KEY
Campaign Leads
Endpoints for managing campaign leads
List Campaign Leads
Retrieve all leads for a campaign
GET /dev/marketing/campaigns/:campaignId/leads?status=new&search=john Authorization: Bearer YOUR_API_KEY
Create Campaign Lead
Create a new lead for a campaign
Required Fields:
- email (string, valid email)
Optional Fields:
- name (string)
- phone (string)
- source (string)
- status (enum: 'new', 'contacted', 'qualified', 'converted', 'lost')
- notes (string)
- custom_fields (object)
POST /dev/marketing/campaigns/:campaignId/leads
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"phone": "+1234567890",
"source": "facebook",
"status": "new",
"notes": "Interested in product",
"custom_fields": {
"referral_code": "SUMMER2024"
}
}Update Campaign Lead
Update a campaign lead
PUT /dev/marketing/campaigns/:campaignId/leads/:leadId
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
{
"status": "contacted",
"notes": "Follow up scheduled"
}Import Leads
Import leads from CSV file
POST /dev/marketing/campaigns/:campaignId/leads/import Authorization: Bearer YOUR_API_KEY Content-Type: multipart/form-data file: (CSV file)
Export Leads
Export campaign leads to CSV
GET /dev/marketing/campaigns/:campaignId/leads/export Authorization: Bearer YOUR_API_KEY
Delete Campaign Lead
Delete a campaign lead
DELETE /dev/marketing/campaigns/:campaignId/leads/:leadId Authorization: Bearer YOUR_API_KEY
Error Responses
400 Bad Request
{
"message": "Invalid request parameters"
}
401 Unauthorized
{
"message": "Invalid or missing API key"
}
404 Not Found
{
"message": "Campaign not found"
}
500 Internal Server Error
{
"message": "Something went wrong"
}