Recurring Posts
List, read, pause, resume and delete the recurring posts you created with recurrence on Create Post in the AdaptlyPost REST API.
https://post.adaptlypost.com/post/api/v1/recurring-postsReturns a paginated list of the workspace's recurring posts. A recurring post is a series you create by sending recurrence to Create Post.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
limit | number | Number of recurring posts to return (1-100, default: 20) |
offset | number | Number of recurring posts to skip (default: 0) |
statuses | RecurringPostStatus[] | Filter by ACTIVE, PAUSED or ENDED. Repeat the key per value: statuses=ACTIVE&statuses=PAUSED |
Only the Next Post Exists
An active series keeps one scheduled post, the next one. AdaptlyPost creates it about 24 hours ahead, and it shows up in List Posts with recurringPostId set. Deleting that post with Delete Post skips that date, and the series continues.Recurring Post Fields
| Field | Description |
|---|---|
id | Recurring post ID. Use it with the endpoints below |
userId | The member who created the series |
status | ACTIVE creates posts. PAUSED creates none until you resume it. ENDED reached endsOn or maxOccurrences |
pauseReason | Why the series paused. Set only when status is PAUSED. See the table below |
lastError | The error that paused the series, when a failure caused it |
frequency | DAILY, WEEKLY or MONTHLY |
interval | Repeats every N days, weeks or months |
weekdays | The weekdays a WEEKLY series posts on |
startsAt | Date and time of the first post. It sets the time of day for every post |
timezone | IANA timezone the series follows |
endsOn | Last day a post may go out on. Left out when the series has no end date |
maxOccurrences | Total number of posts the series publishes. Left out when there is no limit |
nextOccurrenceAt | The next date that does not exist as a post yet. Left out once the series has ended |
occurrenceCount | Posts the series has created so far |
contentType | The content every post of the series uses, as sent to Create Post |
text | The content every post of the series uses, as sent to Create Post |
mediaUrls | The content every post of the series uses, as sent to Create Post |
mediaAltTexts | The content every post of the series uses, as sent to Create Post |
thumbnailUrl | The content every post of the series uses, as sent to Create Post |
platformTypes | The platforms the series posts to |
platforms | The accounts the series posts to, one entry per account. Their status is always PENDING |
Pause Reasons
A series can pause itself. Fix the cause, then resume it. It continues from the next date after now.
| Reason | Description |
|---|---|
USER | Someone paused it through the API or the app |
CONSECUTIVE_FAILURES | 3 posts in a row failed |
SUBSCRIPTION_INACTIVE | The workspace subscription is no longer active |
ACCESS_LOST | The member who created it lost access to the workspace |
CONNECTION_REMOVED | Someone disconnected one of its accounts |
INVALID_CONTENT | A platform rejected the content |
Manage a Recurring Post
https://post.adaptlypost.com/post/api/v1/recurring-posts/:idReturns one recurring post. An ID that does not exist or belongs to another workspace returns 404 "Recurring post not found".
https://post.adaptlypost.com/post/api/v1/recurring-posts/:id/pausePauses the series. It stops creating posts and deletes its upcoming scheduled post. Returns the recurring post.
The key also needs posts.schedule. A series another member created also needs posts.others.
https://post.adaptlypost.com/post/api/v1/recurring-posts/:id/resumeResumes a paused series from the next date after now. Dates missed while it was paused are not published. Returns the recurring post.
The key also needs posts.schedule. A series another member created also needs posts.others.
https://post.adaptlypost.com/post/api/v1/recurring-posts/:idDeletes the series and its upcoming scheduled post. Posts that already went out are kept. Returns { "deleted": true }.
The key also needs posts.delete. A series another member created also needs posts.others.
curl --request GET \
--url 'https://post.adaptlypost.com/post/api/v1/recurring-posts?limit=10&offset=0&statuses=ACTIVE&statuses=PAUSED' \
--header 'Authorization: Bearer <api-key>'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/recurring-posts/rp_abc123/pause \
--header 'Authorization: Bearer <api-key>'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/recurring-posts/rp_abc123/resume \
--header 'Authorization: Bearer <api-key>'curl --request DELETE \
--url https://post.adaptlypost.com/post/api/v1/recurring-posts/rp_abc123 \
--header 'Authorization: Bearer <api-key>'{
"recurringPosts": [
{
"id": "rp_abc123",
"userId": "user_123",
"status": "ACTIVE",
"frequency": "WEEKLY",
"interval": 1,
"weekdays": ["MONDAY", "THURSDAY"],
"startsAt": "2026-10-05T13:00:00.000Z",
"timezone": "America/New_York",
"maxOccurrences": 12,
"nextOccurrenceAt": "2026-10-19T13:00:00.000Z",
"occurrenceCount": 4,
"contentType": "TEXT",
"text": "{Hi|Hello} everyone, the weekly product tip is live!",
"mediaUrls": [],
"platformTypes": ["LINKEDIN"],
"platforms": [
{
"id": "rp_abc123-0",
"platform": "LINKEDIN",
"status": "PENDING"
}
],
"createdAt": "2026-10-01T09:30:00.000Z",
"updatedAt": "2026-10-14T13:00:00.000Z"
}
],
"total": 1,
"hasMore": false
}