Nuelink
App · Social Media · 13 actions
Schedule and publish social media from a workflow: write one post and let Nuelink send it to every account in a collection - Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads, Pinterest, X, Bluesky, Mastodon, Telegram and Google Business - now, at a set time, or at the next free slot in the brand's queue. Upload media, add polls, quizzes, Stories and auto-comments, and check which connected accounts have dropped out.
Actions
| Action | What it does |
|---|---|
| Create poll post | Ask a question with two to four answers, open for a day, three days or a week. |
| Create post | Write one post and let Nuelink publish it now, queue it, schedule it for an exact time, or save it as a draft. |
| Create story post | Post an image or video as a Story. |
| Create YouTube video post | Post a video with the fields YouTube wants: a title, tags, and the playlists to file it under. |
| Find brand | Find one brand by name or ID and return it, so a workflow can name the brand it means instead of carrying a number around. |
| Find collection | Find one collection inside a brand by name or ID, so a workflow can post to 'Everywhere' without knowing its number. |
| Get my profile | Read the Nuelink account this connection's token belongs to - its display name, the timezone it was set up in, and when it was created. |
| List brands | List the brands on this Nuelink account, with the ID every other Nuelink action needs and the timezone each one schedules in. |
| List channels | List every social account connected to a brand - its name, platform, and whether Nuelink can still publish to it. |
| List collection channels | List the social accounts one collection will actually publish to, with how many of them are still connected. |
| List collections | List a brand's collections - the named sets of connected social accounts a post is addressed to. |
| List disconnected channels | List the brand's social accounts Nuelink can no longer publish to, because the platform's authorisation expired or was revoked. |
| Upload media | Upload one image, video or PDF to a brand and get back the media ID a post attaches it by. |
Create poll post
Ask a question with two to four answers, open for a day, three days or a week. Mark one answer correct and it becomes a quiz, with an optional explanation shown after voting. This is the one Nuelink post that does not need a caption, because the question stands in for it - though you can still add one. Polls only appear on the platforms that have them; the rest of the collection gets the caption.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection
collection_idtextRequired - The collection to post into. A collection is a set of connected social accounts, and a post goes to all of them - there is no way to reach only some. Pick one, or paste its ID.
- What to do with it
publish_modetextRequired - Whether Nuelink publishes the post, queues it, schedules it, or just saves it. There is no default on purpose: 'Publish now' writes to real social accounts, and a post cannot be deleted or edited through the API afterwards.One of:
DRAFT(Save as a draft - nothing is published or scheduled),SCHEDULE(Schedule for an exact time),QUEUE(Add to the brand's queue, at its next free slot),IMMEDIATE(Publish now). - Publish at
scheduled_atdate and time - When to publish, for 'Schedule for an exact time' only. Nuelink reads this in the brand's own timezone, which is shown beside the brand in the Brand list; the time you pick here is converted into it.
- Question
questiontextRequired - What the poll asks, up to 280 characters.
- Answers
optionslistRequired - 2 to 4 answers, each up to 30 characters.
- Open for
periodtextRequired - How long people can vote.One of:
1d(1 day),3d(3 days),7d(7 days). - Correct answer
correct_option_indexnumber - Turns the poll into a quiz: the position of the right answer, counting the first as 0. Leave blank for an ordinary poll.From 0 to 3.
- Explanation
explanationtext - Shown after someone votes, on a quiz. Up to 512 characters, and only used with a correct answer.
- Caption
captiontext - Optional text to show above the poll. A poll is the one post that does not need a caption, because the question stands in for it.
Outputs
brand_idnumber- The brand it was made in.
collection_idnumber- The collection it will publish to.
is_quiztrue/false- True when an answer was marked correct.
postobject- The post record Nuelink created.
post_idnumber- The new post's Nuelink ID.
publish_modetext- What Nuelink was asked to do with it.
scheduled_attext- When it will publish, in the brand's timezone, for a scheduled post.
scheduled_timezonetext- The brand timezone that time is written in.
Example output
{
"brand_id": 13493,
"collection_id": 50218,
"is_quiz": false,
"post": {
"id": 4364709,
"message": "Post created successfully"
},
"post_id": 4364709,
"publish_mode": "IMMEDIATE"
}Create post
Write one post and let Nuelink publish it now, queue it, schedule it for an exact time, or save it as a draft. It goes to every channel in the collection you choose and to no others - that is what a collection is for. Attach media by uploading it first or by giving Nuelink a public URL, add an auto-comment for the links and hashtags, and set the Instagram, Facebook or TikTok options where they apply. Nuelink's API cannot edit or delete a post afterwards, and reports no per-channel result - check the Nuelink dashboard for what each platform did with it.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection
collection_idtextRequired - The collection to post into. A collection is a set of connected social accounts, and a post goes to all of them - there is no way to reach only some. Pick one, or paste its ID.
- What to do with it
publish_modetextRequired - Whether Nuelink publishes the post, queues it, schedules it, or just saves it. There is no default on purpose: 'Publish now' writes to real social accounts, and a post cannot be deleted or edited through the API afterwards.One of:
DRAFT(Save as a draft - nothing is published or scheduled),SCHEDULE(Schedule for an exact time),QUEUE(Add to the brand's queue, at its next free slot),IMMEDIATE(Publish now). - Publish at
scheduled_atdate and time - When to publish, for 'Schedule for an exact time' only. Nuelink reads this in the brand's own timezone, which is shown beside the brand in the Brand list; the time you pick here is converted into it.
- Caption
captiontextRequired - The post's text, 1-3000 characters. The same caption goes to every channel in the collection - Nuelink has no per-platform wording.
- Title
titletext - An optional title, used by the platforms that have one - YouTube and Pinterest among them. Up to 255 characters.
- Alt text
alttext - Describes the media for screen readers, up to 255 characters.
- Link
linktext - A URL to attach to the post, up to 1000 characters.
- Uploaded media
media_idslist - Media IDs from 'Upload media' - the 'media_id' that step returns. Nuelink attaches each one to the post.
- Media from a URL
media_urlslist - Public file URLs for Nuelink to fetch - Google Drive, Dropbox, OneDrive, Unsplash or anything else reachable without a login. Use these instead of uploading; a single attachment is never both.
- Auto-comment
comment_texttext - A comment Nuelink posts underneath the post once it is live - where links and hashtags usually go. Up to 1000 characters.
- Comment delay (seconds)
comment_delaynumber - How long to wait after publishing before adding the comment. Defaults to none.At least 0.
- Instagram location ID
instagram_location_idtext - Instagram's own ID for the place to geotag. Needs the location name as well.
- Instagram location name
instagram_location_nametext - The place name shown with the geotag.
- Also show Reels in the feed
instagram_share_to_feedtrue/false - Puts a Reel on the main Instagram feed as well as in Reels.
- Instagram Trial Reel
instagram_trial_reeltext - Shows the Reel to non-followers first for 72 hours to test it, then does this. Instagram only, and only for a video posted as a Reel.One of:
MANUAL(Wait - share it with followers by hand in Instagram),SS_PERFORMANCE(Auto-share with followers if it performs well). - Facebook location ID
facebook_location_idtext - Facebook's own ID for the place to geotag. Needs the location name as well.
- Facebook location name
facebook_location_nametext - The place name shown with the geotag.
- Send to the TikTok app instead
tiktok_send_to_inboxtrue/false - Delivers the video to the TikTok app as a notification rather than publishing it, so it can be edited and posted from the phone.
Outputs
brand_idnumber- The brand it was made in.
collection_idnumber- The collection it will publish to.
postobject- The post record Nuelink created.
post_idnumber- The new post's Nuelink ID.
publish_modetext- What Nuelink was asked to do with it.
scheduled_attext- When it will publish, in the brand's timezone, for a scheduled post.
scheduled_timezonetext- The brand timezone that time is written in.
Example output
{
"brand_id": 13493,
"collection_id": 50218,
"post": {
"id": 4364709,
"message": "Post created successfully"
},
"post_id": 4364709,
"publish_mode": "IMMEDIATE"
}Create story post
Post an image or video as a Story. Stories exist on Instagram and Facebook only: any other channel in the collection publishes the same thing to its feed instead, which is Nuelink's behaviour rather than a setting. Media is required here - a Story with nothing to show is refused by the platform rather than by Nuelink.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection
collection_idtextRequired - The collection to post into. A collection is a set of connected social accounts, and a post goes to all of them - there is no way to reach only some. Pick one, or paste its ID.
- What to do with it
publish_modetextRequired - Whether Nuelink publishes the post, queues it, schedules it, or just saves it. There is no default on purpose: 'Publish now' writes to real social accounts, and a post cannot be deleted or edited through the API afterwards.One of:
DRAFT(Save as a draft - nothing is published or scheduled),SCHEDULE(Schedule for an exact time),QUEUE(Add to the brand's queue, at its next free slot),IMMEDIATE(Publish now). - Publish at
scheduled_atdate and time - When to publish, for 'Schedule for an exact time' only. Nuelink reads this in the brand's own timezone, which is shown beside the brand in the Brand list; the time you pick here is converted into it.
- Caption
captiontextRequired - The post's text, 1-3000 characters. The same caption goes to every channel in the collection - Nuelink has no per-platform wording.
- Uploaded media
media_idslist - Media IDs from 'Upload media' - the 'media_id' that step returns. Nuelink attaches each one to the post.
- Media from a URL
media_urlslist - Public file URLs for Nuelink to fetch - Google Drive, Dropbox, OneDrive, Unsplash or anything else reachable without a login. Use these instead of uploading; a single attachment is never both.
- Instagram location ID
instagram_location_idtext - Instagram's own ID for the place to geotag. Needs the location name as well.
- Instagram location name
instagram_location_nametext - The place name shown with the geotag.
Outputs
brand_idnumber- The brand it was made in.
collection_idnumber- The collection it will publish to.
postobject- The post record Nuelink created.
post_idnumber- The new post's Nuelink ID.
posted_as_storytrue/false- Always true - this action sets the Story flag.
publish_modetext- What Nuelink was asked to do with it.
scheduled_attext- When it will publish, in the brand's timezone, for a scheduled post.
scheduled_timezonetext- The brand timezone that time is written in.
Example output
{
"brand_id": 13493,
"collection_id": 50218,
"post": {
"id": 4364709,
"message": "Post created successfully"
},
"post_id": 4364709,
"posted_as_story": true,
"publish_mode": "IMMEDIATE"
}Create YouTube video post
Post a video with the fields YouTube wants: a title, tags, and the playlists to file it under. The playlist is attached through the connected YouTube channel that owns it, and the playlist IDs come from YouTube itself - Nuelink publishes no way to list them. Everything else in the collection still receives the post; the YouTube settings are simply ignored where they do not apply.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection
collection_idtextRequired - The collection to post into. A collection is a set of connected social accounts, and a post goes to all of them - there is no way to reach only some. Pick one, or paste its ID.
- What to do with it
publish_modetextRequired - Whether Nuelink publishes the post, queues it, schedules it, or just saves it. There is no default on purpose: 'Publish now' writes to real social accounts, and a post cannot be deleted or edited through the API afterwards.One of:
DRAFT(Save as a draft - nothing is published or scheduled),SCHEDULE(Schedule for an exact time),QUEUE(Add to the brand's queue, at its next free slot),IMMEDIATE(Publish now). - Publish at
scheduled_atdate and time - When to publish, for 'Schedule for an exact time' only. Nuelink reads this in the brand's own timezone, which is shown beside the brand in the Brand list; the time you pick here is converted into it.
- Video title
titletextRequired - The name YouTube shows for the video, up to 255 characters. Required here: a video posted without one is published untitled.
- Caption
captiontextRequired - The post's text, 1-3000 characters. The same caption goes to every channel in the collection - Nuelink has no per-platform wording.
- Uploaded media
media_idslist - Media IDs from 'Upload media' - the 'media_id' that step returns. Nuelink attaches each one to the post.
- Media from a URL
media_urlslist - Public file URLs for Nuelink to fetch - Google Drive, Dropbox, OneDrive, Unsplash or anything else reachable without a login. Use these instead of uploading; a single attachment is never both.
- YouTube tags
youtube_tagslist - Tags for the video, each up to 255 characters.
- YouTube channel
youtube_playlist_channel_idtext - The connected YouTube channel that owns the playlists below. Only needed when adding the video to a playlist.
- YouTube playlists
youtube_playlist_idslist - Playlist IDs to add the video to, as YouTube writes them. Nuelink publishes no way to list playlists, so these come from the playlist's own YouTube URL.
Outputs
brand_idnumber- The brand it was made in.
collection_idnumber- The collection it will publish to.
postobject- The post record Nuelink created.
post_idnumber- The new post's Nuelink ID.
publish_modetext- What Nuelink was asked to do with it.
scheduled_attext- When it will publish, in the brand's timezone, for a scheduled post.
scheduled_timezonetext- The brand timezone that time is written in.
Example output
{
"brand_id": 13493,
"collection_id": 50218,
"post": {
"id": 4364709,
"message": "Post created successfully"
},
"post_id": 4364709,
"publish_mode": "IMMEDIATE"
}Find brand
Find one brand by name or ID and return it, so a workflow can name the brand it means instead of carrying a number around. Nuelink has no search, so this reads the brand list and matches on the brand's 'title' - an exact match first, then a partial one. Fails the step when nothing matches, rather than handing the next step an empty brand.
Inputs
- Brand name or ID
querytextRequired - The brand's name, or its ID. An exact name wins over a partial one, so 'Fernwood' still finds that brand when 'Fernwood Botanicals' exists too.
Outputs
brandobject- The brand that matched.
matched_exactlytrue/false- True when the name or ID matched exactly rather than partially.
other_matcheslist- Any other brands the text also matched.
Example output
{
"brand": {
"createdAt": "2023-07-20T13:05:31.000000Z",
"description": "Main workspace for Fernwood Botanicals social channels",
"id": 13493,
"timezone": "America/New_York",
"title": "Fernwood Botanicals",
"updatedAt": "2026-04-15T13:45:23.000000Z"
},
"matched_exactly": true,
"other_matches": []
}Find collection
Find one collection inside a brand by name or ID, so a workflow can post to 'Everywhere' without knowing its number. Matches on the collection's 'title', exactly before partially, and fails the step when nothing matches.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection name or ID
querytextRequired - The collection's name, or its ID. Matched inside the chosen brand only.
Outputs
brand_idnumbercollectionobject- The collection that matched.
matched_exactlytrue/falseother_matcheslist- Any other collections the text matched.
Example output
{
"brand_id": 13493,
"collection": {
"active_channel_count": 1,
"channel_count": 1,
"channels": [
{
"createdAt": "2023-07-20T13:11:02.000000Z",
"id": 88214,
"name": "@fernwoodbotanicals",
"status": "ACTIVE",
"type": "Instagram",
"updatedAt": "2026-04-15T13:45:23.000000Z"
}
],
"createdAt": "2023-07-20T13:14:00.000000Z",
"description": "Every channel on the brand",
"id": 50218,
"status": "ACTIVE",
"title": "Everywhere",
"updatedAt": "2026-04-15T13:45:23.000000Z"
},
"matched_exactly": true,
"other_matches": []
}Get my profile
Read the Nuelink account this connection's token belongs to - its display name, the timezone it was set up in, and when it was created. Nuelink's own documentation calls this the way to check that a token still works, and it is the only action here that needs nothing but the token. There is no email address or plan on it, whatever Nuelink's assistant documentation says.
Inputs
None.
Outputs
userobject- The account the token belongs to.
Example output
{
"user": {
"id": "7860a8ed7591c8eff18659a55b3e80e8",
"joinedAt": "2022-05-23T23:55:51.000000Z",
"name": "Maya Holloway",
"timezone": "Europe/London"
}
}List brands
List the brands on this Nuelink account, with the ID every other Nuelink action needs and the timezone each one schedules in. A brand is a workspace holding its own connected accounts, collections and queue; Nuelink shows its numeric ID nowhere in its own screens, so this is how a workflow finds one.
Inputs
- Page
pagenumber - Which page to read, counting from 1. Read 'next_page' off the result to walk through them.At least 1.
- How many per page
per_pagenumber - How many records a page holds, 1-100. Defaults to 25.From 1 to 100.
Outputs
brandslist- The brands on this page
countnumber- How many records this page holds.
has_moretrue/false- Whether another page follows this one.
last_pagenumber- The final page number.
next_pagenumber- The page to ask for next, or null on the last one.
pagenumber- The page that was read.
per_pagenumber- The page size asked for.
totalnumber- How many records match in total.
Example output
{
"brands": [
{
"createdAt": "2023-07-20T13:05:31.000000Z",
"description": "Main workspace for Fernwood Botanicals social channels",
"id": 13493,
"timezone": "America/New_York",
"title": "Fernwood Botanicals",
"updatedAt": "2026-04-15T13:45:23.000000Z"
}
],
"count": 1,
"has_more": false,
"last_page": 1,
"next_page": null,
"page": 1,
"per_page": 25,
"total": 1
}List channels
List every social account connected to a brand - its name, platform, and whether Nuelink can still publish to it. Optionally narrowed to one platform or to one connection state. Nuelink has no filtering of its own here, so this reads the brand's channels and filters them; the platform list on the field is built from what this brand's channels actually report.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Platform
channel_typetext - Only channels on this platform. The list is built from the platforms this brand's own channels report, so it always matches what Nuelink actually sends. Leave blank for every platform.
- Connection status
statustext - Only channels in this state. Leave blank for both connected and disconnected ones.One of:
ACTIVE(Connected and working),INACTIVE(Disconnected, or needs re-authorising).
Outputs
brand_idnumber- The brand that was read.
channelslist- The channels that matched
countnumber- How many came back.
platform_typeslist- Every platform name this brand's channels report, before filtering.
scanned_every_pagetrue/false- False when the brand has more channels than one step reads, so the list is the first of them.
Example output
{
"brand_id": 13493,
"channels": [
{
"createdAt": "2023-07-20T13:11:02.000000Z",
"id": 88214,
"name": "@fernwoodbotanicals",
"status": "ACTIVE",
"type": "Instagram",
"updatedAt": "2026-04-15T13:45:23.000000Z"
},
{
"createdAt": "2023-07-20T13:12:44.000000Z",
"id": 88215,
"name": "Fernwood Botanicals",
"status": "INACTIVE",
"type": "Facebook",
"updatedAt": "2026-09-01T08:02:10.000000Z"
}
],
"count": 2,
"platform_types": [
"Facebook",
"Instagram"
],
"scanned_every_page": true
}List collection channels
List the social accounts one collection will actually publish to, with how many of them are still connected. Worth its own step because Nuelink accepts a post to an empty collection and reports it as created - this is how a workflow checks first and branches on 'publishes_anywhere'.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Collection
collection_idtextRequired - The collection to post into. A collection is a set of connected social accounts, and a post goes to all of them - there is no way to reach only some. Pick one, or paste its ID.
Outputs
active_countnumber- How many of them are connected.
brand_idnumberchannelslist- The channels attached to the collection.
collection_idnumbercollection_titletextcountnumberinactive_countnumber- How many need reconnecting in Nuelink.
publishes_anywheretrue/false- False when a post to this collection would reach nobody.
Example output
{
"active_count": 1,
"brand_id": 13493,
"channels": [
{
"createdAt": "2023-07-20T13:11:02.000000Z",
"id": 88214,
"name": "@fernwoodbotanicals",
"status": "ACTIVE",
"type": "Instagram",
"updatedAt": "2026-04-15T13:45:23.000000Z"
}
],
"collection_id": 50218,
"collection_title": "Everywhere",
"count": 1,
"inactive_count": 0,
"publishes_anywhere": true
}List collections
List a brand's collections - the named sets of connected social accounts a post is addressed to. Each one comes back with the channels attached to it and a count of them, because a collection with no channels still accepts a post and then publishes it to nobody.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- Page
pagenumber - Which page to read, counting from 1. Read 'next_page' off the result to walk through them.At least 1.
- How many per page
per_pagenumber - How many records a page holds, 1-100. Defaults to 25.From 1 to 100.
Outputs
brand_idnumbercollectionslist- The collections on this page
countnumber- How many records this page holds.
has_moretrue/false- Whether another page follows this one.
last_pagenumber- The final page number.
next_pagenumber- The page to ask for next, or null on the last one.
pagenumber- The page that was read.
per_pagenumber- The page size asked for.
totalnumber- How many records match in total.
Example output
{
"brand_id": 13493,
"collections": [
{
"active_channel_count": 1,
"channel_count": 1,
"channels": [
{
"createdAt": "2023-07-20T13:11:02.000000Z",
"id": 88214,
"name": "@fernwoodbotanicals",
"status": "ACTIVE",
"type": "Instagram",
"updatedAt": "2026-04-15T13:45:23.000000Z"
}
],
"createdAt": "2023-07-20T13:14:00.000000Z",
"description": "Every channel on the brand",
"id": 50218,
"status": "ACTIVE",
"title": "Everywhere",
"updatedAt": "2026-04-15T13:45:23.000000Z"
}
],
"count": 1,
"has_more": false,
"last_page": 1,
"next_page": null,
"page": 1,
"per_page": 25,
"total": 1
}List disconnected channels
List the brand's social accounts Nuelink can no longer publish to, because the platform's authorisation expired or was revoked. The same records 'List channels' returns filtered to INACTIVE, as its own step for the workflow that runs on a schedule and asks 'has anything dropped out?' - it returns 'any_disconnected' to branch on. Reconnecting is done in the Nuelink dashboard; no API can do it.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
Outputs
any_disconnectedtrue/false- True when at least one channel is disconnected.
brand_idnumber- The brand that was read.
channelslist- The channels that need reconnecting
connected_countnumber- How many of the brand's channels still work.
countnumber- How many came back.
scanned_every_pagetrue/false- False when the brand has more channels than one step reads, so the list is the first of them.
Example output
{
"any_disconnected": true,
"brand_id": 13493,
"channels": [
{
"createdAt": "2023-07-20T13:12:44.000000Z",
"id": 88215,
"name": "Fernwood Botanicals",
"status": "INACTIVE",
"type": "Facebook",
"updatedAt": "2026-09-01T08:02:10.000000Z"
}
],
"connected_count": 1,
"count": 1,
"scanned_every_page": true
}Upload media
Upload one image, video or PDF to a brand and get back the media ID a post attaches it by. Nuelink takes a single file per upload, up to 100 MB, as PNG, JPG, MP4, MOV or PDF. Each social platform then applies its own limits on top - Instagram caps video length, TikTok wants certain aspect ratios - so a file Nuelink accepts here can still be refused at publish time. Uploads cannot be listed or deleted through the API afterwards.
Inputs
- Brand
brand_idtextRequired - The Nuelink brand to work in. Pick one from the list, or paste its ID or the dashboard URL of a page inside it.
- File
mediatextRequired - The image, video or PDF to upload: png, jpg, jpeg, mp4, mov, pdf, up to 100 MB. Upload one here, or pick a file produced by an earlier step.
Outputs
mediaobject- The uploaded media record.
media_idtext- The ID to put in a post's 'Uploaded media' field.
Example output
{
"media": {
"id": "bWVkaWEvcmo2dzRhSVY4YUJOMWJoU3c4U2t6VEJOenVXcjRoTmsuanBn",
"size": 4587311,
"type": "image/jpeg"
},
"media_id": "bWVkaWEvcmo2dzRhSVY4YUJOMWJoU3c4U2t6VEJOenVXcjRoTmsuanBn"
}