Connect Upload-Post to Fondoo

cloud_uploadLive6 min readUpdated

Upload-Post is the service Fondoo uses by default to post to your social accounts. Fondoo already has the Upload-Post account, so you don't sign up or copy an API key. You link each social account you want to use, and then your AI agent can draft, schedule and publish posts. Every post still goes through your approval rules.

What Fondoo can do with it

  • Link your accounts. connect_social creates a "social set" for your business. A set is one Upload-Post profile that holds up to one account per network. It returns a secure linking page where you sign in to each network.
  • Draft posts. draft_social_posts writes one AI caption per account from an idea, a page on your site or release notes. save_social_draft saves text you wrote yourself, with no AI. Drafts never publish on their own.
  • Schedule and approve. schedule_social_posts picks a time slot inside your posting windows and asks for approval. approve_social_posts confirms the exact saved posts.
  • Publish. Fondoo's background publisher (publish_due_social_posts, internal only) sends approved posts when they are due. It checks the result and retries with backoff, up to 5 attempts. If a post fails it raises an alert and does not resend blindly.
  • Use real media. register_social_media stores a real screenshot or video (PNG, JPEG, WebP, MP4 or WebM, up to 20 MiB). Fondoo never generates images.
  • Track results. get_social_calendar shows drafts and scheduled posts. An hourly worker (sync_social_stats, internal only) saves post metrics, and you read them with get_social_stats. Metrics a network doesn't provide stay empty. They are never set to zero.
  • Cancel. cancel_post cancels a post that hasn't gone out yet. Upload-Post can't delete a post that is already live, so remove it on the network itself.

What needs your approval: posts on networks set to review (the default) or manual, and all Reddit and Lemmy posts. Agent batches over 20 posts per day also need it, and so does cancel_post. Only the workspace owner can link manual-credential platforms (configure_upload_post_platform) or change posting rules (update_distribution_rules). Only a signed-in human owner can switch on automatic publishing.

Upload-Post doesn't support threads (multi-part posts). X posts sent through Upload-Post can't contain links. For links on X, see x.md.

Before you start

  • A Fondoo workspace and a site. Each social set counts against your plan's social-set allowance. Builder and Launch include 1, Growth 3 and Agency 10, and you can buy extra sets. This may differ for your account.
  • Owner access to each social account you want to link. For example: an Instagram Business or Creator account, a Facebook Page you manage, or admin rights on a LinkedIn company page.
  • No Upload-Post account or payment. Fondoo pays for Upload-Post.
  • Upload-Post is not available on self-hosted Fondoo. Self-hosters should use Postiz.

Step by step: authorize your accounts

  1. Ask your agent to run connect_social for your site (see below). You get back a connectionId and a url.
  2. Open the url. It is Upload-Post's hosted linking page, headed "Connect ". Upload-Post says the link is valid for 48 hours (user profiles, integration guide). If it expires, run connect_social again for a fresh one.
  3. Click each network you want and sign in on that network's own consent screen. Grant the publishing permissions it asks for. Some networks then ask you to choose a destination, such as a Facebook Page or a YouTube channel. The per-network guides list what each consent screen asks for (for example instagram.md, tiktok.md and linkedin.md).
  4. When you're done, Upload-Post sends you to the redirectUrl you gave.
  5. Ask your agent to run refresh_social_accounts with the connectionId. Fondoo stores only the account name and ID, never your network passwords or tokens.

Platforms that use credentials instead of a sign-in

Some networks have no sign-in page. For these, the owner runs configure_upload_post_platform with connectionId, network and a credential object, then runs refresh_social_accounts. Fondoo sends the values straight to Upload-Post and never returns them. Every network also accepts an optional name.

NetworkRequired credential fieldsWhere to get them
discordwebhook_urlServer Settings → Integrations → Webhooks
telegrambot_token, chat_idCreate a bot with BotFather and make it an admin of your channel
slackwebhook_urlA Slack app with Incoming Webhooks turned on
mastodoninstance_url, access_tokenAn application you create on your instance
nostrprivate_key (optional relays)A dedicated signing key
lemmyinstance_url, username, password, communityYour Lemmy account
devtoapi_keyDEV Settings → Extensions
hashnodepat, publication_idHashnode personal access token
wordpresssite_url, username, application_passwordUsers → Profile → Application Passwords
whopapi_key, experience_idA key with forum:post:create
listmonkinstance_url, username, password, list_idYour listmonk instance

Upload-Post checks Discord webhooks and Telegram bots before saving them. For Telegram, the bot must be an admin of the chat (user profiles). Field names for the other networks come from Fondoo's code. See each network's guide for details.

Connect it in Fondoo

To get the setup steps as a link, your agent can call connect_service({provider:"upload_post", siteId}) (REST: POST /v1/ops/connect_service). It returns a signed link, valid for 15 minutes, plus a QR code and these setup steps. That link only shows instructions. The page where you link your networks comes from connect_social, below.

(a) Dashboard. Open Connections. While your site has no social set, the Available card lists Social and ten networks (LinkedIn, Instagram, Facebook, X, TikTok, YouTube, Reddit, Bluesky, Pinterest, Threads). Upload-Post is not listed by name. Connect followed by the network name shows Continue connecting with a Connect securely button that opens the setup steps. The linking itself is done with connect_social, so the agent route below is the main way. Linked accounts then appear in the Connected card with a Reconnect button.

(b) Ask your agent. Example prompt:

"Connect my social accounts for site YOUR-SITE-ID using Upload-Post, set 1. Send me back to https://example.com/connected afterwards. Then refresh the accounts and show me what's linked."

The agent calls:

connect_social({ siteId, provider: "upload_post", network: "linkedin", set: 1,
                 redirectUrl: "https://example.com/connected", logoUrl? })
refresh_social_accounts({ siteId, connectionId })
list_social_accounts({ siteId })

network is required by the schema, but the Upload-Post page offers every network. set picks the social set (1 to 100). connect_social doesn't accept an idempotencyKey. Before the first post, the owner turns on each network in the posting rules with update_distribution_rules. Networks stay off until they're listed there.

REST equivalent: POST https://api.getfondoo.com/v1/ops/connect_social with header Authorization: Bearer <Fondoo API key> and the same JSON body. Every operation above works the same way at /v1/ops/<operation>.

Test that it works

  1. Run list_social_accounts({siteId}). Each linked network should appear under accounts, with your connection listed as upload_post.
  2. Run get_connection_health({siteId}). It asks Upload-Post for the set's accounts and reports the status.
  3. Run schedule_social_posts with "dryRun": true and a short text post to check limits and rules without saving anything.
  4. Schedule one real post, approve it, and look for it in get_social_calendar and then on the network.

Troubleshooting

  • "Upload-Post profile limit reached". Fondoo's Upload-Post plan has no free profiles. Reuse an existing set, or contact Fondoo support.
  • "Social account set allowance reached" (RATE_LIMITED). You asked for a set number above your plan's allowance. Use set 1 or buy an extra set.
  • An account disappears after refresh. Upload-Post marked it as needing re-authorization. Open a fresh connect_social link, sign in to that network again, and refresh.
  • "A social set supports one account per network". Two accounts on the same network are linked to one set. Unlink one on the linking page, or put it in a second set.
  • "Enable NETWORK in distribution rules first". The owner needs to add that network with update_distribution_rules.
  • Reddit posts never publish. Upload-Post currently returns reddit_unavailable. Reddit stays draft-only, see reddit.md.

Limits, data and security

  • Fondoo checks Upload-Post's daily caps and image limits before sending, using a snapshot of Upload-Post's docs from 2026-10-21. Posts per day: Instagram 50, TikTok 15, Facebook 25, LinkedIn 150, YouTube 10, Threads 50, Pinterest 20, X 10. Upload-Post counts these per connected account over a rolling 24 hours (limit of uploads, pricing and limits). Upload-Post's X cap depends on its plan, so these numbers may differ for your account. Your own posting rules (default: 1 post a day per account, 09:00 to 17:00 UTC) usually apply first. Check what's left with get_publishing_capacity.
  • What Fondoo stores: your connection ID, the set's profile name (your business ID plus the set number), account names and IDs, your posts and their metrics. Manual-platform credentials are sent to Upload-Post and not kept by Fondoo. Upload-Post holds the network tokens.
  • Rotate: run configure_upload_post_platform again with new values, then refresh_social_accounts. For sign-in networks, reconnect through a new connect_social link.
  • Disconnect: remove the account on the Upload-Post linking page, or revoke the app in that network's own security settings. Then run refresh_social_accounts so Fondoo marks it inactive.