> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypost.it/llms.txt
> Use this file to discover all available pages before exploring further.

# Repurpose

> Watch an Instagram or Facebook account and republish every new video to your other networks.

A repurpose watches one [social account](/knowledge-base/social-accounts) for new videos posted **outside** TryPost, downloads them, and republishes each one to the destinations you pick. Use it when you publish a Reel on Instagram and want the same video on TikTok, YouTube Shorts, and the rest without pasting it by hand.

Only Instagram and Facebook can be a source — they are the only networks that let TryPost download the video. Destinations can be any connected account whose format accepts video.

You can also manage repurposes through the [REST API](/api-reference/endpoint/list-repurposes) and [MCP tools](/ai/tools-reference#repurpose).

## Who can manage repurposes

Owner, Admin, and Member can create, edit, activate, pause, resume, disable, and delete repurposes. Viewers do not see **Repurpose** in the sidebar. The sidebar item is labeled **Beta**.

See [Team & roles](/knowledge-base/team).

## Create a repurpose

<Steps>
  <Step title="Open Repurpose">
    In the sidebar, click **Repurpose**.
  </Step>

  <Step title="New repurpose">
    Click **New repurpose**.
  </Step>

  <Step title="Pick the source">
    Choose the Instagram or Facebook account TryPost should watch. Connect one first if the list is empty.
  </Step>

  <Step title="Configure and activate">
    On the next screen, pick the format to watch, the destinations, and whether each new video should publish automatically or land as a draft. Then click **Activate**.
  </Step>
</Steps>

A new repurpose starts as a **draft**. Nothing is replicated until you activate it. Only videos published **after** activation are picked up.

The create dialog only picks the source. Format, destinations, and publish mode are on the next screen (defaults: watch Reels, publish automatically, no destinations).

<Note>
  One source account can feed several repurposes — one per format (Reels, Videos, Stories). The same account plus the same format cannot feed two rows in one workspace.

  In the dashboard, creating a second row for the same source with the default format (**Reels**) opens the existing one. The [API](/api-reference/endpoint/create-repurpose) and [MCP](/ai/tools-reference#repurpose) return `422` instead.
</Note>

## Source

|              |                                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------------------- |
| **Networks** | [Instagram](/platforms/instagram) (Standalone or Facebook Business) and [Facebook](/platforms/facebook) Pages |
| **Formats**  | `reel`, `video`, `story`                                                                                      |
| **Health**   | The source must stay **connected** and switched **on**. A dead source pauses the flow                         |

TryPost cannot watch TikTok, YouTube, LinkedIn, or any other network as a source — those APIs do not give us a downloadable file.

## Destinations

Each destination is a connected account plus the format it should publish as. A Story on Instagram can land as a Reel on TikTok or a Short on YouTube — the source format and the destination format do not have to match.

The destination's `content_type` must accept video. A Pinterest pin (image) is rejected.

Required per-platform settings (TikTok `privacy_level`, Pinterest `board_id`, Discord `channel_id`, …) are the same keys as on a regular post. You can save a draft without them; **Activate** and **Resume** refuse until every usable destination has what it needs to publish. See [per-platform meta](/api-reference/endpoint/update-post#per-platform-meta).

Captions are copied from the original. TryPost only rewrites a caption when it exceeds that network's limit (AI shortener when available, otherwise a hard trim).

A destination you switch **off** stays in the list and is skipped for that item — the flow keeps running. A destination you **delete** is removed from the list; if it was the last one, the flow pauses (`paused_reason` `no_destinations`). An **active** row cannot drop its last usable destination on save.

The source account cannot also be a destination on the same repurpose.

## Publishing mode

| Mode                                  | What happens when a new video is found                      |
| ------------------------------------- | ----------------------------------------------------------- |
| **Publish automatically** (`publish`) | TryPost creates the posts and schedules them immediately    |
| **Create as draft** (`draft`)         | The posts land in your calendar as drafts for you to review |

## Status

| Status       | Meaning                                                                                            |
| ------------ | -------------------------------------------------------------------------------------------------- |
| **Draft**    | Configured, not watching yet                                                                       |
| **Active**   | TryPost checks the source regularly and replicates new videos                                      |
| **Paused**   | Checks are on hold. Resume continues from where it stopped                                         |
| **Disabled** | Turned off. Activating again starts fresh — whatever you posted while it was off is not backfilled |

### Pause vs disable

**Pause** keeps the watermark. Videos published while it is paused are still picked up after **Resume**.

**Disable** clears the watermark. The next **Activate** only watches from that moment on.

A user pause (you clicked **Pause**) resumes from the same place. A system pause (the source died, or every destination disappeared) stamps a new watermark on resume, so the backlog from the outage is not replayed.

### Changing the source

Editing the source account or the watched format on an already-activated row resets the watermark. Only videos published after that change are replicated.

## How polling works

On Cloud, and on a self-hosted install with the [scheduler](/self-hosting/production#scheduled-tasks-cron) running:

1. `repurpose:poll` runs every five minutes and queues a check for every **active** source that is due
2. Each source is polled about every **15 minutes** (`REPURPOSE_POLL_INTERVAL_MINUTES`)
3. A rate-limit from Instagram or Facebook backs the next check off to **60 minutes** (`REPURPOSE_BACKOFF_MINUTES`)
4. New videos after the watermark become activity items; each one is downloaded and turned into posts

Videos you already published **through TryPost** are listed as skipped. They are never cloned back onto the other networks.

## Activity

Open a repurpose and switch to **Activity** to see every source video TryPost has seen.

| In the app | API `status` | Meaning                                             |
| ---------- | ------------ | --------------------------------------------------- |
| Queued     | `pending`    | Waiting to download                                 |
| Processing | `processing` | Download or post creation in progress               |
| Replicated | `published`  | Destinations created and scheduled (`publish` mode) |
| Drafted    | `drafted`    | Destinations created as drafts (`draft` mode)       |
| Skipped    | `skipped`    | Intentionally not replicated — see the reason       |
| Failed     | `failed`     | Download or post creation failed — see the reason   |

| In the app                                    | API `reason`             | What it means                                                 |
| --------------------------------------------- | ------------------------ | ------------------------------------------------------------- |
| Already published through TryPost             | `published_via_trypost`  | The original was posted from this workspace. It is not cloned |
| The network did not share a downloadable file | `media_url_missing`      | Usually copyrighted audio on the original                     |
| The video could not be downloaded             | `download_failed`        | Transient download failure after retries                      |
| Could not create the posts                    | `post_creation_failed`   | Post creation failed                                          |
| No destination was available                  | `no_usable_destinations` | Every destination was missing or switched off                 |

Deleting a repurpose stops checks immediately. Posts it already created stay in the [calendar](/knowledge-base/posts#the-calendar).

## Account health

Source and destination are treated differently on purpose.

A **dead source** (disconnected, token expired, or switched off) pauses an active flow with `paused_reason` `source_unavailable`. When that account is connected and switched on again, TryPost **resumes it for you** — you do not click Resume. A user pause (`paused_reason` is `null`) is never auto-resumed.

If the source account is **deleted**, the flow pauses with `source_removed` and the source field is cleared. Pick a new source, then **Resume**. That is not auto-resumed.

A **dead destination** does not stop the flow:

* Switched off — skipped at job time; the others still get the video
* Disconnected but still listed — a post is still created so you can retry after reconnecting
* Deleted — removed from the destination list; if none remain, the flow pauses (`no_destinations`)

The list shows an amber warning when a system pause is in effect. Open the row to see why. When the cause is fixed and the flow did not auto-resume, the banner says it is ready — click **Resume**.

No email is sent when a repurpose pauses. You already get account-level mail when a connection dies.

## REST and MCP

| Task            | REST                                                                                                                                                                                                                       | MCP                                              |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| List formats    | [`GET /repurpose-source-formats`](/api-reference/endpoint/list-repurpose-source-formats)                                                                                                                                   | `list-repurpose-source-formats-tool`             |
| List / get      | [`GET /repurposes`](/api-reference/endpoint/list-repurposes), [`GET /repurposes/{id}`](/api-reference/endpoint/get-repurpose)                                                                                              | `list-repurposes-tool`, `get-repurpose-tool`     |
| Create / update | [`POST /repurposes`](/api-reference/endpoint/create-repurpose), [`PUT /repurposes/{id}`](/api-reference/endpoint/update-repurpose)                                                                                         | `create-repurpose-tool`, `update-repurpose-tool` |
| Activity        | [`GET /repurposes/{id}/items`](/api-reference/endpoint/list-repurpose-items)                                                                                                                                               | `list-repurpose-items-tool`                      |
| Lifecycle       | [`activate`](/api-reference/endpoint/activate-repurpose), [`pause`](/api-reference/endpoint/pause-repurpose), [`resume`](/api-reference/endpoint/resume-repurpose), [`disable`](/api-reference/endpoint/disable-repurpose) | matching `*-repurpose-tool`                      |
| Delete          | [`DELETE /repurposes/{id}`](/api-reference/endpoint/delete-repurpose) (`204`)                                                                                                                                              | `delete-repurpose-tool` (`{ deleted: true }`)    |

MCP lists return `{ repurposes \| items, total, per_page, current_page, last_page }` instead of the Laravel `data` / `links` / `meta` envelope. `list-repurpose-source-formats-tool` returns `{ source_formats: [...] }`.

## Webhooks

Replicated posts are ordinary [posts](/knowledge-base/posts). They fire the same [webhook](/knowledge-base/webhooks) events (`post.created`, then `post.scheduled` in publish mode, then the publish outcome). `created_via` is `repurpose`.

## Self-hosting

Repurpose needs Horizon (or another queue worker) **and** the scheduler. `repurpose:poll` is already on the default schedule (every five minutes). Tune how often each source is checked:

```env theme={null}
REPURPOSE_POLL_INTERVAL_MINUTES=15
REPURPOSE_BACKOFF_MINUTES=60
```

See [Configuration](/self-hosting/configuration#repurpose) and [Scheduled tasks](/self-hosting/production#scheduled-tasks-cron).

## FAQ

<AccordionGroup>
  <Accordion title="Why can't I watch TikTok or YouTube?">
    TryPost has to download the original video. Instagram and Facebook expose a file URL; the other networks do not. Those accounts can still be **destinations**.
  </Accordion>

  <Accordion title="Will it copy old videos?">
    No. Activation stamps a watermark. Only videos published after that moment are replicated. Disable-then-activate does the same — the gap stays empty.
  </Accordion>

  <Accordion title="What if I already posted the same video through TryPost?">
    It is skipped (`published_via_trypost`). The activity row still appears so you can see why nothing new showed up.
  </Accordion>

  <Accordion title="A destination is switched off. Does the whole flow stop?">
    No. That account is skipped for each new item. The others still receive the video. Activate and Resume only need **one** usable destination. Deleting the last destination does pause the flow.
  </Accordion>

  <Accordion title="I reconnected the source. Do I have to click Resume?">
    Not if TryPost paused it because the source died (`source_unavailable`). Reconnect (or switch the account back on) and the flow resumes by itself. A pause you started, or a deleted source (`source_removed`), still needs **Resume**.
  </Accordion>

  <Accordion title="The original used copyrighted audio and nothing arrived">
    Instagram often withholds the download URL in that case. The activity row says the network did not share a downloadable file.
  </Accordion>
</AccordionGroup>
