Skip to content

Publishing Workflows

This guide covers how to set up approval workflows, scheduling strategies, and publishing best practices.

Workflow Types

Auto-Publish (Default)

Content publishes automatically without review:

{
  "constraints": {
    "require_approval": false
  }
}

Best for: - Established brand voice - High-volume campaigns - Time-sensitive content

Manual Approval

All content requires explicit approval:

{
  "constraints": {
    "require_approval": true
  }
}

Best for: - New brands/missions - Sensitive topics - High-stakes campaigns

Hybrid Approval

Auto-approve high-confidence content:

{
  "constraints": {
    "require_approval": true,
    "auto_approve_threshold": 0.9,
    "auto_approve_after_hours": 24
  }
}

Logic: - Confidence ≥ 0.9 → Auto-approve - Confidence < 0.9 → Manual review required - Not reviewed in 24h → Auto-approve anyway

Approval Workflow

Review Queue

View pending content:

curl https://api.amp.dev/v1/content?status=pending_review \
  -H "Authorization: Bearer $AMP_API_KEY"

Approving Content

curl -X POST https://api.amp.dev/v1/content/{id}/approve \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "notes": "Approved with minor edit",
    "schedule_for": "2024-01-16T14:00:00-05:00"
  }'

Rejecting Content

curl -X POST https://api.amp.dev/v1/content/{id}/reject \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "reason": "Off-brand tone",
    "feedback": "More professional language needed",
    "regenerate": true
  }'

Bulk Operations

Approve multiple items:

curl -X POST https://api.amp.dev/v1/content/bulk/approve \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "content_ids": ["cnt_xxx", "cnt_yyy", "cnt_zzz"]
  }'

Team Review

Multiple Approvers

Configure required approvals:

{
  "config": {
    "approval": {
      "require_approval": true,
      "min_approvals": 2,
      "approvers": ["usr_xxx", "usr_yyy", "usr_zzz"]
    }
  }
}

Escalation

Auto-escalate unreviewed content:

{
  "config": {
    "approval": {
      "escalation_after_hours": 12,
      "escalation_to": "usr_admin"
    }
  }
}

Scheduling Strategies

Fixed Schedule

Post at specific times:

{
  "constraints": {
    "posting_times": ["09:00", "14:00", "17:00"],
    "timezone": "America/New_York"
  }
}

Optimal Time

Let AMP choose based on engagement data:

{
  "constraints": {
    "use_optimal_times": true,
    "earliest_time": "07:00",
    "latest_time": "21:00",
    "exclude_days": ["saturday", "sunday"]
  }
}

Manual Scheduling

Override automatic scheduling:

curl -X PUT https://api.amp.dev/v1/content/{id}/schedule \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "scheduled_for": "2024-01-20T10:00:00-05:00",
    "reason": "Aligned with product launch"
  }'

Calendar Management

View Schedule

curl https://api.amp.dev/v1/publish/queue?from=2024-01-15&to=2024-01-31 \
  -H "Authorization: Bearer $AMP_API_KEY"

Reschedule Content

curl -X PUT https://api.amp.dev/v1/content/{id}/reschedule \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "scheduled_for": "2024-01-17T09:00:00-05:00"
  }'

Cancel Scheduled Post

curl -X DELETE https://api.amp.dev/v1/publish/{content_id} \
  -H "Authorization: Bearer $AMP_API_KEY"

Cross-Platform Coordination

Synchronized Publishing

Post to multiple platforms simultaneously:

{
  "constraints": {
    "cross_platform_sync": true,
    "sync_tolerance_minutes": 5
  }
}

Staggered Publishing

Spread content across platforms:

{
  "constraints": {
    "cross_platform_stagger": true,
    "stagger_minutes": 30
  }
}

Publishing Notifications

Webhook Events

Subscribe to publishing events:

{
  "events": [
    "content.scheduled",
    "content.published",
    "content.failed"
  ]
}

Slack Integration

Send notifications to Slack:

curl -X POST https://api.amp.dev/v1/integrations/slack \
  -H "Authorization: Bearer $AMP_API_KEY" \
  -d '{
    "webhook_url": "https://hooks.slack.com/...",
    "events": ["content.published", "content.failed"],
    "channel": "#social-media"
  }'

Failure Handling

Automatic Retry

Publishing failures are retried automatically:

Attempt Delay
1 Immediate
2 5 minutes
3 30 minutes

Manual Retry

curl -X POST https://api.amp.dev/v1/content/{id}/retry-publish \
  -H "Authorization: Bearer $AMP_API_KEY"

Failure Notifications

Get alerted on failures:

{
  "config": {
    "notifications": {
      "on_publish_failure": ["email", "slack"],
      "notify_emails": ["team@company.com"]
    }
  }
}

Best Practices

1. Start with Manual Approval

Enable approval for new missions until you're confident in quality.

2. Use Optimal Times

Let AMP learn your audience's engagement patterns.

3. Buffer Scheduled Posts

Leave at least 2 hours between generation and publishing for review time.

4. Monitor Failures

Set up alerts for publishing failures to catch issues early.

5. Review Analytics

Check which posting times perform best and adjust accordingly.

Workflow Recipes

High-Touch Enterprise

{
  "constraints": {
    "require_approval": true,
    "auto_approve_after_hours": null
  },
  "config": {
    "approval": {
      "min_approvals": 2,
      "escalation_after_hours": 24
    }
  }
}

Lean Startup

{
  "constraints": {
    "require_approval": true,
    "auto_approve_threshold": 0.85,
    "auto_approve_after_hours": 4
  }
}

Established Brand

{
  "constraints": {
    "require_approval": false,
    "use_optimal_times": true
  }
}