Profiles
Manage your IndReelForge profiles. A profile is a named container that holds your connected social media accounts.
List Profiles
GET https://api.indreelforge.com/api/profiles
Returns all profiles belonging to the authenticated user.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
https://api.indreelforge.com/api/profiles
Response
{
"status": "success",
"data": [
{
"id": 1,
"name": "my-brand",
"avatar_url": null,
"created_at": "2025-01-01T00:00:00.000Z",
"connected_platforms": ["instagram", "youtube", "tiktok"]
}
]
}
Create Profile
POST https://api.indreelforge.com/api/profiles
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Profile name — lowercase, alphanumeric, hyphens allowed |
Name restrictions: Reserved words (admin, mod, support, etc.) and NSFW names are blocked. Names must be unique within your account.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"name": "my-brand"}' \
-X POST https://api.indreelforge.com/api/profiles
Response
{
"status": "success",
"data": {
"id": 2,
"name": "my-brand"
}
}
Delete Profile
DELETE https://api.indreelforge.com/api/profiles/:name
Deletes a profile and disconnects all its linked platform accounts.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-X DELETE https://api.indreelforge.com/api/profiles/my-brand
Response
{
"status": "success",
"message": "Profile deleted"
}
Get Single Profile
GET https://api.indreelforge.com/api/profiles/:name
Returns a single profile with all its platform connection details.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
https://api.indreelforge.com/api/profiles/my-brand
Response
{
"id": 1,
"name": "my-brand",
"avatar_url": null,
"created_at": "2025-01-01T00:00:00.000Z",
"connections": [
{
"platform": "instagram",
"status": "connected",
"platform_username": "@mybrand",
"profile_picture_url": "https://...",
"connected_at": "2025-01-10T12:00:00.000Z"
}
]
}
Connect Platform to Profile
POST https://api.indreelforge.com/api/profiles/:name/connect/:platform
Initiates OAuth for the specified platform and returns an authorization URL. Redirect the user to oauth_url to complete the connection.
Supported platforms: instagram, youtube, facebook, tiktok, x, linkedin, threads, pinterest, reddit, bluesky, google_business
Bluesky uses app-password authentication instead of OAuth. Use the Bluesky app-password endpoint instead.
Discord, Telegram, Slack, Mastodon and WordPress connect with credentials, not a login. Calling this endpoint for them returns 400 with error_code: "USE_CREDENTIALS_CONNECT" — use Connect with Credentials instead.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-X POST https://api.indreelforge.com/api/profiles/my-brand/connect/instagram
Response
{
"success": true,
"oauth_url": "https://www.instagram.com/oauth/authorize?client_id=...&state=...",
"message": "Redirecting to instagram authorization"
}
Connect Bluesky via App Password
POST https://api.indreelforge.com/api/profiles/:name/connect/bluesky/app-password
Bluesky does not use OAuth — connect using your Bluesky handle and an app password generated in Bluesky settings.
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | Yes | Your Bluesky handle (e.g. yourname.bsky.social) |
app_password | string | Yes | App password generated in Bluesky settings |
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"handle": "yourname.bsky.social", "app_password": "xxxx-xxxx-xxxx-xxxx"}' \
-X POST https://api.indreelforge.com/api/profiles/my-brand/connect/bluesky/app-password
Response
{
"success": true,
"message": "Bluesky connected",
"username": "yourname.bsky.social"
}
Connect with Credentials
POST https://api.indreelforge.com/api/profiles/:name/connect/:platform/credentials
Connects a platform that uses typed credentials instead of OAuth: Discord, Telegram, Slack, Mastodon and WordPress. Send the platform's fields as a JSON body. IndReelForge verifies them live with the platform before anything is saved, and stores them encrypted. Connecting again replaces the stored credentials. Requires the editor team role or higher.
Supported platforms: discord, telegram, slack, mastodon, wordpress
| Platform | Fields (all required) | Guide |
|---|---|---|
discord | webhook_url — the channel webhook URL | Discord |
telegram | bot_token — token from @BotFather; chat_id — public channel @username or numeric chat ID | Telegram |
slack | webhook_url — the incoming webhook URL | Slack |
mastodon | instance_url — e.g. https://mastodon.social; access_token — with write:statuses and write:media | Mastodon |
wordpress | site_url — your self-hosted site; username — a user who can publish; app_password — an application password | WordPress |
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"instance_url": "https://mastodon.social", "access_token": "YOUR_MASTODON_TOKEN"}' \
-X POST https://api.indreelforge.com/api/profiles/my-brand/connect/mastodon/credentials
Response
{
"success": true,
"message": "Connected to Mastodon as @yourname",
"platform_username": "@yourname"
}
Errors
| Status | Body | Meaning |
|---|---|---|
400 | { "error": "Webhook URL is required.", "field": "webhook_url" } | A field is missing, empty or longer than 2,000 characters |
400 | { "error": "...", "error_code": "INVALID_CREDENTIALS" } | The platform rejected the details (wrong token, unknown channel, missing permission …). The message says what to fix |
400 | { "error": "X does not connect with credentials." } | The platform uses OAuth or an app password — use the endpoints above |
404 | { "error": "Profile not found" } | No profile with that name |
502 | { "error": "Could not reach Mastodon to check these details. Please try again." } | The platform couldn't be reached to verify the details |
Disconnect Platform from Profile
DELETE https://api.indreelforge.com/api/profiles/:name/disconnect/:platform
Removes a platform connection from a profile. The profile itself is not deleted.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-X DELETE https://api.indreelforge.com/api/profiles/my-brand/disconnect/instagram
Response
{
"success": true,
"message": "instagram disconnected from my-brand"
}
Generate Whitelabel Connect Link
POST https://api.indreelforge.com/api/profiles/:name/whitelabel
Generates a branded connect page URL that your end-users can visit to link their own social accounts to your profile. Requires a Professional plan or higher.
| Parameter | Type | Required | Description |
|---|---|---|---|
pageTitle | string | No | Custom page heading (max 200 chars) |
pageDescription | string | No | Custom description text (max 500 chars) |
logoUrl | string | No | https:// URL to your logo image |
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"pageTitle": "Connect Your Social Accounts", "logoUrl": "https://yourbrand.com/logo.png"}' \
-X POST https://api.indreelforge.com/api/profiles/my-brand/whitelabel
Response
{
"url": "https://indreelforge.com/connect/a1b2c3d4e5f6...",
"message": "Whitelabel link generated"
}
Get Connected Accounts
GET https://api.indreelforge.com/api/profiles/:name/connected-accounts
Returns the list of social platforms connected to a profile.
curl \
-H 'Authorization: Apikey YOUR_API_KEY' \
https://api.indreelforge.com/api/profiles/my-brand/connected-accounts
Response
{
"status": "success",
"data": {
"instagram": {
"connected": true,
"username": "@mybrand",
"connected_at": "2025-01-10T12:00:00.000Z"
},
"youtube": {
"connected": true,
"username": "My Brand Channel",
"connected_at": "2025-01-11T09:00:00.000Z"
},
"tiktok": {
"connected": false
}
}
}