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, cancelled

Delete 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"
}

Contents