Skip to main content

Automation Integrations

IndReelForge works with any tool that can make HTTP requests. This guide covers step-by-step setup for the most popular automation platforms.

Prerequisites: You need an IndReelForge API key. Get one from Dashboard > API Keys.


n8n​

n8n can call IndReelForge using the HTTP Request node.

Setup​

  1. Open your n8n workflow editor
  2. Add an HTTP Request node
  3. Configure it:
FieldValue
MethodPOST
URLhttps://api.indreelforge.com/api/upload
AuthenticationHeader Auth
Header NameAuthorization
Header ValueApikey YOUR_API_KEY
Body Content TypeMultipart Form Data
  1. Add form fields:
Field NameTypeValue
userStringYour profile name
titleStringVideo title / caption
platform[]Stringinstagram
platform[]Stringtiktok
videoFileBinary data from previous node

Example: Google Drive to Social Media​

Trigger (Google Drive) → Download File → HTTP Request (IndReelForge) → Slack Notification
  1. Google Drive Trigger: Watch for new files in a folder
  2. HTTP Request: POST to /api/upload with the file as video field
  3. IF Node: Check if success === true
  4. Slack: Send message "Posted to Instagram & TikTok!"

Example: RSS Feed Auto-Poster​

RSS Feed Trigger → HTTP Request (IndReelForge upload_text) → Log
{
"method": "POST",
"url": "https://api.indreelforge.com/api/upload_text",
"headers": {
"Authorization": "Apikey YOUR_API_KEY"
},
"body": {
"title": "={{$json.title}}",
"user": "my-brand",
"platform[]": ["x", "linkedin", "bluesky"]
}
}

Tips for n8n​

  • Use Split In Batches to upload multiple videos from a list
  • Use Wait node between uploads to respect rate limits
  • Use async_upload=true and poll /api/uploadposts/status for large files
  • Use the Webhook node to receive upload completion notifications (configure at /api/webhooks/config)

Make (formerly Integromat)​

Make uses HTTP modules to connect with any REST API.

Setup​

  1. Create a new Scenario
  2. Add an HTTP > Make a request module
  3. Configure:
FieldValue
URLhttps://api.indreelforge.com/api/upload
MethodPOST
Body typeMultipart/form-data
HeadersAuthorization: Apikey YOUR_API_KEY
  1. Add fields to the body:
KeyValue
useryour_profile_name
titleYour video title
platform[]instagram
platform[]youtube
videoMap from file source (Google Drive, Dropbox, etc.)

Example: Scheduled Content Calendar​

Schedule (daily at 9am) → Google Sheets (get row) → HTTP (IndReelForge) → Google Sheets (mark posted)
  1. Schedule: Runs daily
  2. Google Sheets: Read next unposted row (title, video URL, platforms)
  3. HTTP Request: POST to IndReelForge with video=URL, add_to_queue=true
  4. Google Sheets: Update row status to "Posted"

Video URL Upload (No file streaming needed)​

Instead of uploading a file through Make, pass a public URL:

Body fields:
video = https://your-cdn.com/video.mp4
user = my-brand
platform[] = tiktok
platform[] = instagram
title = Check out our latest video!

IndReelForge downloads the video server-side — no need to stream large files through Make.


Zapier​

Zapier connects with IndReelForge using Webhooks by Zapier.

Setup​

  1. Create a new Zap
  2. Choose your Trigger (Google Drive, Dropbox, Airtable, etc.)
  3. Add action: Webhooks by Zapier > POST
  4. Configure:
FieldValue
URLhttps://api.indreelforge.com/api/upload
Payload TypeForm
HeadersAuthorization: Apikey YOUR_API_KEY
  1. Add Data fields:
KeyValue
useryour_profile_name
titleMap from trigger
platform[]instagram
platform[]youtube
videoFile URL from trigger

Example: Dropbox to All Platforms​

Trigger: New file in Dropbox folder Action: Webhooks by Zapier → POST to IndReelForge

Map the Dropbox file's public URL to the video field. IndReelForge downloads and publishes it.

Example: Text Post from Google Sheets​

Trigger: New row in Google Sheet Action: POST to https://api.indreelforge.com/api/upload_text

Data:
title = {{Column A}}
user = my-brand
platform[] = x
platform[] = linkedin
platform[] = threads

Tips for Zapier​

  • Use Filter steps to only post content tagged "ready"
  • Use Delay steps between multiple uploads
  • Use Webhook Response to check success field
  • Pass video=URL instead of files to avoid Zapier's file size limits

Airtable​

Airtable Automations can call IndReelForge directly via scripting.

Setup with Airtable Automations​

  1. Open your Airtable base
  2. Go to Automations tab
  3. Create automation with trigger: "When record matches conditions"
  4. Add action: Run a script

Script: Upload Video from Airtable Record​

// Airtable Automation Script
const config = input.config();
const record = config.record;

const API_KEY = 'YOUR_INREELFORGE_API_KEY';
const API_URL = 'https://api.indreelforge.com';

// Get fields from the record
const title = record.getCellValue('Title');
const videoUrl = record.getCellValue('Video URL');
const platforms = record.getCellValue('Platforms'); // e.g., "instagram,tiktok,youtube"

// Build form data
const formData = new URLSearchParams();
formData.append('title', title);
formData.append('user', 'my-brand');
formData.append('video', videoUrl);
for (const p of platforms.split(',')) {
formData.append('platform[]', p.trim());
}

// Call IndReelForge API
const response = await fetch(`${API_URL}/api/upload`, {
method: 'POST',
headers: {
'Authorization': `Apikey ${API_KEY}`,
'Content-Type': 'application/x-www-form-urlencoded',
},
body: formData.toString(),
});

const result = await response.json();
console.log('Upload result:', JSON.stringify(result));

// Update the record with upload status
if (result.success) {
output.set('upload_id', result.data.upload_id);
output.set('status', 'posted');
} else {
output.set('status', 'failed');
output.set('error', result.error);
}
FieldTypeExample
TitleSingle line text"Summer collection launch"
Video URLURLhttps://cdn.example.com/video.mp4
PlatformsSingle line text"instagram,tiktok,youtube"
StatusSingle selectDraft / Ready / Posted / Failed
Upload IDSingle line textAuto-filled by script
Posted AtDateAuto-filled by script

Trigger: When Status changes to "Ready" Action: Run script above, then set Status to "Posted"


AI Agents (OpenAI, Claude, LangChain)​

IndReelForge is designed for AI agent integration with:

  • OpenAPI 3.0 spec at /openapi.json — auto-importable by agent frameworks
  • LLM context file at /llm.txt — optimized for AI assistants
  • Standard REST API — works with any function-calling LLM

OpenAI Function Calling​

import openai
import requests

client = openai.OpenAI()

# Define IndReelForge as a tool
tools = [
{
"type": "function",
"function": {
"name": "post_to_social_media",
"description": "Post text content to social media platforms via IndReelForge API",
"parameters": {
"type": "object",
"properties": {
"title": {"type": "string", "description": "The post text/caption"},
"platforms": {
"type": "array",
"items": {"type": "string", "enum": ["instagram", "youtube", "facebook", "tiktok", "x", "linkedin", "threads", "pinterest", "reddit", "bluesky"]},
"description": "Platforms to post to"
}
},
"required": ["title", "platforms"]
}
}
}
]

# Let the AI decide what and where to post
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "user", "content": "Write a promotional post about our new product launch and post it to X and LinkedIn"}
],
tools=tools,
tool_choice="auto"
)

# Execute the function call
tool_call = response.choices[0].message.tool_calls[0]
args = json.loads(tool_call.function.arguments)

result = requests.post(
'https://api.indreelforge.com/api/upload_text',
data={
'title': args['title'],
'user': 'my-brand',
**{f'platform[]': p for p in args['platforms']},
},
headers={'Authorization': 'Apikey YOUR_KEY'}
)
print(result.json())

Claude / Anthropic Tool Use​

import anthropic
import requests

client = anthropic.Anthropic()

tools = [
{
"name": "post_to_social_media",
"description": "Post content to social media via IndReelForge. Supports Instagram, YouTube, Facebook, TikTok, X, LinkedIn, Threads, Pinterest, Reddit, Bluesky.",
"input_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"platforms": {"type": "array", "items": {"type": "string"}}
},
"required": ["title", "platforms"]
}
}
]

response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
tools=tools,
messages=[
{"role": "user", "content": "Post 'Excited to announce our Series A!' to X, LinkedIn, and Threads"}
]
)

# Handle tool use response
for block in response.content:
if block.type == "tool_use":
data = [('title', block.input['title']), ('user', 'my-brand')]
for p in block.input['platforms']:
data.append(('platform[]', p))

result = requests.post(
'https://api.indreelforge.com/api/upload_text',
data=data,
headers={'Authorization': 'Apikey YOUR_KEY'}
)
print(result.json())

LangChain Integration​

from langchain.tools import tool
from indreelforge import IndReelForge

client = IndReelForge("YOUR_API_KEY")

@tool
def post_to_social_media(title: str, platforms: list[str]) -> str:
"""Post text content to social media platforms.
Supported platforms: instagram, youtube, facebook, tiktok, x, linkedin, threads, pinterest, reddit, bluesky, google_business.
"""
result = client.upload_text(
title=title,
user="my-brand",
platforms=platforms,
)
return f"Posted successfully. Upload ID: {result['data']['upload_id']}"

# Use in your LangChain agent
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4")
agent = initialize_agent(
tools=[post_to_social_media],
llm=llm,
agent=AgentType.OPENAI_FUNCTIONS,
)

agent.run("Post about our product launch to LinkedIn and X")

Auto-Import OpenAPI Spec​

Many AI frameworks can auto-import tools from an OpenAPI spec:

https://api.indreelforge.com/openapi.json

For LLM context (Claude, GPT, etc.):

https://api.indreelforge.com/llm.txt

Webhook Notifications​

All integrations benefit from webhook notifications. Instead of polling for upload status, receive a POST to your endpoint when uploads complete or fail.

Setup​

curl -X POST https://api.indreelforge.com/api/webhooks/config \
-H 'Authorization: Apikey YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{
"channels": { "webhook": true },
"webhook_url": "https://your-server.com/indreelforge-webhook"
}'

Webhook Payload​

{
"event": "upload.completed",
"upload_id": "upl_abc123",
"request_id": "my-custom-id",
"status": "completed",
"title": "My video title",
"platforms": ["instagram", "tiktok"],
"platform_statuses": {
"instagram": "completed",
"tiktok": "completed"
},
"platform_post_ids": {
"instagram": "instagram_post_abc",
"tiktok": "tiktok_post_xyz"
},
"completed_at": "2026-04-07T10:30:00.000Z"
}

Use with n8n/Make/Zapier​

  1. Create a Webhook Trigger in your automation tool
  2. Copy the webhook URL
  3. Set it as your IndReelForge webhook URL via the API above
  4. Your automation triggers automatically when uploads complete

Common Patterns​

Video URL (Best for Automations)​

Instead of uploading files through automation tools (which have size limits), pass a public URL:

curl -X POST https://api.indreelforge.com/api/upload \
-H 'Authorization: Apikey YOUR_KEY' \
-F 'video=https://your-cdn.com/video.mp4' \
-F 'user=my-brand' \
-F 'platform[]=instagram' \
-F 'platform[]=tiktok'

IndReelForge downloads the video server-side — no file streaming through your automation tool.

Queue System (Auto-Scheduling)​

Instead of specifying exact times, let IndReelForge auto-schedule to optimal time slots:

curl -X POST https://api.indreelforge.com/api/upload \
-H 'Authorization: Apikey YOUR_KEY' \
-F 'video=https://cdn.example.com/video.mp4' \
-F 'user=my-brand' \
-F 'platform[]=instagram' \
-F 'add_to_queue=true'

Batch Upload from CSV/Sheet​

Use your automation tool to iterate rows and call IndReelForge for each:

For each row:
POST /api/upload
video = row.video_url
title = row.caption
user = row.profile
platform[] = row.platforms.split(',')
add_to_queue = true ← auto-spaces them out