Uplonic Logo
Back to guidesPublishing & scheduling

Recurring Social Media Posts: Schedule Setup in 2026

Create a recurring video-selection rule, set its time zone, verify the next run and pause it through the Uplonic API. Includes tested validation failures and the limits of the setup check.

On this page

Recurring social media posts need a rule that chooses eligible content at each scheduled time. In Uplonic, an upload schedule selects a video from a folder or a list of library video IDs. This guide uses the API to create a paused rule, inspect its next run, change its time zone and control activation. Saving the rule does not prove that a social network has received a post.

If the same source video will go to several networks, start with the guide to adapting one video for Shorts, TikTok and Reels. A recurring schedule cannot make an unsuitable video acceptable to another platform.

What you will achieve and what you need

The result is a saved, inspectable recurring rule that you can pause or activate. You need a workspace API key with write access, the API base URL, library video IDs belonging to that workspace and a connected destination channel. Keep the key on your server or in a trusted API client.

The examples below are JSON request bodies. Replace VIDEO_ID and CHANNEL_ID with your workspace's identifiers, and send the API key in the x-api-key header. The demonstrated source mode is keys, meaning an explicit video list. Folder selection is a separate supported mode and is not the path tested here.

Test scope: On 2026-10-17 we exercised the actual schedules router and API-key middleware over HTTP in a dedicated development workspace. Creation, listing, time-zone changes, activation, pausing, deletion and invalid-input responses were checked. The demo did not upload a video to a social network or test dashboard clicks.

Create the rule in a paused state

Send POST /schedules with this body. The weekly expression means Monday at 18:00 in the named time zone; that is example configuration, not a recommendation about audience activity. Cron syntax is defined by node-cron's documentation, checked 2026-10-17.

{
  "name": "Weekly archive",
  "sourceMode": "keys",
  "videoIds": ["VIDEO_ID"],
  "platforms": ["youtube"],
  "channels": ["CHANNEL_ID"],
  "cronExpression": "0 18 * * 1",
  "timezone": "Europe/Budapest",
  "excludeRecentDays": 30,
  "isActive": false
}

The development test returned HTTP 201 with a rule ID, isActive: false and a nonempty nextRunAt. Store the returned rule ID. The repeat-exclusion value of 30 days is our tested example setting, not a platform limit; set it for your own pool of reusable content. A pool that is exhausted by that exclusion window can produce a skipped run.

Check the time zone and next run

Request GET /schedules and find the returned ID. Confirm the source IDs, channel IDs, cron expression, timezone and nextRunAt. Interpret the timestamp in the selected time zone before enabling the rule. The posting schedule generator can help draft a calendar, but its output does not create or activate this rule.

To change the zone, send PUT /schedules/RULE_ID with {"timezone":"UTC"}. In our dev check, the API recalculated nextRunAt. Changing the zone changes the meaning of the same wall-clock expression; it is not just a display preference.

We also checked the installed cron parser with a daily 18:00 rule in Europe/Budapest. The next instants were 2026-10-24T16:00:00.000Z and 2026-10-25T17:00:00.000Z: the local hour stayed the same while its UTC equivalent changed. These are measured preview results from 2026-10-17, not observations of production delivery. The cron-parser project documents its time-zone and daylight-saving support.

Activate, pause and verify the result

After checking the source and destination, update the rule with {"isActive":true} at PUT /schedules/RULE_ID. Pause it with {"isActive":false} through the same endpoint. Our activation test used an annual expression whose next run was safely in the future, then paused and deleted the rule. That tested registration and removal of the scheduled task without initiating publication.

Keep the distinction between the rule and its work: a rule's last-run success can mean it created a publishing request. Inspect that request's destination results before calling the post published. Pausing a rule prevents future selections; it should not be treated as cancellation of publishing requests already created by earlier runs.

The implementation registers future cron executions when rules load; it does not implement a historical replay loop for every missed recurring tick. Do not assume an outage will automatically produce all missed posts. Review existing requests before manually triggering anything. These implementation observations were checked in the scheduler source on 2026-10-17.

If the setup does not work

Symptom

Check

Next action

HTTP 400 for a time zone

Our invalid-zone test used Mars/Olympus.

Use a valid IANA name such as Europe/Budapest and resubmit.

HTTP 400 for the expression

Our malformed-expression test was rejected before rule creation.

Correct the cron expression and keep the rule paused for inspection.

The rule is saved but nothing has published

Check isActive, nextRunAt and the publishing requests separately.

A saved rule is setup evidence. Validate the source media, channel connection and eventual request outcome.

A run is skipped

Inspect the recorded reason and whether eligible source videos remain.

Review the source pool and repeat-exclusion setting before forcing another selection.

Before activating a real campaign, inspect your source files with the video specification checker and confirm the destination connection. The tested setup above establishes rule management; a live publishing check remains your separate acceptance step.

Sources & methodology

Checked 2026-10-17. Product behavior comes from the schedules route and scheduler implementation, plus an HTTP test against media_api_dev in a dedicated demo workspace. Test records were removed. No live platform delivery or dashboard workflow was claimed; cron preview output was measured with the installed dependency.

ShareXLinkedInFacebook

Get the next guide by email

Creator guides, earnings data and the platform changes that affect your reach. Two emails a month at most, unsubscribe anytime.

Your videos everywhere automatically.

Connect your channels, plan with an AI copilot, automate via Claude or Codex, and track publishing from one unified dashboard.

Start for free

TikTok
TikTok scheduled6:00 PM · TikTok
Instagram
Instagram uploaded3 uploads today
Facebook
Schedule activeNext upload: 6:00 PM · TikTok
Hand holding a smartphone with the Uplonic dashboard
Uplonic app on mobile phone showing video scheduling interface