API Documentation
Learn how to integrate Auto Content with any platform. Works with WordPress out of the box, or build your own compatible API.
rocket_launch How It Works
Auto Content uses the WordPress REST API format as the standard protocol. This means:
WordPress Sites
Works immediately! Just add your site URL and Application Password.
Custom Platforms
Create WordPress-compatible endpoints on your server, then add it like a WordPress site.
Integration Flow:
web WordPress Integration
Create Application Password in WordPress
WordPress 5.6+ supports Application Passwords natively. For older versions, install the "Application Passwords" plugin.
- Log in to your WordPress admin at
yoursite.com/wp-admin - Navigate to
Users > Profile - Scroll down to "Application Passwords" section
- Enter name:
Auto Content - Click "Add New Application Password"
- Copy the generated password immediately (spaces are OK, they're part of the password)
warning You will only see this password once! Copy it before closing the dialog.
Add Site to Auto Content
- Go to Dashboard > WordPress Manager
- Click "Add Site" button
- Fill in the form:
- Site Name: Any name to identify your site
- Site URL:
https://yoursite.com(without /wp-admin) - Username: Your WordPress login username
- App Password: The password you just created
- Click "Test Connection" to verify
- If successful, click "Save Site"
Create a Campaign
- In WordPress Manager, click "Create Campaign"
- Select your site and configure:
- Source Categories: Topics to pull content from
- Posts per Day: How many posts to publish daily
- Post Status: Publish immediately or save as draft
- Custom Prompt: (Optional) AI instructions for rewriting
- Click "Activate Campaign"
You're All Set!
Auto Content will now automatically crawl content, rewrite it with AI, and publish to your WordPress site based on your schedule.
code Custom Platform Integration
Want to post to a custom CMS, Laravel app, Node.js backend, or any other platform? Create REST API endpoints that follow the WordPress API format, then add your site to Auto Content just like a WordPress site.
lightbulb Key Concept
Auto Content doesn't care if your site runs WordPress or not. It only cares that your API responds correctly to these endpoints:
Required Endpoints on Your Server:
/wp-json/wp/v2/posts
Create new posts (Required)
/wp-json/wp/v2/categories
List categories (Required for category mapping)
/wp-json/wp/v2/media
Upload images (Optional - for featured images)
Step-by-Step for Custom Platforms:
- Create the API endpoints on your server (see Code Examples below)
-
Implement Basic Auth - Your API should accept
Authorization: Basic base64(user:pass) -
Return WordPress-compatible JSON - Especially
idandlinkfields - Add to Auto Content - Go to WordPress Manager > Add Site, enter your site URL and credentials
-
Test Connection - Auto Content will call your
/wp-json/wp/v2/categoriesendpoint to verify
info Important Notes
- Your URL must use HTTPS (SSL required for security)
- The path
/wp-json/wp/v2/must be exactly this format - Credentials you enter in Auto Content will be sent as Basic Auth headers
- You handle storing posts in your own database - Auto Content just sends the data
description API Specification
/wp-json/wp/v2/posts
Creates a new post. This is the main endpoint Auto Content calls.
Request Headers
Authorization: Basic base64(username:password)
Content-Type: application/json
Request Body (JSON)
{
"title": "Article Title",
"content": "<p>Full HTML content...</p>",
"excerpt": "Short description",
"status": "publish", // "publish" or "draft"
"categories": [1, 5], // Array of category IDs
"tags": [10, 20], // Array of tag IDs (optional)
"featured_media": 123 // Media ID from /media endpoint (optional)
}
Success Response (201 Created)
{
"id": 456, // Your database ID (required)
"link": "https://yoursite.com/post/456", // URL to view post (required)
"status": "publish",
"title": { "rendered": "Article Title" }
}
/wp-json/wp/v2/categories
Returns list of categories. Used to map Auto Content categories to your site's categories.
Response (200 OK)
[
{ "id": 1, "name": "Technology", "slug": "technology" },
{ "id": 2, "name": "News", "slug": "news" },
{ "id": 3, "name": "Crypto", "slug": "crypto" }
]
/wp-json/wp/v2/media
(Optional)
Uploads featured images. Auto Content downloads the source image and sends the binary data.
Request Headers
Authorization: Basic base64(username:password)
Content-Type: image/jpeg // or image/png, image/webp
Content-Disposition: attachment; filename="image.jpg"
Request Body
Raw binary image data
Success Response (201 Created)
{
"id": 789,
"source_url": "https://yoursite.com/uploads/image.jpg"
}
api REST API Reference
Access all Auto Content features programmatically. Create campaigns, fetch articles with field selection, AI rewriting, and more through our comprehensive REST API.
key Authentication
All API requests require an API key. Include it in the header:
X-API-Key: sk_live_your_api_key_here
// OR
Authorization: Bearer sk_live_your_api_key_here
Get your API key from Dashboard > API Keys
Base URL
https://aicontentwriter.net/api/v1
article Articles API
Fetch articles with field selection - only get the data you need.
/api/v1/articles
List articles with optional field selection and filters.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
fields | string | Comma-separated fields: title,content,sentiment |
keyword | string | Search in title and content |
category | string | Filter by category slug |
source | string | Filter by source ID |
language | string | Filter by language code (en, vi) |
sentiment | string | positive, negative, neutral |
coin | string | Filter by coin tickers (BTC,ETH) |
from | date | Start date (YYYY-MM-DD) |
to | date | End date (YYYY-MM-DD) |
page | int | Page number (default: 1) |
limit | int | Items per page (max: 100) |
sort | string | Sort by: published_at, fetched_at, title |
order | string | asc or desc (default: desc) |
include_duplicates | bool | Include duplicate articles (default: false) |
Example Request
GET /api/v1/articles?fields=article_id,title,sentiment,coins&category=crypto&limit=10&sort=published_at&order=desc
/api/v1/articles/{id}
Get single article. Supports optional fields parameter.
Response Example
{
"status": "success",
"fields": ["article_id", "url", "title", ...],
"article": {
"article_id": "a1b2c3d4e5f6...",
"url": "https://source.com/article",
"title": "Bitcoin Reaches New All-Time High",
"description": "Bitcoin price surged...",
"content": "Full article content...",
"content_html": "<article>...</article>",
"rewritten_title": "BTC Hits Historic Peak",
"rewritten_description": "Bitcoin achieves...",
"image_url": "https://cdn.source.com/img.jpg",
"images": {"img-1": "url1", "img-2": "url2"},
"videos": {"vid-1": "url1"},
"tweets": {"tweet-1": "embed_code"},
"author": "John Doe",
"language": "en",
"published_at": "2026-01-21 10:30:00",
"fetched_at": "2026-01-21 10:35:00",
"sentiment": "positive",
"sentiment_stats": {
"positive": 85.5,
"negative": 4.3,
"neutral": 10.2
},
"keywords": ["bitcoin", "crypto", "price"],
"ai_tags": ["cryptocurrency", "finance"],
"coins": ["BTC", "ETH"],
"ai_summary": "Bitcoin hits $100K...",
"is_duplicate": false,
"duplicate_of": null,
"source": {
"id": "coindesk",
"name": "CoinDesk",
"domain": "coindesk.com",
"icon": "https://..."
},
"category": {
"name": "Cryptocurrency",
"slug": "crypto"
},
"country": "US"
}
}
/api/v1/articles/export
Export articles with full content. Max 1000 articles per request.
Query Parameters
Same filters as /articles plus: format (json/csv), limit (max: 1000)
Example Request
GET /api/v1/articles/export?fields=title,content,sentiment&category=crypto&limit=500
/api/v1/articles/rewrite
AI rewrite article with custom prompt. AI processing is included with your plan.
Request Body
{
"article_id": "a1b2c3d4...",
"custom_prompt": "Rewrite in professional tone, focus on price impact",
"target_language": "vi",
"fields_to_rewrite": ["title", "description", "content"]
}
Response
{
"status": "success",
"article_id": "a1b2c3d4...",
"original": {
"title": "Bitcoin Reaches New All-Time High",
"description": "Bitcoin price surged...",
"content": "Full article content..."
},
"rewritten": {
"title": "Bitcoin Đạt Đỉnh Cao Mới",
"description": "Giá Bitcoin tăng vọt...",
"content": "Nội dung bài viết..."
},
"message": "Article rewritten successfully"
}
/api/v1/articles/fields
List all available fields for field selection.
Available Fields (25 fields)
article_id
url
title
description
content
content_html
rewritten_title
rewritten_description
image_url
images
videos
tweets
author
language
published_at
fetched_at
sentiment
sentiment_stats
keywords
ai_tags
coins
ai_summary
is_duplicate
duplicate_of
source
category
country
Response Example
{
"status": "success",
"available_fields": ["article_id", "url", "title", ...],
"default_fields": ["article_id", "url", "title", "description", ...],
"field_descriptions": {
"article_id": "Unique article identifier (MD5 hash)",
"content": "Full article content (text)",
"sentiment_stats": "Detailed sentiment scores",
...
}
}
web WordPress & Campaign API
Manage WordPress sites and campaigns programmatically with full customization.
/api/v1/wordpress/campaigns
Create a new campaign with full customization including AI prompts.
Request Body (All Fields)
{
// Required fields
"wp_site_id": 1,
"name": "Crypto News Campaign",
"source_categories": [1, 2, 5],
// Posting settings
"posts_per_day": 10,
"interval_minutes": 60,
"batch_size": 5,
"min_word_count": 200,
// WordPress settings
"wp_category_id": null,
"wp_category_name": "",
"auto_create_category": true,
"wp_post_status": "publish",
// AI Rewriting settings
"use_custom_prompt": true,
"custom_prompt": "Rewrite this article in Vietnamese, professional tone, focus on key insights. Keep the same structure but make it unique.",
"target_language": "vi",
// Field mapping (customize which fields to use)
"field_mapping": {
"title": "rewritten_title",
"content": "rewritten_description",
"excerpt": "description"
},
// Article filters
"min_article_date": "2026-01-01",
"article_order": "newest"
}
All Campaign Fields Explained
| Field | Type | Description |
|---|---|---|
wp_site_id | int | Required. WordPress site ID |
name | string | Required. Campaign name |
source_categories | array | Required. Array of source category IDs |
posts_per_day | int | Max posts per day (default: 10) |
interval_minutes | int | Minutes between posts (default: 60) |
batch_size | int | Articles per batch (default: 5) |
min_word_count | int | Minimum words required (default: 200) |
auto_create_category | bool | Auto-create category on WordPress |
wp_category_id | int | Fixed WordPress category ID |
wp_category_name | string | Category name if auto_create is true |
wp_post_status | string | "publish" or "draft" |
use_custom_prompt | bool | Enable AI rewriting |
custom_prompt | string | Custom AI prompt for rewriting |
target_language | string | Target language code (en, vi, etc.) |
field_mapping | object | Map article fields to WP fields |
min_article_date | date | Only use articles after this date |
article_order | string | "newest" or "oldest" |
/wordpress/sites
List all WordPress sites
/wordpress/sites
Add new WordPress site
/wordpress/campaigns
List all campaigns
/wordpress/campaigns/{id}
Update campaign settings
/wordpress/campaigns/{id}/toggle
Activate/deactivate campaign
/wordpress/publish
Manually publish an article
/wordpress/history
Get posting history
/wordpress/campaigns/{id}
Delete a campaign
webhook Webhooks Management API
Create and manage webhooks programmatically. Integrate with n8n, Make, Zapier, or custom platforms.
/api/v1/webhooks
List all webhooks for authenticated user.
Response
{
"status": "success",
"webhooks": [
{
"id": 1,
"name": "n8n Integration",
"url": "https://n8n.example.com/webhook/xxx",
"events": ["article.created", "wordpress.posted"],
"is_active": true,
"total_triggers": 150,
"total_success": 148,
"total_failures": 2,
"last_triggered_at": "2026-01-22 10:30:00"
}
],
"available_events": {
"article.created": "Triggered when a new article is crawled",
"article.rewritten": "Triggered when an article is rewritten by AI",
"wordpress.posted": "Triggered when an article is posted to WordPress",
"wordpress.failed": "Triggered when a WordPress post fails",
"campaign.completed": "Triggered when a campaign batch completes"
}
}
/api/v1/webhooks
Create a new webhook (max 10 per user).
Request Body
{
"name": "My n8n Webhook",
"url": "https://n8n.example.com/webhook/abc123",
"events": ["article.created", "wordpress.posted"],
"secret": "optional_custom_secret" // Auto-generated if not provided
}
Response
{
"status": "success",
"message": "Webhook created successfully",
"webhook": {
"id": 5,
"name": "My n8n Webhook",
"url": "https://n8n.example.com/webhook/abc123",
"secret": "a1b2c3d4...", // Save this for signature verification!
"events": ["article.created", "wordpress.posted"]
}
}
/api/v1/webhooks/{id}
Update webhook settings.
Request Body (all fields optional)
{
"name": "Updated Name",
"url": "https://new-url.com/webhook",
"events": ["wordpress.posted", "wordpress.failed"],
"is_active": false // Disable webhook temporarily
}
/api/v1/webhooks/{id}
Delete a webhook permanently.
/api/v1/webhooks/{id}/test
Send a test payload to verify webhook is working.
Response
{
"status": "success",
"message": "Test webhook sent successfully",
"response_code": 200,
"duration_ms": 145
}
/api/v1/webhooks/{id}/logs
Get webhook delivery logs (last 50 by default).
Query Parameters
limit - Number of logs to return (default: 50)
Response
{
"status": "success",
"logs": [
{
"id": 1,
"event_type": "wordpress.posted",
"response_code": 200,
"duration_ms": 234,
"status": "success",
"created_at": "2026-01-22 10:30:00"
},
{
"id": 2,
"event_type": "article.created",
"response_code": 500,
"duration_ms": 5000,
"status": "failed",
"error_message": "Connection timeout",
"created_at": "2026-01-22 09:15:00"
}
]
}
code Quick Examples
cURL - Get Articles with Field Selection
curl -X GET "https://aicontentwriter.net/api/v1/articles?fields=title,sentiment,coins&limit=5" \
-H "X-API-Key: sk_live_your_api_key"
JavaScript - Create Campaign with AI Prompt
const response = await fetch('https://aicontentwriter.net/api/v1/wordpress/campaigns', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'sk_live_your_api_key'
},
body: JSON.stringify({
wp_site_id: 1,
name: 'AI Crypto News',
source_categories: [1, 2],
posts_per_day: 10,
use_custom_prompt: true,
custom_prompt: 'Rewrite professionally in Vietnamese',
target_language: 'vi'
})
});
Python - AI Rewrite Article
import requests
response = requests.post(
'https://aicontentwriter.net/api/v1/articles/rewrite',
headers={'X-API-Key': 'sk_live_your_api_key'},
json={
'article_id': 'a1b2c3d4...',
'custom_prompt': 'Rewrite as a Twitter thread',
'target_language': 'en',
'fields': ['title', 'description']
}
)
print(response.json())
speed Rate Limits
| Plan | Requests/Month | Rate Limit |
|---|---|---|
| Free | 200/day | 1 req/sec |
| Starter | 10,000 | 5 req/sec |
| Pro | 50,000 | 10 req/sec |
| Ultra | 200,000 | 30 req/sec |
AI Rewriting endpoints consume additional quota based on content length.
webhook Webhooks & Integrations
Connect Auto Content with n8n, make.com, Zapier, or any automation platform using webhooks.
How Webhooks Work
When events occur in Auto Content (like new articles or WordPress posts), we send a POST request to your configured webhook URL with event data. This allows you to:
- check Trigger n8n workflows when new content is available
- check Create make.com scenarios for content distribution
- check Connect to Zapier for additional integrations
- check Build custom integrations with your own systems
Supported Events
| Event | Description | Use Case |
|---|---|---|
article.created |
New article crawled from content sources | Send to content review queue |
article.rewritten |
Article processed by AI rewriting | Publish to multiple platforms |
wordpress.posted |
Article successfully posted to WordPress | Notify team, update CRM |
wordpress.failed |
WordPress post failed | Alert for manual intervention |
campaign.completed |
Campaign batch finished processing | Send daily summary report |
Webhook Payload Format
All webhooks send JSON payloads with the following structure:
{
"event": "wordpress.posted",
"timestamp": "2026-01-21T10:30:00+00:00",
"data": {
"article_id": 123,
"title": "AI Revolution in 2026",
"url": "https://yoursite.com/ai-revolution-2026",
"wp_post_id": 456,
"wp_post_url": "https://yoursite.com/?p=456",
"campaign_id": 1,
"campaign_name": "Tech News Daily"
}
}
Security & Verification
Each webhook request includes security headers for verification:
| Header | Description |
|---|---|
X-Webhook-Event |
Event type (e.g., "wordpress.posted") |
X-Webhook-Signature |
HMAC-SHA256 signature: sha256=<hash> |
X-Webhook-Timestamp |
Unix timestamp when webhook was sent |
Verify signature in PHP:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $yourWebhookSecret);
if (hash_equals($expected, $signature)) {
// Signature valid - process webhook
$data = json_decode($payload, true);
} else {
// Invalid signature - reject
http_response_code(401);
}
n8n Integration Example
- In n8n, add a Webhook node as trigger
- Set HTTP Method to
POST - Copy the webhook URL from n8n
- In Auto Content Dashboard → Webhooks → Add Webhook
- Paste the n8n URL and select events to trigger
- Click "Test" to verify connection
- Add processing nodes in n8n (e.g., Slack notification, Google Sheets)
make.com Integration Example
- Create a new Scenario in make.com
- Add a Webhooks module (Custom webhook)
- Copy the webhook URL from make.com
- In Auto Content Dashboard → Webhooks → Add Webhook
- Paste the make.com URL and select events
- Click "Test" - make.com will detect the data structure
- Add modules like Twitter, Facebook, or Email to complete your scenario
download Ready-to-Use Workflow Templates
Import these templates directly into n8n or make.com - no coding required!
n8n Workflow Templates
Template 1: Slack Notification
Get notified on Slack when new articles are posted
{
"name": "Auto Content - Slack Notification",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "autocontent-webhook",
"responseMode": "onReceived",
"responseData": "allEntries"
},
"id": "webhook-1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.event }}",
"operation": "equals",
"value2": "wordpress.posted"
}
]
}
},
"id": "filter-1",
"name": "Filter Posted Events",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"channel": "#content-updates",
"text": ":newspaper: *New Article Published!*\n\n*Title:* {{ $json.data.title }}\n*URL:* {{ $json.data.wp_post_url }}\n*Campaign:* {{ $json.data.campaign_name }}",
"otherOptions": {}
},
"id": "slack-1",
"name": "Slack",
"type": "n8n-nodes-base.slack",
"typeVersion": 2,
"position": [650, 250],
"credentials": {
"slackApi": {
"id": "YOUR_SLACK_CREDENTIALS_ID",
"name": "Slack account"
}
}
}
],
"connections": {
"Webhook": {
"main": [[{"node": "Filter Posted Events", "type": "main", "index": 0}]]
},
"Filter Posted Events": {
"main": [[{"node": "Slack", "type": "main", "index": 0}], []]
}
}
}
Template 2: Google Sheets Logger
Log all published articles to a Google Sheet
{
"name": "Auto Content - Google Sheets Logger",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "autocontent-sheets",
"responseMode": "onReceived"
},
"id": "webhook-1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"value": "YOUR_SPREADSHEET_ID",
"mode": "id"
},
"sheetName": {
"__rl": true,
"value": "Sheet1",
"mode": "name"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Date": "={{ $now.format('yyyy-MM-dd HH:mm') }}",
"Event": "={{ $json.event }}",
"Title": "={{ $json.data.title }}",
"URL": "={{ $json.data.wp_post_url || $json.data.url }}",
"Campaign": "={{ $json.data.campaign_name }}",
"Status": "={{ $json.data.status || 'posted' }}"
}
},
"options": {}
},
"id": "sheets-1",
"name": "Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"position": [450, 300],
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YOUR_GOOGLE_CREDENTIALS_ID",
"name": "Google account"
}
}
}
],
"connections": {
"Webhook": {
"main": [[{"node": "Google Sheets", "type": "main", "index": 0}]]
}
}
}
Template 3: Email Notification
Send email when posts fail (for error monitoring)
{
"name": "Auto Content - Error Alert Email",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "autocontent-errors",
"responseMode": "onReceived"
},
"id": "webhook-1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300]
},
{
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.event }}",
"operation": "equals",
"value2": "wordpress.failed"
}
]
}
},
"id": "filter-1",
"name": "Filter Failed Events",
"type": "n8n-nodes-base.if",
"typeVersion": 1,
"position": [450, 300]
},
{
"parameters": {
"fromEmail": "[email protected]",
"toEmail": "[email protected]",
"subject": "[Auto Content] Post Failed - {{ $json.data.title }}",
"emailType": "html",
"html": "<h2>WordPress Post Failed</h2><p><strong>Title:</strong> {{ $json.data.title }}</p><p><strong>Campaign:</strong> {{ $json.data.campaign_name }}</p><p><strong>Error:</strong> {{ $json.data.error_message }}</p><p><strong>Time:</strong> {{ $json.timestamp }}</p>",
"options": {}
},
"id": "email-1",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2,
"position": [650, 250],
"credentials": {
"smtp": {
"id": "YOUR_SMTP_CREDENTIALS_ID",
"name": "SMTP account"
}
}
}
],
"connections": {
"Webhook": {
"main": [[{"node": "Filter Failed Events", "type": "main", "index": 0}]]
},
"Filter Failed Events": {
"main": [[{"node": "Send Email", "type": "main", "index": 0}], []]
}
}
}
help How to Import in n8n
- Copy the JSON template above
- In n8n, click + Add Workflow
- Click the ... menu (top right) → Import from JSON
- Paste the JSON and click Import
- Update credentials (Slack, Google, SMTP) with your own
- Copy the Webhook URL and add it to Auto Content Dashboard
make.com Scenario Templates
Template 1: Discord Notification
Post updates to a Discord channel
{
"name": "Auto Content - Discord Notification",
"flow": [
{
"id": 1,
"module": "gateway:CustomWebHook",
"version": 1,
"parameters": {
"hook": "YOUR_WEBHOOK_ID",
"maxResults": 1
},
"mapper": {},
"metadata": {
"designer": {"x": 0, "y": 0},
"restore": {},
"expect": [
{"name": "event", "type": "text"},
{"name": "timestamp", "type": "date"},
{
"name": "data",
"type": "collection",
"spec": [
{"name": "article_id", "type": "number"},
{"name": "title", "type": "text"},
{"name": "url", "type": "url"},
{"name": "wp_post_url", "type": "url"},
{"name": "campaign_name", "type": "text"}
]
}
]
}
},
{
"id": 2,
"module": "builtin:BasicRouter",
"version": 1,
"parameters": {},
"routes": [
{
"flow": [
{
"id": 3,
"module": "discord:SendMessageToChannel",
"version": 2,
"parameters": {
"channelId": "YOUR_CHANNEL_ID",
"content": ":newspaper: **New Article Published!**\n\n**Title:** {{1.data.title}}\n**URL:** {{1.data.wp_post_url}}\n**Campaign:** {{1.data.campaign_name}}"
}
}
],
"filters": [
{
"condition": "{{1.event}} = wordpress.posted"
}
]
}
]
}
]
}
Template 2: Airtable Content Database
Save all content to Airtable for tracking
{
"name": "Auto Content - Airtable Logger",
"flow": [
{
"id": 1,
"module": "gateway:CustomWebHook",
"version": 1,
"parameters": {
"hook": "YOUR_WEBHOOK_ID",
"maxResults": 1
}
},
{
"id": 2,
"module": "airtable:ActionCreateRecord",
"version": 3,
"parameters": {
"base": "YOUR_BASE_ID",
"table": "Content Log",
"record": {
"Date": "{{formatDate(1.timestamp; 'YYYY-MM-DD HH:mm')}}",
"Event Type": "{{1.event}}",
"Title": "{{1.data.title}}",
"URL": "{{1.data.wp_post_url}}",
"Campaign": "{{1.data.campaign_name}}",
"Status": "Published"
}
}
}
],
"metadata": {
"instant": true,
"designer": {
"version": 2
}
}
}
Template 3: Telegram Bot Alert
Get instant alerts via Telegram
{
"name": "Auto Content - Telegram Alert",
"flow": [
{
"id": 1,
"module": "gateway:CustomWebHook",
"version": 1,
"parameters": {
"hook": "YOUR_WEBHOOK_ID",
"maxResults": 1
}
},
{
"id": 2,
"module": "builtin:BasicRouter",
"version": 1,
"routes": [
{
"flow": [
{
"id": 3,
"module": "telegram:SendMessage",
"version": 3,
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "📰 *New Article Published!*\n\n*Title:* {{1.data.title}}\n\n*Campaign:* {{1.data.campaign_name}}\n\n🔗 [Read Article]({{1.data.wp_post_url}})",
"parseMode": "Markdown",
"disableWebPagePreview": false
}
}
],
"filters": [{"condition": "{{1.event}} = wordpress.posted"}]
},
{
"flow": [
{
"id": 4,
"module": "telegram:SendMessage",
"version": 3,
"parameters": {
"chatId": "YOUR_CHAT_ID",
"text": "⚠️ *Post Failed!*\n\n*Title:* {{1.data.title}}\n*Error:* {{1.data.error_message}}\n*Campaign:* {{1.data.campaign_name}}",
"parseMode": "Markdown"
}
}
],
"filters": [{"condition": "{{1.event}} = wordpress.failed"}]
}
]
}
]
}
help How to Import in make.com
- In make.com, click Create a new scenario
- Click the ... menu (bottom) → Import Blueprint
- Paste the JSON template and click Save
- Click on the Webhooks module → Create a webhook
- Copy the generated URL to Auto Content Dashboard → Webhooks
- Configure other modules (Discord bot token, Airtable API key, etc.)
- Turn ON the scenario scheduling
lightbulb Common Automation Use Cases
Social Media Cross-Posting
When wordpress.posted fires:
- → Share to Twitter/X automatically
- → Post to Facebook Page
- → Create LinkedIn post
- → Pin to Pinterest board
Team Notifications
Keep your team updated:
- → Slack channel notifications
- → Discord server updates
- → Microsoft Teams messages
- → Email digest summaries
Content Analytics
Track all published content:
- → Log to Google Sheets
- → Save to Airtable database
- → Update Notion database
- → Send to custom analytics API
Error Monitoring
When wordpress.failed fires:
- → Send urgent email alert
- → Create Jira/Trello ticket
- → Log to error tracking (Sentry)
- → SMS notification via Twilio
terminal Code Examples
Complete endpoint implementations for your custom platform. Copy and adapt to your framework.
Quick test commands to verify your API endpoints. Replace credentials and URLs with your own.
# ========== TEST CONNECTION ==========
# Get categories (test if API is working)
curl -X GET "https://yoursite.com/wp-json/wp/v2/categories" \
-u "username:app_password" \
-H "Content-Type: application/json"
# Expected response:
# [{"id":1,"name":"Technology","slug":"technology"},...]
# ========== CREATE A POST ==========
curl -X POST "https://yoursite.com/wp-json/wp/v2/posts" \
-u "username:app_password" \
-H "Content-Type: application/json" \
-d '{
"title": "My Automated Post",
"content": "<p>This is the post content with <strong>HTML</strong> support.</p>",
"excerpt": "A short description of the post",
"status": "draft",
"categories": [1, 2]
}'
# Expected response:
# {"id":123,"link":"https://yoursite.com/posts/123","status":"draft",...}
# ========== CREATE POST AS PUBLISHED ==========
curl -X POST "https://yoursite.com/wp-json/wp/v2/posts" \
-u "username:app_password" \
-H "Content-Type: application/json" \
-d '{
"title": "Published Post",
"content": "Content goes here",
"status": "publish"
}'
# ========== UPLOAD MEDIA (Optional) ==========
curl -X POST "https://yoursite.com/wp-json/wp/v2/media" \
-u "username:app_password" \
-H "Content-Type: image/jpeg" \
-H "Content-Disposition: attachment; filename=featured.jpg" \
--data-binary "@/path/to/image.jpg"
# Expected response:
# {"id":456,"source_url":"https://yoursite.com/uploads/featured.jpg"}
# ========== CREATE POST WITH FEATURED IMAGE ==========
# First upload the image, then use the returned media_id
curl -X POST "https://yoursite.com/wp-json/wp/v2/posts" \
-u "username:app_password" \
-H "Content-Type: application/json" \
-d '{
"title": "Post with Image",
"content": "Content here",
"status": "publish",
"featured_media": 456
}'
help Frequently Asked Questions
Do I need WordPress to use Auto Content?
No! WordPress is just the easiest option because it already has the required API. For other platforms, create the same API endpoints and Auto Content will work identically.
Why does the path have to be /wp-json/wp/v2/?
This is the WordPress REST API standard format. Auto Content uses this format for all requests, so your custom endpoints must match these paths exactly.
Can I use Auto Content with Shopify/Wix/Squarespace?
If you can create a server (even a simple one on Vercel/Netlify) that proxies our requests to their API, yes! Your proxy would translate our WordPress-format requests to their platform's format.
Is HTTPS required?
Yes. We send credentials via Basic Auth which must be encrypted. Free SSL is available from Let's Encrypt or Cloudflare.
What if my endpoint returns an error?
The post will be marked as failed in your campaign history. You can view the error message and retry. Common issues: wrong credentials, invalid JSON response, or 500 server errors.
How do I test my custom endpoint?
Use the "Test Connection" button when adding your site. It calls /wp-json/wp/v2/categories - if that works, your setup is correct!
Need Help?
Having trouble with integration? Our support team can help you set up.
mail Contact Support