# Recycling Posts

Automatically re-share a post on a regular cadence. Recycling is ideal for evergreen content, reminders, and promotional campaigns.

### Endpoint

```bash
POST /api/v1/posts/schedule
```

### Request Headers

<table><thead><tr><th width="207.5693359375">Header</th><th width="101.125732421875">Required</th><th>Description</th></tr></thead><tbody><tr><td>Authorization</td><td>Yes</td><td><code>Bearer-API YOUR_API_KEY</code></td></tr><tr><td>Publer-Workspace-Id</td><td>Yes</td><td>Your workspace identifier</td></tr><tr><td>Content-Type</td><td>Yes</td><td><code>application/json</code></td></tr><tr><td>Accept</td><td>No</td><td><code>application/json</code> (default)</td></tr></tbody></table>

### Request Body

Include a `recycling` object in your payload:

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "networks": {
          "facebook": {
            "type": "status",
            "text": "This content will be recycled multiple times."
          }
        },
        "accounts": [
          { "id": "66f509f7db2797026a37ba76" }
        ],
        "recycling": {
          "solo": true,
          "gap": 2,
          "gap_freq": "Week",
          "start_date": "2025-06-01",
          "expire_count": 3
        }
      }
    ]
  }
}
```

### Recycling Parameters

<table><thead><tr><th width="140.06024169921875">Field</th><th width="101.87750244140625">Type</th><th>Description</th></tr></thead><tbody><tr><td><code>solo</code></td><td>boolean</td><td><code>true</code> to recycle this post individually (not grouped)</td></tr><tr><td><code>gap</code></td><td>number</td><td>Interval between reposts (e.g., <code>2</code> for every 2 units)</td></tr><tr><td><code>gap_freq</code></td><td>string</td><td>Unit of interval: <code>Day</code>, <code>Week</code>, or <code>Month</code></td></tr><tr><td><code>start_date</code></td><td>string</td><td>ISO date when recycling begins (e.g., <code>YYYY-MM-DD</code>)</td></tr><tr><td><code>expire_count</code></td><td>number</td><td>Maximum number of reposts</td></tr><tr><td><code>expire_date</code></td><td>string</td><td>ISO date to stop recycling (alternative to <code>expire_count</code>)</td></tr></tbody></table>

### Examples

#### Basic Recycling

Recycle every 2 weeks, up to 3 times:

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "facebook": { "type": "status", "text": "Evergreen reminder!" }
      },
      "accounts": [{ "id": "66f509f7db2797026a37ba76" }],
      "recycling": {
        "gap": 2,
        "gap_freq": "Week",
        "expire_count": 3
      }
    }]
  }
}
```

#### Recycling with Expiration Date

Recycle monthly until end of year:

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [{
      "networks": {
        "default": { "type": "status", "text": "Monthly promotion reminder!" }
      },
      "accounts": [{ "id": "66f509f7db2797026a37ba76" }],
      "recycling": {
        "gap": 1,
        "gap_freq": "Month",
        "start_date": "2025-06-01",
        "expire_date": "2025-12-31"
      }
    }]
  }
}
```

### How It Works

1. Create a post with `recycling` settings.
2. Publer queues the post for reuse.
3. After each `gap` interval, the post is republished.
4. Recycling stops when `expire_count` or `expire_date` is reached.

### Platform Limitations

Due to API limitations and anti-spam policies, recycling has some platform-specific constraints:

<table data-header-hidden><thead><tr><th width="200.61279296875"></th><th width="181.296630859375"></th><th></th></tr></thead><tbody><tr><td>Platform</td><td>Recycling Support</td><td>Notes</td></tr><tr><td>Facebook</td><td>Full support</td><td>No special requirements</td></tr><tr><td>Instagram</td><td>Full support</td><td>No special requirements</td></tr><tr><td>LinkedIn</td><td>Full support</td><td>No special requirements</td></tr><tr><td>Twitter</td><td>Limited</td><td>Requires 10+ variations using Spintax Generator</td></tr><tr><td>Pinterest</td><td>Limited</td><td>Requires 10+ variations using Spintax Generator</td></tr><tr><td>Google Business Profile</td><td>Limited</td><td>Requires 10+ variations using Spintax Generator</td></tr><tr><td>YouTube</td><td>Not supported</td><td>API limitations</td></tr><tr><td>TikTok</td><td>Not supported</td><td>API limitations</td></tr><tr><td>WordPress</td><td>Not supported</td><td>API limitations</td></tr></tbody></table>

### Use Cases

* Promote evergreen blog posts or resources.
* Remind followers of ongoing events or offers.
* Keep your feed active with minimal manual effort.

### Best Practices

* Vary content slightly using Spintax to avoid spam filters.
* Choose sensible intervals—don’t recycle too frequently.
* Always set an expiration (`expire_count` or `expire_date`).
* Monitor engagement metrics to adjust recycling strategy.

### Recycling vs. Recurring

* **Recycling** fills open slots based on `gap` and `gap_freq`—ideal for evergreen content.
* **Recurring** publishes at exact times on a fixed repeat schedule (e.g., every Monday at 9 AM).

### Related Topics

* [Recurring Posts](/docs/posting/create-posts/publishing-methods/recurring-posts.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://publer.com/docs/posting/create-posts/publishing-methods/recycling-posts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
