- In the dashboard — each brand appears under Connections as a profile. Most customers create and connect profiles here, with no code.
- Via the API — you reference that same profile by its
profile_id(prof_…) on every post.
How many profiles you get
Each plan includes a fixed number of profiles:
When you reach your plan’s limit, upgrade to add more profiles.
Create a profile
In the dashboard
Go to Connections → Connect account and authorize each platform you want to publish to. The profile is created for you — noprofile_id to manage by hand.
Via the API
Starting a connection creates the profile and returns a branded, time-limited connect URL in one call:profile_id (prof_…) whenever you publish a post.
Skip the platform picker
POST /v1/connections/start returns a link to a page where the user chooses which platform to
connect. If you would rather render that choice in your own UI, ask for one platform and get the
provider’s own authorization URL back:
/v1/connections/start, it creates the profile when profile_id is omitted, and accepts an
optional friendly_name.
Every platform can be started this way except Bluesky, which authenticates with an app
password rather than OAuth and returns 400 platform_not_startable — send those users to the
shared connect link instead.
List your profiles via API
To fetch every profile on the account — each with the platforms it has connected — callGET /v1/connections/status and omit profile_id. There is no separate /v1/profiles
endpoint; this is how you list profiles:
profiles array — each element has profile_id, friendly_name, connected, and
accounts (detailed under Check which platforms are connected
below). To see how many profile slots remain on your plan, call
GET /v1/usage — its profiles field returns used / limit / remaining.
Connect social accounts
Each profile starts empty. Open its connect page in a browser and sign in to every platform you want to publish to. MADIAD Hub stores the authorization, so you never handle platform tokens yourself.1
Open the connect page
In the dashboard, click Connect account. Via the API, send the user (or
yourself) to the
access_url returned by /v1/connections/start.2
Authorize each platform
Sign in to Instagram, Facebook, TikTok, and so on. Connections persist until revoked.
3
Publish
Reference the profile by its
profile_id in any post request.Supported platforms
A profile can connect any of: TikTok, Instagram, YouTube, Facebook, LinkedIn, X, Threads, Pinterest, Reddit, Bluesky, Google Business Profile, Telegram, and Discord. A post only succeeds on platforms the target profile has actually connected. Listing a platform that isn’t connected returns an error for that platform.Connect Telegram & Discord
TikTok, Instagram, and the other nine platforms connect by signing in on the connect page. Telegram and Discord work differently — they don’t have an OAuth login, so instead you link your own bot or channel webhook:Telegram — bring your own bot
Telegram — bring your own bot
- Message @BotFather on Telegram and send
/newbotto create a bot. Copy its bot token. - Add the bot to your target channel or group as an administrator so it can post.
- In the dashboard, open Connections → Telegram, paste the bot token and the chat ID (
@yourchannelor a numeric id like-100123456789), then connect.
profile_id, bot_token, chat_id. name is an optional label. The bot must be an administrator of the target channel or group. chat_id is either @channelname or a numeric id like -100123456789. Returns 400 if any required field is missing.Discord — channel webhook
Discord — channel webhook
- In Discord, go to Server Settings → Integrations → Webhooks → New Webhook, pick the channel you want to post to, and click Copy Webhook URL.
- In the dashboard, open Connections → Discord, paste the webhook URL, then connect.
profile_id, webhook_url. name is an optional label. Returns 400 if either required field is missing.Telegram and Discord are not covered by Analytics — follower, reach, and engagement metrics aren’t available for these platforms.
Uploads are unlimited on every paid plan. FFmpeg minutes are still metered, and the allowance is account-wide: all your brands draw from one monthly pool, so a busy brand can borrow from a quieter one. The number of profiles is the cap to plan around. See Usage.
Discover Page & board IDs
Some platforms require an ID you need to look up before posting. Use these endpoints to retrieve those IDs for a given profile.Facebook Pages
If a profile has more than one connected Facebook Page, passfacebook_page_id in your post request to choose which Page to publish to. List the available Pages with:
id, name, and picture (avatar URL, may be null). Pass the chosen id as facebook_page_id when posting. If the profile has exactly one Page it is selected automatically — this endpoint is only needed when there are several. Returns 400 if profile_id is missing, 404 if the profile is not yours.
Pinterest boards
Pinterest requires a board ID on every pin. List the boards available to a profile with:id and name. Pass the chosen id as pinterest_board_id when posting — this field is always required for Pinterest. Returns 400 if profile_id is missing, 404 if the profile is not yours.
Check which platforms are connected
To see which social platforms a profile currently has linked, call:connected lists the platform slugs currently linked to the profile, and accounts carries the
connected account name/handle per platform. Omit profile_id to get the status of every profile on
your account. This is the on-demand way to check state; to be notified the moment a connection
changes, subscribe to the connection.connected / connection.disconnected
webhooks.
When to use multiple profiles
- Agencies — one profile per client.
- Multi-brand teams — one profile per brand.
- Environments — separate profiles for test vs production audiences.

