Skip to content
reelspanDocs

After you post

Edit a post

Change the text of a post that is already live, and some settings such as a Pin's link or a WordPress status, on the networks that allow edits.

POSTapi.reelspan.com/v1/posts/editTry it →

Edit changes a post after it went live, where the network allows it. Most networks let you change only the text; a few take more. To change a post that hasn't gone out yet, edit the scheduled post instead.

Edit a post Reelspan published

Name the post by its request_id (and platform when it went to several networks) and send the new text:

curl -X POST https://api.reelspan.com/v1/posts/edit \
  -H "Authorization: Bearer $REELSPAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "request_id": "9b1f6c2e8a3d4f50b7e1c9a2d6f3e8b1",
    "platform": "linkedin",
    "text": "We are hiring two engineers in Lisbon. Details and the application form are in the comments."
  }'
{
  "success": true,
  "platform": "linkedin",
  "post_id": "urn:li:share:72…",
  "url": "https://www.linkedin.com/feed/update/urn:li:share:72…/"
}

message and commentary work as other names for text. For a post made outside Reelspan, name it with platform, user and the network's post_id instead, as on Unpublish.

What you can send

Field What it changes
text The post's text: its caption, message or commentary.
title A title, where the post has one: a Facebook video or Reel, a Pin, a WordPress post.
description A Pin's description, a Facebook video's description, or a WordPress post's body.
fields Network settings by their upload field name, as strings, for example {"pinterest_link": "https://example.com/new"}.

Send only what changes. A request that changes nothing the network can change gets 400 text_required.

Which networks, and what changes

Network What can change Quirks
Facebook A post's text. A Reel's or video's description (text or description) and title (title, up to 255 characters).
LinkedIn The commentary only (up to 3,000 characters). Media, visibility and the rest stay as they are.
X The text. Needs X Premium on the account; X allows edits within an hour of posting, up to five times. The edit is a new post with a new id (see below).
Pinterest title (100 characters), description or text (800), and in fields: pinterest_link, pinterest_alt_text (500), pinterest_board_id and pinterest_board_section_id to move the Pin. The image or video can't change.
Google Business The text (up to 1,500 characters), and the button with fields.google_business_cta_url and fields.google_business_cta (gbp_cta_url and gbp_cta_type work too).
Discord The text (2,000 characters; longer is cut, with a warning). Only messages the connected webhook sent. Attachments stay.
Telegram The text of a message, or the caption of a photo, video or album. Send fields.telegram_parse_mode again if the new text uses formatting. Longer text is cut to Telegram's limits.
Mastodon The text, and fields.mastodon_spoiler_text and fields.mastodon_sensitive. Attachments stay.
WordPress title, the body (text or description), and in fields: wordpress_excerpt and wordpress_status (publish, draft, private or pending). A new body replaces the text and keeps the images and video already in the post.

Instagram, TikTok, Threads, YouTube and Bluesky posts can't be edited through Reelspan, and Reddit posts aren't supported either. Asking gets 400 platform_not_supported, with the networks that work in supported_platforms.

X: an edit is a new post

X makes an edited post a new post that replaces the old one, so the id changes. The answer gives the new id as post_id, the old one as previous_post_id, and X's list of every version as edit_history_post_ids:

{
  "success": true,
  "platform": "x",
  "post_id": "1854123456789099999",
  "url": "https://x.com/mybrand/status/1854123456789099999",
  "previous_post_id": "1854123456789012345",
  "edit_history_post_ids": ["1854123456789012345", "1854123456789099999"]
}

For a post Reelspan published, the stored post follows the new id, so Post status and analytics use it from then on. Links are removed from the new text, as when posting, unless fields.x_keep_links is "true"; keeping them uses one of your plan's X link posts for the month, and when the allowance is used up they are removed anyway. See Links in X posts.

After an edit

For a post Reelspan published, the network's result in Post status carries edited_at and edits (how many times it was edited), and on X previous_post_ids. warnings in the answer lists anything changed on the way, such as text cut to fit.

Errors

Status error_code Why
400 INVALID_REQUEST Neither request_id, nor platform with post_id, was sent.
400 PLATFORM_REQUIRED The request went live on several networks; send platform.
400 platform_not_supported The network can't edit posts through its API. supported_platforms lists the ones that can.
400 text_required Nothing the network can change was sent.
400 invalid_post_id The post_id isn't in the network's shape (Google Business checks it).
404 NOT_FOUND, POST_NOT_FOUND No such request, no live post on that network, or the network says the post doesn't exist.
404 profile_platform_mapping_invalid The profile has no account on that network, or the account that published the post was disconnected.
409 reauth_required The account must be reconnected first.
502 the network's code The network refused, for example an X account without Premium, or an edit window that has closed. message carries the network's reason.

Editing needs a key with the publish scope.

Request body

application/json

  • request_idstring

    The Reelspan request that published the post; with platform when it went to several networks

  • platformstring

    The network; required with post_id

  • userstring

    Profile username, with post_id (also profile_username)

  • profile_usernamestring
  • post_idstring

    The network’s own post id (an at:// URI or bsky.app link on Bluesky, the local post name on Google Business), for posts made outside Reelspan

  • textstring

    The new text: caption, message or commentary (also message, commentary)

  • messagestring
  • commentarystring
  • titlestring

    A new title where the network has one (Facebook video, Pinterest, WordPress)

  • descriptionstring

    A new description (Pinterest, Facebook video, WordPress body)

  • fieldsobject

    Network settings to change, by upload field name: x_keep_links, pinterest_link, pinterest_board_id, wordpress_status, wordpress_excerpt, mastodon_spoiler_text, telegram_parse_mode, google_business_cta_url…

Responses

200 Edited

{
  "success": true,
  "platform": "string",
  "post_id": "string",
  "url": "string",
  "previous_post_id": "string",
  "warnings": [
    "string"
  ]
}

400 Invalid input, or the network can’t do this (`platform_not_supported`)

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

404 No such request, profile, account or post

{
  "success": false,
  "message": "string",
  "error": "string",
  "error_code": "string"
}

Something unclear or missing? Write to [email protected] and we’ll fix the page.