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
- Open your n8n workflow editor
- Add an HTTP Request node
- Configure it:
| Field | Value |
|---|---|
| Method | POST |
| URL | https://api.indreelforge.com/api/upload |
| Authentication | Header Auth |
| Header Name | Authorization |
| Header Value | Apikey YOUR_API_KEY |
| Body Content Type | Multipart Form Data |
- Add form fields:
| Field Name | Type | Value |
|---|---|---|
user | String | Your profile name |
title | String | Video title / caption |
platform[] | String | instagram |
platform[] | String | tiktok |
video | File | Binary data from previous node |
Example: Google Drive to Social Media
Trigger (Google Drive) → Download File → HTTP Request (IndReelForge) → Slack Notification
- Google Drive Trigger: Watch for new files in a folder
- HTTP Request: POST to
/api/uploadwith the file asvideofield - IF Node: Check if
success === true - 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=trueand poll/api/uploadposts/statusfor 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
- Create a new Scenario
- Add an HTTP > Make a request module
- Configure:
| Field | Value |
|---|---|
| URL | https://api.indreelforge.com/api/upload |
| Method | POST |
| Body type | Multipart/form-data |
| Headers | Authorization: Apikey YOUR_API_KEY |
- Add fields to the body:
| Key | Value |
|---|---|
user | your_profile_name |
title | Your video title |
platform[] | instagram |
platform[] | youtube |
video | Map 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)
- Schedule: Runs daily
- Google Sheets: Read next unposted row (title, video URL, platforms)
- HTTP Request: POST to IndReelForge with
video=URL,add_to_queue=true - 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
- Create a new Zap
- Choose your Trigger (Google Drive, Dropbox, Airtable, etc.)
- Add action: Webhooks by Zapier > POST
- Configure:
| Field | Value |
|---|---|
| URL | https://api.indreelforge.com/api/upload |
| Payload Type | Form |
| Headers | Authorization: Apikey YOUR_API_KEY |
- Add Data fields:
| Key | Value |
|---|---|
user | your_profile_name |
title | Map from trigger |
platform[] | instagram |
platform[] | youtube |
video | File 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
successfield - Pass
video=URLinstead of files to avoid Zapier's file size limits
Airtable
Airtable Automations can call IndReelForge directly via scripting.
Setup with Airtable Automations
- Open your Airtable base
- Go to Automations tab
- Create automation with trigger: "When record matches conditions"
- 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);
}
Recommended Airtable Base Structure
| Field | Type | Example |
|---|---|---|
| Title | Single line text | "Summer collection launch" |
| Video URL | URL | https://cdn.example.com/video.mp4 |
| Platforms | Single line text | "instagram,tiktok,youtube" |
| Status | Single select | Draft / Ready / Posted / Failed |
| Upload ID | Single line text | Auto-filled by script |
| Posted At | Date | Auto-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
- Create a Webhook Trigger in your automation tool
- Copy the webhook URL
- Set it as your IndReelForge webhook URL via the API above
- 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