Skip to main content
Authenticated API

This endpoint requires a valid JWT Bearer token with content_creator roles. Accessible via the API gateway.

Creator Content API

Content creation, campaign management, AI-generated content, and digital asset management for creators.

Overview

AttributeValue
Base Path/api/v1/creator/content
AuthenticationBearer Token
Required Rolescreator, content_manager, manager, tenant_admin, platform_admin, system_admin, super_admin

Campaigns

List Campaigns

GET /api/v1/creator/content/campaigns

Query Parameters

ParameterTypeDescription
statusstringdraft, active, paused, completed
typestringCampaign type filter
start_datedateFilter by start date

Response

{
"campaigns": [
{
"id": "campaign_001",
"name": "Q1 Product Launch",
"description": "Multi-platform campaign for new product line",
"status": "active",
"type": "product_launch",
"date_range": {
"start": "2026-01-15",
"end": "2026-02-28"
},
"platforms": ["twitter", "linkedin", "instagram", "youtube"],
"content_items": 24,
"published_items": 12,
"scheduled_items": 8,
"draft_items": 4,
"metrics": {
"total_impressions": 125000,
"total_engagements": 4500,
"engagement_rate": 3.6
},
"created_at": "2026-01-10T00:00:00Z"
}
],
"total": 5
}

Create Campaign

POST /api/v1/creator/content/campaigns

Request Body

{
"name": "Summer Menu Launch",
"description": "Promote new summer menu items across all channels",
"type": "product_launch",
"date_range": {
"start": "2026-06-01",
"end": "2026-08-31"
},
"platforms": ["twitter", "instagram", "facebook"],
"goals": {
"impressions": 500000,
"engagements": 15000,
"conversions": 1000
},
"budget": {
"total": 5000.00,
"currency": "USD"
},
"tags": ["summer", "menu", "seasonal"]
}

Response

{
"id": "campaign_002",
"name": "Summer Menu Launch",
"status": "draft",
"created_at": "2026-01-24T19:30:00Z"
}

Get Campaign

GET /api/v1/creator/content/campaigns/{campaign_id}

Response

{
"id": "campaign_001",
"name": "Q1 Product Launch",
"description": "Multi-platform campaign for new product line",
"status": "active",
"type": "product_launch",
"date_range": {
"start": "2026-01-15",
"end": "2026-02-28"
},
"platforms": ["twitter", "linkedin", "instagram", "youtube"],
"goals": {
"impressions": {"target": 200000, "current": 125000, "progress": 62.5},
"engagements": {"target": 8000, "current": 4500, "progress": 56.25},
"conversions": {"target": 500, "current": 285, "progress": 57.0}
},
"content_calendar": [
{
"date": "2026-01-24",
"items": [
{"id": "item_001", "title": "Feature Spotlight", "platform": "twitter", "status": "published"},
{"id": "item_002", "title": "Behind the Scenes", "platform": "instagram", "status": "scheduled", "time": "14:00"}
]
}
],
"team": [
{"user_id": "user_001", "role": "owner"},
{"user_id": "user_002", "role": "contributor"}
]
}

Update Campaign

PUT /api/v1/creator/content/campaigns/{campaign_id}

Delete Campaign

DELETE /api/v1/creator/content/campaigns/{campaign_id}

Content Items

List Content Items

GET /api/v1/creator/content/items

Query Parameters

ParameterTypeDescription
campaign_idstringFilter by campaign
statusstringdraft, scheduled, published, archived
platformstringFilter by platform
content_typestringpost, video, story, article

Response

{
"items": [
{
"id": "item_001",
"title": "New Feature Announcement",
"content_type": "post",
"status": "published",
"campaign_id": "campaign_001",
"platforms": [
{
"platform": "twitter",
"content": "Excited to announce our new AI-powered features! 🚀 #innovation",
"status": "published",
"published_at": "2026-01-24T10:00:00Z",
"metrics": {
"impressions": 5200,
"engagements": 180
}
},
{
"platform": "linkedin",
"content": "We're thrilled to share our latest innovation...",
"status": "published",
"published_at": "2026-01-24T10:00:00Z"
}
],
"media": [
{
"id": "media_001",
"type": "image",
"url": "https://cdn.example.com/content/feature_announcement.png"
}
],
"created_at": "2026-01-20T00:00:00Z",
"created_by": "user_001"
}
],
"total": 24
}

Create Content Item

POST /api/v1/creator/content/items

Request Body

{
"title": "Weekly Tips: Kitchen Efficiency",
"content_type": "post",
"campaign_id": "campaign_001",
"platforms": [
{
"platform": "twitter",
"content": "💡 Tip of the week: Use our speed-of-service dashboard to identify bottlenecks in real-time!\n\n#RestaurantTech #Efficiency"
},
{
"platform": "linkedin",
"content": "This week's restaurant efficiency tip:\n\nOur speed-of-service analytics can help you identify kitchen bottlenecks before they impact customer experience.\n\nHere's how leading restaurants are using data to optimize their operations..."
}
],
"media_ids": ["media_001"],
"schedule": {
"publish_at": "2026-01-25T10:00:00Z",
"timezone": "America/New_York"
},
"tags": ["tips", "efficiency", "kitchen"]
}

Get Content Item

GET /api/v1/creator/content/items/{item_id}

Update Content Item

PUT /api/v1/creator/content/items/{item_id}

Delete Content Item

DELETE /api/v1/creator/content/items/{item_id}

Duplicate Content Item

POST /api/v1/creator/content/items/{item_id}/duplicate

AI Content Generation

Generate Content

Use AI to generate content based on prompts and context.

POST /api/v1/creator/content/generate

Request Body

{
"content_type": "social_post",
"context": {
"topic": "New summer menu launch",
"key_points": [
"Fresh seasonal ingredients",
"New salad options",
"Limited time availability"
],
"brand_voice": "friendly_professional",
"call_to_action": "Visit us this weekend"
},
"platforms": ["twitter", "instagram", "linkedin"],
"options": {
"variations": 3,
"include_hashtags": true,
"include_emoji": true,
"max_length": {
"twitter": 280,
"instagram": 2200,
"linkedin": 3000
}
}
}

Response

{
"generation_id": "gen_001",
"variations": [
{
"id": "var_001",
"platforms": {
"twitter": "🌿 Summer is here and so is our NEW seasonal menu! Fresh salads, vibrant flavors, and ingredients picked at peak freshness. Available for a limited time only!\n\nVisit us this weekend! 🥗☀️\n\n#SummerMenu #FreshFood #LimitedTime",
"instagram": "Summer has officially arrived at [Restaurant Name]! 🌞\n\nWe're thrilled to introduce our brand new seasonal menu featuring:\n\n🥬 Farm-fresh salads with locally sourced ingredients\n🍅 Vibrant seasonal flavors you won't find anywhere else\n⏰ Available for a limited time only!\n\nDon't miss out on these summer favorites. Visit us this weekend and taste the season!\n\n#SummerMenu #FreshFood #SeasonalEating #FarmToTable",
"linkedin": "We're excited to announce the launch of our new summer menu!\n\nOur culinary team has been working to bring you the freshest seasonal ingredients and innovative new salad options that celebrate the best of summer produce.\n\nKey highlights:\n• Fresh, locally-sourced ingredients\n• New signature salad creations\n• Limited time availability\n\nWe invite you to visit us this weekend and experience our summer offerings.\n\n#RestaurantIndustry #SeasonalMenu #Hospitality"
},
"score": 0.92,
"tone_match": "excellent"
},
{
"id": "var_002",
"platforms": {...},
"score": 0.88
}
],
"metadata": {
"model": "claude-haiku-4.5",
"tokens_used": 850
}
}

Generate Image

Generate AI images for content.

POST /api/v1/creator/content/generate/image

Request Body

{
"prompt": "A beautifully plated summer salad with fresh vegetables, warm lighting, professional food photography",
"style": "photorealistic",
"aspect_ratio": "1:1",
"variations": 4
}

Response

{
"generation_id": "img_gen_001",
"images": [
{
"id": "img_001",
"url": "https://cdn.example.com/generated/img_001.png",
"thumbnail_url": "https://cdn.example.com/generated/img_001_thumb.png"
},
{
"id": "img_002",
"url": "https://cdn.example.com/generated/img_002.png"
}
],
"metadata": {
"model": "stable-diffusion-xl",
"processing_time_seconds": 12
}
}

Repurpose Content

Transform content for different platforms.

POST /api/v1/creator/content/repurpose

Request Body

{
"source_item_id": "item_001",
"target_platforms": ["tiktok", "youtube_shorts"],
"options": {
"adapt_length": true,
"adapt_tone": true,
"generate_hooks": true
}
}

Response

{
"repurposed": [
{
"platform": "tiktok",
"content": "POV: You just discovered the BEST new summer menu 🤯🥗 #foodtok #summervibes #newmenu",
"suggestions": {
"hook": "Wait until you see this new salad...",
"trending_sounds": ["original_sound_123", "summer_vibes_456"]
}
},
{
"platform": "youtube_shorts",
"content": "Our NEW summer menu just dropped! Fresh ingredients, amazing flavors, limited time only. Link in bio! #shorts #food",
"suggestions": {
"thumbnail_text": "NEW MENU 🔥"
}
}
]
}

Media Library

List Media

GET /api/v1/creator/content/media

Query Parameters

ParameterTypeDescription
typestringimage, video, audio, document
folderstringFolder path
searchstringSearch filename/tags

Response

{
"media": [
{
"id": "media_001",
"filename": "summer_salad.jpg",
"type": "image",
"mime_type": "image/jpeg",
"size_bytes": 2456789,
"dimensions": {
"width": 1920,
"height": 1080
},
"url": "https://cdn.example.com/media/summer_salad.jpg",
"thumbnails": {
"small": "https://cdn.example.com/media/summer_salad_sm.jpg",
"medium": "https://cdn.example.com/media/summer_salad_md.jpg"
},
"folder": "/campaigns/summer-2026",
"tags": ["food", "salad", "summer"],
"alt_text": "Fresh summer salad with mixed greens",
"usage_count": 5,
"created_at": "2026-01-20T00:00:00Z"
}
],
"total": 156,
"storage_used_bytes": 5678901234,
"storage_limit_bytes": 10737418240
}

Upload Media

POST /api/v1/creator/content/media/upload

Request (multipart/form-data)

file: summer_dish.jpg
folder: /campaigns/summer-2026
tags: ["food", "summer", "dish"]
alt_text: "Grilled summer vegetables"

Response

{
"id": "media_002",
"filename": "summer_dish.jpg",
"type": "image",
"url": "https://cdn.example.com/media/summer_dish.jpg",
"processing": {
"status": "complete",
"optimized_versions": ["webp", "avif"]
}
}

Get Media

GET /api/v1/creator/content/media/{media_id}

Update Media

PUT /api/v1/creator/content/media/{media_id}

Request Body

{
"tags": ["food", "summer", "featured"],
"alt_text": "Updated alt text",
"folder": "/campaigns/summer-2026/featured"
}

Delete Media

DELETE /api/v1/creator/content/media/{media_id}

Create Folder

POST /api/v1/creator/content/media/folders

Request Body

{
"path": "/campaigns/summer-2026/videos",
"name": "Videos"
}

Templates

List Templates

GET /api/v1/creator/content/templates

Response

{
"templates": [
{
"id": "template_001",
"name": "Product Announcement",
"category": "announcements",
"platforms": ["twitter", "linkedin", "instagram"],
"preview": {
"twitter": "🎉 Introducing [PRODUCT]! [DESCRIPTION]\n\n[CTA]\n\n#[HASHTAG1] #[HASHTAG2]"
},
"variables": ["PRODUCT", "DESCRIPTION", "CTA", "HASHTAG1", "HASHTAG2"],
"usage_count": 45
}
]
}

Create Template

POST /api/v1/creator/content/templates

Request Body

{
"name": "Weekly Special",
"category": "promotions",
"platforms": ["twitter", "instagram"],
"content": {
"twitter": "🌟 This week's special: [DISH_NAME]!\n\n[DESCRIPTION]\n\nAvailable [DATES]. Don't miss out!\n\n#WeeklySpecial #[RESTAURANT]",
"instagram": "✨ WEEKLY SPECIAL ALERT ✨\n\n[DISH_NAME]\n\n[DESCRIPTION]\n\n📅 Available: [DATES]\n📍 [LOCATION]\n\nTag someone who needs to try this!\n\n#WeeklySpecial #FoodLover"
}
}

Analytics

Get Content Analytics

GET /api/v1/creator/content/analytics

Query Parameters

ParameterTypeDescription
campaign_idstringFilter by campaign
start_datedatePeriod start
end_datedatePeriod end

Response

{
"period": {
"start": "2026-01-01",
"end": "2026-01-24"
},
"summary": {
"content_items_created": 48,
"content_items_published": 36,
"total_impressions": 450000,
"total_engagements": 15000,
"avg_engagement_rate": 3.33
},
"top_performing": [
{
"item_id": "item_015",
"title": "AI Feature Launch",
"impressions": 45000,
"engagements": 2100,
"engagement_rate": 4.67
}
],
"by_platform": [
{"platform": "twitter", "impressions": 180000, "engagement_rate": 2.8},
{"platform": "linkedin", "impressions": 120000, "engagement_rate": 4.2},
{"platform": "instagram", "impressions": 150000, "engagement_rate": 3.5}
],
"by_content_type": [
{"type": "image_post", "count": 20, "avg_engagement": 380},
{"type": "video", "count": 8, "avg_engagement": 650},
{"type": "text_post", "count": 8, "avg_engagement": 220}
],
"optimal_times": {
"best_days": ["tuesday", "thursday"],
"best_hours": [9, 12, 17]
}
}

Webhooks

EventDescription
content.item_createdContent item created
content.item_publishedContent published
content.item_scheduledContent scheduled
content.generation_completeAI generation finished
content.campaign_startedCampaign activated
content.campaign_endedCampaign completed

Error Responses

StatusCodeDescription
400invalid_contentContent validation failed
400generation_failedAI generation failed
404item_not_foundContent item not found
404campaign_not_foundCampaign not found
413media_too_largeMedia exceeds size limit
429generation_limitAI generation rate limit