Reddit Post Manager V1 — Edit,Delete,Save,Flair,Lock,NSFW avatar

Reddit Post Manager V1 — Edit,Delete,Save,Flair,Lock,NSFW

Pricing

$1.99 / 1,000 results

Go to Apify Store
Reddit Post Manager V1 — Edit,Delete,Save,Flair,Lock,NSFW

Reddit Post Manager V1 — Edit,Delete,Save,Flair,Lock,NSFW

Manage your own Reddit posts in one click — report, lock comments, mark NSFW or spoiler, hide, save, edit body text, set or clear flair, toggle reply notifications, or delete. Bring your Reddit Token V2 (token_v2 cookie) + matching proxy, or pick a saved account from the Reddit Vault.

Pricing

$1.99 / 1,000 results

Rating

0.0

(0)

Developer

Red Crawler

Red Crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Reddit Post Manager V1

Endpoints Auth Proxy Pricing

Manage your own Reddit posts in one click — 10 self-contained actions: edit body text, delete, save / unsave, set / clear flair, lock / unlock comments, mark / unmark NSFW, mark / unmark spoiler, hide / unhide, report, and toggle reply notifications. One run = one action = one dataset record.

Bring a Reddit Token V2 + matching proxy, or reuse a saved account from the Reddit Vault. Pick the action, paste the target post, hit Start.


What you can do

The Post field on every action accepts: full URL (https://www.reddit.com/r/sub/comments/1sys4r2/...), stripped ID (1sys4r2), or t3_ fullname (t3_1sys4r2).

You can only manage posts your account is allowed to manage:

  • Edit / delete / save / hide / send-replies — your own posts.
  • Lock / NSFW / spoiler / flair — your own posts in some communities, OR any post in a subreddit where your account is a moderator.
  • Report — any visible post.

All 10 actions (Reddit account required):

1. Edit post body — replace your self-post's text

Replaces the body markdown of your text post. Only self-posts (text posts) can be edited — link / image / video / gallery / poll posts cannot.

Input: post target (URL / ID / fullname) + new body text (markdown, up to 40,000 chars).

Returns: echoed action + post + truncated text + account name + error info (null on success) + bearer expiry + live per-account rate-limit counters.

Use it when: updating launch posts with new info (EDIT 2: shipped!), correcting typos at scale, refreshing weekly-thread bodies on a schedule, AMA host edits.

Example

Input

{
"operation": "edit",
"edit_post": "https://www.reddit.com/r/test/comments/1tc6ncq/",
"edit_text": "**EDIT 2026-05-14:** shipped — thanks for the feedback. Original body below.\n\nOriginal: which language should I learn next?",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "edit",
"post": "https://www.reddit.com/r/test/comments/1tc6ncq/",
"text": "**EDIT 2026-05-14:** shipped — thanks for the feedback. Original body below.",
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

2. Delete a post — permanent removal

Permanently deletes one of your own posts. Cannot be undone.

Input: post target.

Returns: echoed action + post + account name + error info + bearer expiry + rate-limit counters.

Use it when: taking down an outdated launch post, cleaning your history, removing a duplicate after a misfire.

Example

Input

{
"operation": "delete",
"delete_post": "t3_1tc6ncq",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "delete",
"post": "t3_1tc6ncq",
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

3. Save / unsave — toggle a post in your Saved tab

Adds or removes a post from your account's Saved tab.

Input: post target + state (true = save, false = unsave).

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: bookmarking content for later, building a "read later" pipeline, removing items from saved in bulk.

Example

Input

{
"operation": "save",
"save_post": "https://www.reddit.com/r/Wordpress/comments/1s4a4j6/",
"save_state": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "save",
"post": "https://www.reddit.com/r/Wordpress/comments/1s4a4j6/",
"state": true,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

4. Set / clear flair — apply or remove a post flair

Adds, edits, or removes the flair on a post.

Input: post target + subreddit name + flair action (add / edit / remove) + Flair ID (required for add / edit) + optional flair text.

Returns: echoed action + post + subreddit + action + flair fields + account name + error info + rate-limit counters.

Use it when: post-publish flair enforcement, weekly thread flair rotation, bulk re-flair after a subreddit's flair template overhaul.

Flair IDs come from the subreddit's available flair templates. Fetch them once and reuse — they're stable IDs.

Example

Input

{
"operation": "flair",
"flair_post": "t3_1s4a4j6",
"flair_subreddit": "Wordpress",
"flair_action": "add",
"flair_id": "0269a28a-4553-11f0-8a14-8246a3a6560d",
"flair_text": "Discussion",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "flair",
"post": "t3_1s4a4j6",
"subreddit": "Wordpress",
"action": "add",
"flair_id": "0269a28a-4553-11f0-8a14-8246a3a6560d",
"flair_text": "Discussion",
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

5. Lock / unlock comments — close or re-open the comment thread

Locks a post (no new comments accepted) or unlocks it. Only works on your own posts in some communities, or any post where your account is a mod.

Input: post target + state (true = lock, false = unlock).

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: stopping comment pile-ons after a controversy, closing time-bounded AMA threads, mod automation for stale megathreads.

Example

Input

{
"operation": "lock",
"lock_post": "t3_1tc6ncq",
"lock_state": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "lock",
"post": "t3_1tc6ncq",
"state": true,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

6. Mark / unmark NSFW — toggle the NSFW flag

Marks a post as Not Safe For Work, or removes the NSFW flag.

Input: post target + state.

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: post-classification NSFW tagging, compliance sweeps, mod automation.

Example

Input

{
"operation": "nsfw",
"nsfw_post": "t3_1tc6ncq",
"nsfw_state": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "nsfw",
"post": "t3_1tc6ncq",
"state": true,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

7. Mark / unmark spoiler — toggle the spoiler flag

Marks a post as a spoiler, or clears the spoiler flag.

Input: post target + state.

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: episodic-content subreddits, theatrical-release subs, hiding plot details on book / TV / game discussion posts.

Example

Input

{
"operation": "spoiler",
"spoiler_post": "t3_1tc6ncq",
"spoiler_state": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "spoiler",
"post": "t3_1tc6ncq",
"state": true,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

8. Hide / unhide — remove from your feeds

Hides a post from your home / subreddit feeds (still exists on Reddit), or shows it again.

Input: post target + state (true = hide, false = unhide).

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: programmatic feed cleanup, hiding suggested promoted content in bulk, decluttering your home feed.

Example

Input

{
"operation": "hide",
"hide_post": "t3_1tc6ncq",
"hide_state": true,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "hide",
"post": "t3_1tc6ncq",
"state": true,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

9. Report a post — flag for moderation

Reports a post for a site-wide rule violation.

Input: post target + reason (free text or rule key like spam, harassment, dis_misinformation, violent_content, targeted_harassment).

Returns: echoed action + post + reason + account name + error info + rate-limit counters.

Use it when: flagging spam / harassment in bulk, automated mod-queue tooling for communities you mod, anti-abuse pipelines.

Example

Input

{
"operation": "report",
"report_post": "t3_1tc6ncq",
"report_reason": "spam",
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "report",
"post": "t3_1tc6ncq",
"reason": "spam",
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

10. Toggle reply notifications — silence or unsilence replies on your post

Toggles whether your inbox is notified when someone replies to your post.

Input: post target + state (true = receive notifications, false = silence).

Returns: echoed action + post + state + account name + error info + rate-limit counters.

Use it when: silencing noisy launch posts that are flooding your inbox, re-enabling notifications on stale posts you want to monitor again.

Example

Input

{
"operation": "sendreplies",
"sendreplies_post": "t3_1tc6ncq",
"sendreplies_state": false,
"credentialSource": "vault",
"accountName": "motor_tip8865"
}

Output (one dataset record)

{
"success": true,
"operation": "sendreplies",
"post": "t3_1tc6ncq",
"state": false,
"account_name": "motor_tip8865",
"error": null,
"bearer_expires_at": "2026-05-15T11:42:18+00:00",
"rate_limit": 100,
"rate_used": 1,
"rate_remaining": 99,
"rate_reset_in_seconds": 599
}

Credentials

All 10 actions sign in as your Reddit account. Save it once in Reddit Vault and reuse the name forever, or paste a Token V2 + matching proxy inline for one-off runs.

Credential lifetimes

CredentialLifetimeWhen to refresh
Token V2 (token_v2 cookie)~24 hoursDaily — or save a Reddit Session in the vault and let it auto-refresh
Reddit Session (reddit_session cookie)~180 daysRoughly twice a year, or when a run reports unauthorized

How to extract these from your browser: open Reddit in Chrome / Brave / Edge / Firefox, then DevTools → Application → Cookies → https://www.reddit.com. Filter by token_v2 or reddit_session and copy the Value column.

Token V2 cookie in DevTools

Reddit Session cookie in DevTools

  1. Run the Reddit Vault actor once with mode STORE, an account name (e.g. motor_tip8865), your Token V2 (or Reddit Session for auto-refresh), and the matching proxy.
  2. In this actor, set Credential source = Use saved account (vault) and Saved account name = motor_tip8865.
  3. Token V2 + proxy are pulled from the vault on every run. If you saved a Reddit Session, the Token V2 auto-refreshes whenever it expires.

Option B — Paste Token V2 + proxy inline

  1. Set Credential source = Paste Token V2 + proxy.
  2. Paste the eyJ… Token V2 cookie value (encrypted by Apify at rest).
  3. Paste the Proxy as ip:port:user:pass — must be the same IP that minted the Token V2 (Reddit IP-binds these cookies).

How to run

  1. Action → pick one of the 10 actions from the dropdown.
  2. Fill the matching section (only the chosen action's section matters — the rest are ignored).
  3. Pick a Credential source and fill the matching vault or manual fields.
  4. Hit Start. One run = one action = one row in the dataset.

Output

Every run pushes exactly one record to the run's default dataset. Success and failure both produce a row — the success field distinguishes them.

Front-loaded columnMeaning
successtrue if Reddit accepted the action, false otherwise
operationOne of edit / delete / save / flair / lock / nsfw / spoiler / hide / report / sendreplies
postThe post target you supplied (URL, ID, or fullname — passed through)
subredditSubreddit name (flair action only)
stateBoolean toggle echoed back (save / lock / nsfw / spoiler / hide / sendreplies)
actionFlair action echoed (add / edit / remove)
reason / text / flair_id / flair_textAction-specific echoes (truncated to 200 chars for body text)
account_nameVault account name (or "manual" for inline credentials)
errorHuman-readable message on failure, null on success
error_kindShort error code (UNAUTHORIZED, RATELIMIT, NOT_OWNER, NOT_MOD, NOT_FOUND, …), null on success
bearer_expires_atWhen the saved Token V2 expires (helps you spot upcoming refresh)
rate_limit / rate_used / rate_remaining / rate_reset_in_secondsLive per-account rate-limit counters from Reddit

Common edge cases

Edge caseCauseHow it surfaces
Bearer expiredSaved Token V2 past ~24 h, no vault session for auto-refreshRow with success: false, error_kind: UNAUTHORIZED. Re-save the account in Reddit Vault with a Reddit Session for auto-refresh.
Bearer minted on a different IPToken V2 minted on a different proxy than the one paired with itRow with success: false, error_kind: UNAUTHORIZED. Re-mint the Token V2 on the proxy you'll use, save them as a pair.
Not your post (edit / delete / sendreplies)The post belongs to a different accountRow with success: false, error_kind: NOT_OWNER.
Not a self-post (edit)You're trying to edit a link / image / video / poll postRow with success: false, error_kind: NOT_EDITABLE. Only text posts can be edited.
Not a mod (lock / nsfw / spoiler / flair)Your account isn't a mod of that subreddit AND it isn't your own postRow with success: false, error_kind: NOT_MOD.
Post not found / deletedPost ID is wrong, has been removed by Reddit, or never existedRow with success: false, error_kind: NOT_FOUND.
Reddit rate-limit hitPer-account write throttle reachedRow with success: false, error_kind: RATELIMIT. Wait — rate_remaining tells you how many calls are left in the current window.
Invalid flair IDFlair ID doesn't exist in the subreddit's flair templatesRow with success: false, error_kind: INVALID_FLAIR. Re-fetch flair templates and use a valid ID.
Missing required inputForgot to paste the post URL / new body text / flair IDRun FAILED immediately, no row pushed, no charge.

Why this actor is fast

  • Speed — 1–3 seconds per action, end-to-end. Pure HTTP to Reddit. No browser to boot, no Playwright / Selenium / Puppeteer overhead. Competing browser-based actors typically take 15–60 seconds per call.
  • Reliability — zero browser flakiness. No headless-Chromium crashes. No JS-render timeouts. No captcha pages.
  • Footprint — under 100 MB RAM per run. Most browser-based actors need 1–4 GB.
  • One actor for ten actions. No need to chain ten different actors — pick the action from a dropdown and go.

Status & error reference

Run status (Apify-side, shown on the run page)

StatusApify messageMeaningWhat to do
Succeeded"Actor succeeded with N results in the dataset"Run finished, one record pushed.Open the dataset to view the result.
Failed"The Actor process failed…"Validation error or missing required input.Check the run log. You are NOT charged for failed runs.
Timed out"The Actor timed out. You can resurrect it with a longer timeout to continue where you left off."Run exceeded timeout (rare — actions are fast).Re-run; check proxy is reachable.
Aborted"The Actor process was aborted. You can resurrect it to continue where you left off."You stopped the run manually.No charge for unpushed results.

Common in-run conditions (visible in run log and output record)

ConditionCauseResult
RATELIMIT from RedditPer-account write throttle hit.Run SUCCEEDED, failure row with error_kind: RATELIMIT.
Bearer expired / invalidSaved Token V2 past ~24 h, no vault session for auto-refresh.Run SUCCEEDED, failure row with error_kind: UNAUTHORIZED.
NOT_OWNER / NOT_MODYour account isn't authorized to manage that post.Run SUCCEEDED, failure row with the matching error_kind.
NOT_FOUNDPost ID is wrong, removed, or never existed.Run SUCCEEDED, failure row with error_kind: NOT_FOUND.
Validation error: missing post / body / flair IDRequired input not provided.Run FAILED immediately, no charge.

Pricing

Pay-per-result. You're only charged for records actually pushed to the dataset — failed runs, validation errors, and credential errors that never reach Reddit cost nothing.

EventTriggerPrice (per 1,000)
resultEach row pushed to the dataset (success or failure)$1.99

Every action — edit, delete, save, flair, lock, NSFW, spoiler, hide, report, sendreplies — is one row, one charge.


Need a different shape of data?

All of them accept the same accountName field, so saving credentials in Reddit Vault unlocks them all.


Support and feedback

Found a bug, want a feature, or hit a Reddit error code we don't translate clearly? Open an issue via the actor's Apify Console feedback link, or reach out at the RedCrawler support channel.


Reddit Post Manager V1 is part of the RedCrawler family of Reddit actors. RedCrawler is independent — not affiliated with, endorsed by, or sponsored by Reddit, Inc. Use it within Reddit's API terms.