# st.createRepost

This action allows you to repost someone else's post or your own. You can repost it as is, or add your own commentary with optional mentions of people and companies.

## Constraints

> ⏺️ **Root Start:** allowed, when `postUrl` or `postUrn` parameter is provided.

> ⬆️ **Parent Actions:** [st.openPost](/docs/action-st-open-post), [st.doForPosts](/docs/action-st-do-for-posts).

> ⬇️ **Child Actions:** N/A.

## Parameters

```json
{
  "actionType": "st.createRepost",
  "label": "repost1",
  "postUrl": "https://www.linkedin.com/posts/post1",
  "text": "Worth reading, especially the part on onboarding. Great work @[author]!",
  "mentions": [
    {
      "key": "author",
      "name": "Example Person",
      "personHashedUrl": "https://www.linkedin.com/in/ACwAAAxxxxxxxxx"
    }
  ]
}
```

- `label` (optional) – custom label for tracking this action in workflow completion.
- `postUrl` (required for root start unless `postUrn` is provided, forbidden for parent start) – LinkedIn URL of the post to repost.
- `postUrn` (optional) – [URN](/docs/core-concepts#linkedin-urns) of the post, accepted instead of `postUrl`. When both are provided, the URL must contain that same URN.
- `text` (optional) – your own commentary, up to **3000** characters. Without it the post is reposted as is.
- `mentions` (optional) – people and companies to mention in `text`. See [mentions](/docs/publishing-posts#mentions).

## Result options

1. **Successful repost:**

```json
{
  "actionType": "st.createRepost",
  "label": "repost1",
  "success": true,
  "data": {
    "postUrl": "https://www.linkedin.com/feed/update/urn:li:activity:1234567890123456789",
    "postUrn": "urn:li:activity:1234567890123456789"
  }
}
```

- `label` – included only if specified in the action parameters.
- `data.postUrl` – URL of the repost. A repost is a post of your own account, so this is not the URL of the post you reposted.
- `data.postUrn` – [URN](/docs/core-concepts#linkedin-urns) of the repost.

> `postUrl` and `postUrn` are `null` when the repost was published but LinkedIn did not return its address. Do not retry: the repost is already live.

2. **Failed repost:**

```json
{
  "actionType": "st.createRepost",
  "label": "repost1",
  "success": false,
  "error": {
    "type": "alreadyReposted",
    "message": "LinkedIn declined this repost because the account has already reposted this post."
  }
}
```

- `label` – included only if specified in the action parameters.
- `error.type` – enum with the following possible values:
  - `postNotFound` – provided URL is not an existing LinkedIn post.
  - `repostNotAllowed` – LinkedIn offers no repost control for this post.
  - `alreadyReposted` – the account has already reposted this post and LinkedIn declined to repost it again.
  - `mentionNotResolved` – a person or company the text mentions was not among the options LinkedIn offered for that name.
