Bluobird
  • Pricing
  • Docs
  • FAQ
  • Contact
Sign InSign Up

Plan, draft with AI, and schedule your posts on X — your content calendar on autopilot.

Product
  • Pricing
  • Documentation
  • FAQ
  • Contact
Get started
  • Sign In
  • Sign Up
Legal
  • Terms of Service
  • Privacy Policy
  • Cookie Policy
  • Acceptable Use
  • Refund Policy

© Copyright 2026 Bluobird. All Rights Reserved.

Documentation

Everything you need to go from zero to posts on autopilot.

On this page
  • Getting started
  • Connect your X account
  • Add your OpenAI key (optional)
  • Compose a post
  • Live data with API calls
  • The queue
  • Approving AI drafts
  • Calendar
  • Workflows
  • Workflow logs
  • Support desk replies
  • Datasets
  • Media library
  • Plans, usage & billing
  • Settings & your account
  • Posting limits & fair use
  • Troubleshooting

On this page

  • Getting started
  • Connect your X account
  • Add your OpenAI key (optional)
  • Compose a post
  • Live data with API calls
  • The queue
  • Approving AI drafts
  • Calendar
  • Workflows
  • Workflow logs
  • Support desk replies
  • Datasets
  • Media library
  • Plans, usage & billing
  • Settings & your account
  • Posting limits & fair use
  • Troubleshooting

Getting started

Bluobird is a content calendar for X (Twitter). You write posts yourself or let AI draft them, put them on a schedule, and Bluobird publishes them automatically — using your own X API keys, which are stored encrypted and never shared.

A typical setup takes about ten minutes:

  1. 1Create an account with an email and password or with Google. Every account starts on the Free plan, no card required. A short setup wizard then walks you through the next two steps — every part of it can be skipped and done later.
  2. 2Open Integrations and connect your X account with its API credentials (the next section walks through it).
  3. 3Optionally add your OpenAI key on the same page. Without one, AI drafts still work on a shared model with a monthly allowance.
  4. 4Go to Compose to post or schedule something now — type it, or press the sparkles and let AI write three versions. Use Workflows to put posting on a recurring schedule.
  5. 5Watch everything from the Queue and the Calendar — every action shows its status, timing and any error there.

What Bluobird does — and does not — automate

Bluobird schedules and publishes your own content. Automated engagement (likes, retweets, replies, DMs) is not part of the product, which keeps your account inside X's automation policy.

Connect your X account

Bluobird posts through the official X API using credentials from your own X developer app. You create the app once in the X Developer Portal, then paste four keys into Bluobird.

Step 1 — Create an X developer app

  1. 1Go to developer.x.com and sign in with the X account you want to post from. The Free tier is enough for posting.
  2. 2Create a Project, then an App inside it.
  3. 3In the app's Settings, open User authentication settings and set the app permissions to Read and write. Without write permission, Bluobird cannot post.
  4. 4Open the Keys and tokens tab and copy four values. They map onto the Bluobird form like this:
In the X Developer PortalField in Bluobird
Consumer Keys → API KeyAPI Key
Consumer Keys → API Key SecretAPI Key Secret
Authentication Tokens → Access TokenAccess Token
Authentication Tokens → Access Token SecretAccess Token Secret

Regenerate your Access Token after changing permissions

Access tokens are stamped with the permissions that existed when they were generated. If you set "Read and write" after the token was created, regenerate the Access Token and Secret — otherwise every post fails with a 403 error from X.

Step 2 — Add the account in Bluobird

  1. 1In Bluobird, open Integrations and click Add X account.
  2. 2Fill in the four key fields. The Label is optional — use it to tell accounts apart (for example "Brand account").
  3. 3Click Verify & connect. Bluobird checks the credentials against X before saving them, and stores them encrypted.
Integrations · /home/integrations

X (Twitter) accounts

2 / 20

Each account posts with its own X developer app keys.

  • @bluobird_devMain
    Verified

What you should see

  • On success the account appears in the list with a green Verified badge.
  • If verification fails you will see Could not connect the account. — almost always a mistyped key or missing write permission. Re-copy all four values and try again.
  • Re-check a connection any time with the Re-test button. If X rejects the keys later, the badge flips to Unverified.
  • Removing an account unlinks its workflows and queued posts; those then fail with No X account selected for this action until you pick another account.

How many X accounts you can connect depends on your plan — 1 on Free, 2 on Basic, 20 on Pro, 50 on Ultimate. The counter on the card shows where you stand.

Add your OpenAI key (optional)

An OpenAI key is optional. With your own key, AI drafts are unmetered by Bluobird and billed by OpenAI at their usual rates, and on paid plans ChatGPT's own web search becomes available for drafts.

  1. 1Create a key at platform.openai.com/api-keys (it starts with sk-).
  2. 2In Integrations, paste it into the API Key field of the OpenAI card and click Save key.
  3. 3The card shows a Saved badge from then on. Leaving the field blank later keeps the stored key; pasting a new one replaces it and re-enables any workflows that were paused because the old key ran out of credits.
Integrations · /home/integrations

OpenAI

Saved

Optional. Required only for AI-drafted posts.

No key? AI still works.

Without your own key, AI drafts use our shared model, capped by your plan. 13 / 500 used this month (Pro plan).

API Keysk-…
Save key

AI preferences

How AI-drafted posts behave once a workflow creates them.

Review AI tweets before they runAI tweets land in the Queue as drafts awaiting your approval.
Auto-purge drafts older than 7 daysDrafts never count toward your monthly operations — only published actions do.
Integrations — the OpenAI card and the AI preferences that decide how AI posts behave

No key? AI still works — with a monthly cap

Without your own key, AI drafts use a shared model with a monthly allowance per plan: 10 on Free, 50 on Basic, 500 on Pro, unlimited on Ultimate. One prompt uses one draft from the allowance however many versions you ask for, and whether or not you post the result. The Integrations page and the compose box both show how much is left.

Compose a post

Compose is for one-off posts: write something now, post it now, or schedule it for later. (For recurring content, use Workflows.) It is a single box docked at the bottom of the page — type into it, or switch it to AI mode and describe what you want.

Compose · /home/compose

What's happening?

@bluobird_dev0/280

Posts go to your queue and publish on the next worker tick.

Compose — the box in writing mode. The icons are: attach media, let AI draft it, schedule, dry run, API calls

Writing it yourself

  • Type the post and press the round button (or ⌘/Ctrl + Enter). It goes to the queue and publishes on the next worker tick — usually within a minute.
  • The counter shows n/280 and turns red when you are over X's limit. Links always count as 23 characters.
  • With more than one X account connected, Post from picks the account. With one account its handle is shown; with none, the box tells you to connect one first.
  • Attach media with + — up to 4 images or 1 video per post, picked from your Media library or uploaded on the spot.
  • Schedule with the clock: pick a date and time (your local time) and the post waits in the queue until then. A chip above the text shows the time; the × clears it.
  • The flask toggles Dry run: the post is simulated and nothing reaches X. It is off by default in Compose.

Letting AI draft it

Press the sparkles to switch to AI mode, describe the tweet you want (up to 2,000 characters) and send. Bluobird writes up to three versions, each with its character count. Use this drops a version into the box, where you can edit it before posting; Try again asks for a fresh set.

Compose · /home/compose

Announce that Compose now writes three versions of a tweet from one prompt. Friendly, no hashtags.

Here are 3 versions — pick one to edit and post.

Shipping day: Bluobird now drafts three versions of a tweet from one prompt. Pick one, tweak it, schedule it — all in the same box.

131 charsUse this
  • A picked version shows a From AI draft chip. Exactly what you see in the box is what posts — compose picks are never held for review, whatever your AI-review setting says (that setting is for workflows).
  • Drafts come from your own OpenAI key when you have one, otherwise from the shared model. The line under the box says which, and how many shared drafts you have left this month.
  • One prompt costs one shared draft, however many versions it produces and whether or not you post one.

AI draft settings

The gear (visible in AI mode) tunes the drafts. The choices are remembered in your browser.

Versions per prompt

123

One prompt costs the same whichever you pick.

Creativity

PreciseBalancedBold

Tone

NeutralCasualProWittyBold
Allow hashtags (up to two)Allow emoji
Compose — AI draft settings
  • Versions per prompt — 1, 2 or 3 (default 3). Costs the same either way.
  • Creativity — Precise sticks to the brief, Balanced is the default, Bold takes more liberties.
  • Tone — Neutral, Casual, Pro, Witty or Bold.
  • Allow hashtags (up to two) and Allow emoji — both off by default, so drafts come out clean unless you ask.

Searching the web first

The globe (AI mode, on the toolbar or under More tools on a phone) lets the AI look things up before writing, so drafts about news, prices or events are grounded in something real.

Search the web firstAdds Google results from the last 7 days to the prompt. 12 of 500 searches left this month.
Append a source linkThe top result’s URL (X counts it as 23 characters).
Compose — the web search options
  • With your own OpenAI key on a paid plan, ChatGPT's native search is used — unmetered by Bluobird, it just uses more of your OpenAI tokens.
  • Otherwise Bluobird adds Google results from the last 7 days to the prompt. Each prompt with search on uses one of your plan's monthly searches (20 on Free, 100 on Basic, 500 on Pro, 2,000 on Ultimate).
  • Append a source link adds the top result's URL to the end of the draft. X counts any link as 23 characters.

Posting the same thing from several accounts

When you have more than one X account connected, Compose reminds you that posting the same or substantially similar content across accounts breaks X's rules and can get them suspended. Bluobird has no "post to all accounts" button on purpose — keep each account's posts unique.

Live data with API calls

Both Compose and workflow rules can pull live data into a post at the moment it publishes: a price, the weather, a headline, a number from your own backend. Open API calls (the { } icon), give each call an alias and a URL, then reference the response as ${alias.field} in your text or AI prompt.

API calls

Fetch live data when this posts and reference it as ${alias.field}.

weatherGEThttps://api.open-meteo.com/v1/forecast?latitude=51.5
Authorizationsaved — leave blank to keepSecret
Test200412 ms${weather.current.temperature_2m} → 14.2

Up to 5 calls · 10-second timeout · private addresses are blocked. If any call fails, nothing is posted.

API calls — one call with an alias, a secret header, and the test result showing the value a token resolves to
  • Up to 5 calls per post or rule. Methods GET, POST, PUT, PATCH and DELETE; up to 20 headers each, and any header can be marked Secret so its value is stored encrypted and never shown again.
  • Nested fields use dots: ${weather.current.temperature_2m}. Test runs the call now and shows the status, timing and the resolved values.
  • Calls time out after 10 seconds and responses are capped at 512 KB. Private and localhost addresses are refused.
  • If any call fails — a non-2xx status, a timeout or a truncated response — the post fails and nothing is published; the error shows on the queue row. An API error body can never end up in a tweet.
  • In AI mode the calls are resolved into the prompt when the drafts are written; in workflows, when the rule runs.

The queue

Everything Bluobird is about to do — or has done — lives in the Queue: one row per action, whether it came from Compose or a workflow. Switch between Pending, Completed, Failed and All; search across text, prompts and usernames; filter by account and type; sort by newest, oldest, soonest scheduled or type. View settings shows or hides the Type, Account and When columns.

Queue · /home/queue
PendingCompletedFailedAll
Clear draftsNew post
Search…
FiltersView settings
PostStatusTypeWhen

Shipping day: Bluobird now drafts three versions of a tweet from one prompt…

draft
Post
ASAP

Three things we learned running 10,000 scheduled posts (thread) 🧵

scheduled
draft
Post

Shipping day: Bluobird now drafts three versions of a tweet from one prompt…

ASAP@bluobird_dev
scheduled
Post
dry-run

Three things we learned running 10,000 scheduled posts (thread) 🧵

30 records1 / 3
Queue — pending actions with their status chips. On a phone the table becomes a list of cards

Statuses and what you can do with them

StatusMeaningRow menu
draftAI-drafted action waiting for your approval (when review mode is on).Approve · Edit · Cancel · Delete
queuedReady — runs on the next worker tick.Edit · Cancel · Delete
scheduledWaiting for its date and time, or held back by pacing (see the Waiting note).Run now · Edit · Cancel · Delete
processingExecuting right now.—
completedPublished (or simulated, for dry runs). These rows are your usage ledger and cannot be deleted.—
failedSomething went wrong — the exact error is shown in red on the row.Run now · Edit · Delete
cancelled
  • Edit changes the text or the schedule before an action runs. Editing a draft approves it, and editing a failed action re-queues it.
  • Tick rows (or the header checkbox) to select them, then Delete the selection in one go. Clear drafts removes every draft on the account at once, after a confirmation.
  • Rows that say Waiting: anti-spam pacing or X rate limit are not stuck: Bluobird spaces posts out per account and retries at the time shown (see Posting limits below).
  • The list shows 10 rows per page; the footer has the page controls and the total.

Failed actions are safe to retry

Temporary problems are retried for you: if X is briefly unreachable or overloaded, the action waits and tries again (up to three times, a few minutes apart) and the row says so. Anything else fails with the reason on the row — fix the cause (keys, media, content length), then use Run now, or Edit first if the content itself was the problem. If a failure says the post "may or may not have been posted", X did not confirm either way: check the account on X before running it again, so it is not posted twice.

Approving AI drafts

Workflows that draft with AI hold every post for you by default: Review AI tweets before they run is on for new accounts. Each AI post lands in the Queue as a draft with its text already generated, so you review the actual tweet, not the prompt.

Queue · /home/queue
PendingCompletedFailedAll
Clear draftsNew post
Search…
FiltersView settings
PostStatusTypeWhen

Shipping day: Bluobird now drafts three versions of a tweet from one prompt…

draft
Post
ASAPApproveEdit
draft
Post

Shipping day: Bluobird now drafts three versions of a tweet from one prompt…

ASAP@bluobird_dev
ApproveEditCancelDelete
30 records1 / 3
Queue — a draft from a workflow, with Approve in the row menu
  1. 1Open the Queue and read the draft.
  2. 2Pick Approve from the row menu — it moves to queued (or scheduled if it has a time). Not happy with it? Edit the text — saving approves it — or Cancel it.
  3. 3To let AI posts publish without a click, turn the switch off under Integrations → AI preferences.

AI preferences

How AI-drafted posts behave once a workflow creates them.

Review AI tweets before they runAI tweets land in the Queue as drafts awaiting your approval.
Auto-purge drafts older than 7 daysDrafts never count toward your monthly operations — only published actions do.
Integrations — the two AI preferences

Drafts wait for you — and never cost operations

A draft never publishes on its own. Drafts don't count toward your monthly operations either; only published actions do. If a workflow drafts faster than you approve, drafts simply pile up: use Clear drafts on the Queue, or turn on Auto-purge drafts older than 7 days and Bluobird tidies them for you (off by default).

Calendar

The Calendar shows what goes out and when: your scheduled and published posts alongside the runs your workflows have coming up, by month or by week (weeks start on Monday). Today jumps back to the current date.

Calendar · /home/calendar
ScheduledASAPPublishedWorkflow run
MonTueWedThuFriSatSun
909:00Weekly changelog1009:00Three things we learned15:00Daily tips · up to 3 posts1115:00Daily tips · up to 3 posts12ASAPShipping day: Bluobird now…18:30Customer story: Lumen15:00Daily tips · up to 3 posts1315:00Daily tips · up to 3 posts141511:00Weekend read
Calendar — one week of the month view with the legend. Phones show dots per day instead of pills
  • Scheduled and Published are real posts, placed at their time.
  • ASAP is a pending post with no date — it appears on today, at the top.
  • Workflow run entries are projected from each enabled workflow's schedule — no post exists yet, and the projection ignores any randomised delay. Paused, auto-stopped or over-limit workflows are not projected.
  • Tap a day to open its panel: every entry with its type, account, dry-run flag and a link to the workflow that made it, plus Open in queue. The calendar itself is read-only — reschedule from the Queue.

Workflows

A workflow posts on a schedule without you: AI drafts a fresh post each run, or it works through the rows of one of your datasets. The builder is a five-step wizard; you can jump between steps with the progress bars at the top.

Start from a template

You don't have to begin with a blank wizard. On the Workflows page, Templates opens a gallery of ready-made workflows — a daily AI post, a daily news take that searches the web, a tip of the day, a weekly recap, a question for your audience, two that post from a dataset, and two help-desk workflows that answer people who @mention you. Open a card to read what it does and what to change before it goes live, then choose Use this template.

Workflows · /home/flows

Start from a template

Ready-made workflows with the schedule, AI prompt and safety switches filled in. Pick one, adjust it, launch — nothing is saved until you do.

Posting

Publish your own posts on a schedule.

Daily AI postA fresh AI-written post about your topic, every morning.
AI

What it does

Once a day the AI writes one new post about your topic in your voice and publishes it from the account you pick. Skip duplicates keeps it from repeating what you posted recently, and the posting time shifts by up to 30 minutes so it doesn’t land at the same second every day.

Before you go live

  • Replace the [bracketed] parts of the prompt — your topic, audience and tone — on the “What should it do?” step.
  • Set the time and timezone on the schedule step (it starts at 09:00).
  • Dry-run is on, so the first runs only simulate. Check a run in the workflow’s Logs, then switch Dry-run off on the last step to post for real.
Use this template
Daily news takeSearches the web for today’s news in your field and posts a take.
AI
Web search
Tip of the dayOne practical, specific tip for your audience each day.
AI

Help desk

Answer the people who @mention your account.

Help desk: answer mentionsReplies to people who @mention you with a helpful AI answer.
AI
Help desk
Help desk: answer with tweet contextSame help desk, but the AI also reads the tweet they replied to.
AI
Workflows — the template gallery with one template open
  • The builder opens with the name, schedule, source, AI prompt and switches already filled in, and a note at the top repeats the Before you go live list. Nothing is saved until you launch, so trying a template doesn't count towards your plan's workflows.
  • Prompts mark what is yours to fill in with [square brackets] — your topic, your audience, your product. The note lists the ones still left until you have replaced them all.
  • Templates start in your browser's timezone and always with Dry-run on. If a template uses Search the web and your account can't use it right now, the builder leaves it off and says why.
  • Dataset templates can't know your dataset: choose it on the source step and insert your own columns into the prompt with the Insert row value chips.

1. Name your workflow

A name, the X account it posts from, and whether it is enabled as soon as it is saved. Workflows per account are capped by plan (5 on Free, 10 on Basic, unlimited on Pro, unlimited on Ultimate).

2. When should it run?

New workflow · /home/flows/new

When should it run?

Pick how often this workflow runs and how much it does each time.

RuniDaily at a time
Time
RunExtra fieldsWhat it means
Every hour—Once an hour, at a fixed minute.
Every N hoursN (1–23)Every N hours, at a fixed minute.
Daily at a timeTimeOnce a day — the default (09:00).
WeeklyDay and timeOnce a week.
Advanced (raw cron)Cron expressionAnything cron can say. An invalid expression disables the workflow.
  • Times are in the workflow's Timezone (UTC by default).
  • Randomize posting time adds a random delay of up to the minutes you choose (60 when switched on, 1–1440) after each run time, so posts don't land at the same second every day.
  • Max actions / run (1–50, default 5) caps how many posts one run may create.

3. What should it work with?

New workflow · /home/flows/new

What should it work with?

Where posts come from. Dataset loops over rows of one of your datasets; Generate produces an AI-drafted post.

Generate onlyAI drafts a fresh post each run — no source needed.
  • Generate only — AI drafts a fresh post each run from your prompt. No source needed.
  • Dataset — each run takes rows from one of your datasets and makes one post per row. Choose Linear (oldest first) or Randomly, add row filters such as posted equals false, and optionally limit the rows per run. The smaller of that limit and Max actions / run wins.

4. What should it do?

New workflow · /home/flows/new

What should it do?

Write the post yourself or describe it for the AI.

ContentAI generated
Text sourceWritten here
  • Content: Manual text (up to 280 characters) or AI generated from a prompt (up to 2,000). Max length defaults to 280; longer posts need X Premium on the posting account.
  • Tokens: dataset workflows can use ${record.field} (the row's values — the Insert row value chips type them for you); any workflow can use ${alias.field} from API calls.
  • From templates draws the text or prompt from a random matching row of another dataset (${template.field} tokens), so one workflow can rotate through many hand-written variants. Rows with an empty template field are skipped; if none qualify the run fails with "No usable template rows".
  • Search the web and Source link(s) work exactly as in Compose; each run of the rule uses one search.
  • Skip duplicates steers the AI away from topics in your recent posts (the last 30 days). If the result is still a repeat after one retry, the action is cancelled with the reason on the queue row.
  • Media: attach from the library (all of them, or a random one each time) or, for dataset workflows, from up to 4 image fields of the row. A video is always attached alone.
  • Mark rows after posting (dataset workflows, under Advanced) sets a field after a real, non-dry-run success — for example posted = yes. With Start over when every row has been used, marked rows are skipped and, once all rows are marked, the marks are cleared and the cycle restarts; otherwise the workflow simply finds nothing to post once every row is used.

5. Fine-tune & launch

New workflow · /home/flows/new

Fine-tune & launch

Set the run limits, then launch your workflow.

Auto-stop after failuresi

Disable this workflow after this many failed runs in a row. 0 = never.

5
De-dupei

Never act twice on the same tweet or dataset row.

  • Auto-stop after failures disables the workflow after that many failed runs in a row (default 5; 0 never stops). You get a dialog the next time you open the app, and the Workflows card shows why.
  • De-dupe (on by default) never acts twice on the same dataset row within a workflow.
  • Dry-run is on for every new workflow: runs are simulated, posts are logged, nothing reaches X and no operations are used. Switch it off when you have checked a run or two.

Running and managing workflows

Workflows · /home/flows

Daily tips

Generate only · @bluobird_dev

  • Each card shows Active/Paused, Dry-run/Live, the per-run cap, the schedule in plain words, next and last run, and the timezone. The switch turns it on or off; turning it on also clears any auto-stop or pause.
  • Run now fires it on the next worker tick. Duplicate makes a paused copy with no account selected — edit it to pick one. Delete removes the workflow and its run history after you confirm; posts it already queued stay in the queue.
  • AI workflows create draft posts while review mode is on (see Approving AI drafts). When your monthly operations run out, live workflows pause and resume automatically when the window resets or you upgrade.

Workflow logs

Every workflow has a Logs page (from the card menu) with two tabs. Actions lists the last 50 posts it queued, published or failed, with the error when there is one; Runs lists the last 50 times the schedule fired, how many candidates were scanned and how many posts were created.

Workflow logs · /home/flows/…/logs
Actions48Runs50

Every time the schedule (or “Run now”) fired: what was scanned and what matched. Last 50.

Nov 8, 15:00completed
1 scanned · 1 actionDetails
Nov 7, 15:00failed

Monthly operation limit reached — no actions were created this run.

0 scanned · 0 actionsDetails
Nov 6, 15:00completed
1 scanned · 1 actionDetails

Run details

Nov 8, 15:00 · completed · 1 scanned · 1 action

  • Generate only · candidate 1

    “Batch your week: write five posts on Monday, schedule them…”

    rule 1: post queued

Workflow logs — the Runs tab and a run’s details
  • A run's Details shows what happened to each candidate — "post queued", "skipped — max actions/run reached", "already acted on (de-duped)" and so on — so you can see exactly why a run produced what it did.
  • An action's details show the final text and, once published, View posted tweet and Delete posted tweet, which removes it from X and keeps the history row.
  • Common run errors: Monthly operation limit reached (upgrade or wait for the reset) and No usable template rows (the template filter matched nothing with text).

Support desk replies

The support desk is a workflow that replies to people who @mention your account — an inbound helpdesk for the folks who reach out to you. It only ever reads your own mentions and only replies to them; it never sends anything to people who did not tag you first.

New workflow · /home/flows/new

What should it work with?

Where posts come from. Dataset loops over rows of one of your datasets; Generate produces an AI-drafted post.

Generate onlyAI drafts a fresh post each run — no source needed.DatasetLoop over the rows of one of your datasets.Support desk (mentions)Reply to people who @mention your account.

Support use only — misuse gets you banned

Only reply to people who mentioned you. Promotional or unsolicited replies violate X’s rules.

Step 3 of 5
New workflow — the Support desk (mentions) source, with the misuse warning

Setting one up

  1. 1Go to Workflows → New workflow, name it, and under Post from choose the connected X account whose mentions you want to answer.
  2. 2On the source step, pick Support desk (mentions). There is nothing else to configure — it uses the account you just chose. The only action a support-desk workflow can take is a reply.
  3. 3On Compose your reply, write the reply yourself or give an AI prompt (see the tip below on referencing the mention).
  4. 4Set your Schedule (how often it checks for new mentions) and Max actions / run (how many replies one run may send), then launch. Keep Dry-run on for the first run to preview replies before anything posts.

Make the AI actually answer each mention

By default an AI prompt only sees the text you write in it — not the mention it is replying to. To answer what each person actually said, reference the mention with these tokens in your prompt (or in manual text):

TokenBecomes
${tweet.text}The text of the mention you're replying to.
${tweet.author}The @handle of the person who mentioned you.
${tweet.parentText}The tweet the mention is replying to — usually your own tweet — so the AI has the context of the conversation. Empty if the mention isn't a reply.
${tweet.parentAuthor}The @handle who posted that parent tweet.

For example: A user (@${tweet.author}) replied "${tweet.text}" to our tweet "${tweet.parentText}". Write a warm, helpful reply that answers them in that context and offers further help.

Give the AI the conversation, not just the mention

A mention on its own is often just "how much?" or "does it work with X?" — meaningless without the tweet it answers. Including ${tweet.parentText} lets the AI see what the person is actually responding to, which is usually your own original tweet.

How it behaves

  • Each run pulls your most recent mentions and replies only to the new ones — it never replies to the same mention twice.
  • It sends at most Max actions / run replies per run, so a burst of mentions can't fan out uncontrollably.
  • The first run picks up mentions already sitting in your timeline (not just ones that arrive after you turn it on) — another reason to dry-run it first.
  • If you keep AI review on, each reply waits in the Queue as a draft for your approval before it sends; turn review off for fully automatic replies.

Support use only — misuse can get you banned

Use the support desk to answer people who contacted you — support, questions, follow-ups. Using it for unsolicited marketing, promotion, spam, or bulk identical replies breaks our Acceptable Use Policy and X's rules, and can get both your Bluobird account and your X account suspended or permanently banned. Keep replies genuine and one-to-one.

Datasets

Datasets let workflows post from your own structured content — a CSV of tips, products, quotes, or anything else with one row per post. The file is parsed in your browser; only the rows are stored.

Importing a CSV

  1. 1On Datasets, click New dataset and pick a CSV file. The first row must be a header row — column names become fields.
  2. 2Choose which columns to import and rename their labels if you like. Field keys are derived from the labels (lowercase, underscores) — workflows reference rows by key.
  3. 3Name the dataset and import. Into an existing dataset you can Append rows or Overwrite everything.

New dataset from CSV

The file is parsed in your browser — only the rows are stored.

products.csvFirst row is treated as the header · up to 20,000 rowsChoose a CSV file
Dataset nameProduct catalog Q4
Columns to import
productProducttaglineTaglineskuSKUpostedPosted
When importing
AppendAdd these rows on top of the existing data.OverwriteDelete all current rows first, then import these.
Preview (first 3)
producttaglineposted
Ultra-wide monitorEverything you need, on one screen.yes
Desk mat XLSoft on wrists, kind to mice.—
Mechanical keyboardQuiet switches, loud productivity.—
CancelImport 128 rows
Datasets — importing a CSV: columns, mode and preview

Working with a dataset

Dataset · /home/datasets/…
All datasetsAdd fieldImport CSV
  • Add field adds a text field (optionally with a default value for every existing row) or an image field. Image fields hold one image or video per row, picked from the Media library or uploaded into the cell; up to 4 per dataset, attached to posts in column order.
  • Click any text cell to edit it in place; Enter saves, Escape cancels. The arrows in a column header reorder fields, the bin deletes one (a dataset keeps at least one field).
  • Rows are added or replaced by CSV import; 100 rows load at a time with a Load more button.

Limits

FreeBasicProUltimate
Datasets per account3510Unlimited
Rows per dataset1001,00010,000Unlimited
Rows per import20,00020,00020,00020,000
Fields per dataset50505050
Image fields4444

Common import messages: No columns found. Is this a CSV with a header row? means the file is missing its header line, and That file has headers but no data rows. means only the header was found — check the export from your spreadsheet tool. An import that would exceed your plan's rows tells you the exact limit.

Media library

The Media page holds the images and videos your posts attach. Upload with the button or by dragging files in; open a tile to preview, download or delete it.

Media · /home/media
LibraryImages up to 2MB · MP4/MOV videos up to 50MBUpload
launch-hero.png0:12
Open a tile to preview, download or delete it.
Media — the library grid; the first tile shows the preview and delete actions
  • Images (JPG, PNG, and other common formats): up to 2 MB each. Videos (MP4 or MOV): up to 50 MB.
  • A post can carry up to 4 images or 1 video — never both. The attach picker in Compose and in workflows enforces this.
  • In a workflow you can attach everything you picked or Random one per post.
  • Deleting a file removes it from the library; queued posts and workflows that referenced it simply post without it.

Files that break a rule are rejected individually with a specific message — for example photo.jpg is 3.4MB — images must be under 2MB. The rest of the batch still uploads.

Plans, usage & billing

Bluobird is usage-based: one operation = one executed, real action. Dry runs, drafts and cancelled posts are free. Your monthly window is anchored to the day you signed up (or last upgraded) and resets on that day each month.

FreeBasicProUltimate
Price / monthFree$9.99$49.99$99.99
Operations / month201507502,000
Workflows510UnlimitedUnlimited
X accounts122050
Datasets3510Unlimited
Rows / dataset1001,00010,000Unlimited
AI drafts without your own key1050500Unlimited
AI web searches / month201005002,000
ChatGPT native search (own key)—YesYesYes
Billing · /home/billing

Usage this month

One operation = one executed action. Dry-runs don’t count.

Pro plan
Manage subscription
412/ 750 operations

55% used

338 remaining

Resets November 30.

Free
Free
  • 20 operations / month
  • 1 X account
  • 5 workflows
  • 3 datasets
  • 10 AI drafts / month without your own key
  • 20 AI web searches / month
  • Payments are handled by Paddle, our Merchant of Record. Manage subscription opens the Paddle portal to update your card, download invoices or cancel.
  • Upgrading charges the new plan's full price today and restarts your usage month: operations and AI-draft counters start from zero and the renewal moves to a month from now. Limits are replaced, not added up.
  • Downgrading keeps what you have used and the current reset date; the dialog warns you if your workflows, datasets or accounts are already over the new plan's limits. Switch to Free takes effect at the end of the paid period.
  • At 80% of your operations you get a banner and an email; at 100% live workflows pause and further real posts fail with Monthly operation limit reached until the window resets or you upgrade — then everything resumes on its own. Posts are held, not lost.
  • A failed renewal gives you 7 days to update the card; after that the account moves to Free.

Settings & your account

Settings has four tabs. Profile holds your picture and name. Account changes your email (you confirm the new address by link) and has the Product updates by email switch: turn it off to stop occasional emails about new features — emails about your own account, like password resets and alerts, are always sent. Security changes your password and sets up multi-factor authentication with an authenticator app. Advanced is where your data is yours.

Settings · /home/settings
ProfileAccountSecurityAdvanced

Export your data

A JSON file with your profile, X handles, workflows, posts, datasets, media list and usage. Encrypted credentials are never included.

Download my data (JSON)

Delete your account

Cancels your subscription immediately (no refund) and erases all of your data. This cannot be undone.

Type DELETE to confirmDELETE
Delete account
Settings — the Advanced tab: export and delete
  • Download my data (JSON) gives you your profile, X handles, workflows, posts, datasets, media list and usage (up to 10,000 rows per table). Encrypted credentials are never included.
  • Delete your account — type DELETE to confirm. The subscription is cancelled immediately with no refund, and every row of your data is erased. It cannot be undone.
  • Sign in with your email and password or with Google; reset your password by email if you forget it. With MFA enabled, every sign-in asks for a code.

Posting limits & fair use

Bluobird paces every account the way a careful human would, so your X account stays in good standing. These limits apply per connected X account to real (non-dry-run) posts; you never have to configure them.

RuleValueWhat you see
Spacing between postsAt least 30 seconds, plus up to 30 seconds of random delayThe next post waits for its turn.
Hourly cap30 posts per rolling hourWaiting: anti-spam pacing on the row — retried in about 10 minutes.
Daily cap200 posts per rolling daySame row note — retried in about an hour.
Duplicate textThe same text from the same account within 24 hoursThe post fails with Duplicate content blocked.
X rate limitBacks off until the time X gives (at most an hour)X rate limit on the row with the retry time.
  • Paced or rate-limited posts are rescheduled, never dropped.
  • Each post or workflow belongs to exactly one X account; there is no "post to all accounts". Posting the same content from several accounts is against X's rules and our Acceptable Use Policy.
  • Dry runs bypass all of this — they never reach X.

Banners you may see

Running low on operations

612 / 750 used on your Pro plan — 138 left this cycle.

Upgrade

Dismissing it stays dismissed until usage escalates.

The usage banner, as it appears above the page
  • Running low / out of operations — at 80% and 100% of your monthly operations, with an Upgrade button. Out means live workflows are paused until the reset.
  • OpenAI key out of credits — your own key stopped working, so AI workflows were paused. Top up at OpenAI, then re-enable them (saving a new key does this for you).
  • Over your workflow limit — after a downgrade you have more workflows than the plan allows. Delete some or upgrade.
  • A workflow auto-stopped — it failed several runs in a row (see Auto-stop). Fix the cause, then switch it back on.
  • Your account has been paused — nothing posts and nothing saves while a review is in progress; contact support.

Troubleshooting

The most common issues, what they mean, and how to fix them. For anything else, contact us — include the exact error text from the queue row if there is one.

SymptomLikely causeFix
Could not connect the account.One of the four X keys is mistyped, or they belong to different apps.Re-copy all four values from the same app's Keys and tokens tab and try again.
Posts fail with a 403 error from XThe access token was generated before the app had "Read and write" permission.Set permissions to Read and write, regenerate the Access Token and Secret, update them in Integrations and Re-test.
No X account selected for this actionThe account the post or workflow used was removed.Edit the workflow (or the queued post) and pick an account.
AI drafts stop or failYour OpenAI key is invalid or out of credits, the shared allowance ran out, or the shared AI is busy.Check your key and billing at OpenAI, add your own key to lift the cap, or simply retry in a few seconds if the message says the AI is busy.
Waiting: anti-spam pacingYou are posting faster than the per-account pacing allows.Nothing to do — it retries at the time shown. Lower Max actions / run or spread schedules out if it happens often.
Duplicate content blockedThe identical text was posted from this account in the last 24 hours.Change the text, or turn on Skip duplicates for AI workflows.
Monthly operation limit reachedYour plan's operations for this window are used up; live workflows are paused.Upgrade from Billing, or wait for the reset date shown there. Dry runs still work.
No usable template rowsThe template dataset filter matched no rows with text in the chosen field.Loosen the filter or fill the template field.
Upload rejected with a size messageImages are capped at 2 MB and videos (MP4/MOV) at 50 MB.Compress or re-export the file below the cap, then upload again.
No columns found. Is this a CSV with a header row?The CSV is missing a header line or is not comma-separated.Re-export with headers as plain CSV (UTF-8) and re-import.
"Your plan allows N …" when adding accounts, workflows, datasets or rowsEach plan caps X accounts, workflows, datasets and rows per dataset.Remove something you no longer use, or upgrade from the Billing page.
A workflow is enabled but nothing postsUsually the dataset is used up (no unmarked rows), review mode is holding drafts, or the operations limit is reached.Check its Logs → Runs, the Queue's Pending tab, and the Billing usage bar; turn on "Start over" if the dataset is exhausted.

Where to look first

Nine times out of ten the answer is on the queue row: every failed action shows the exact error it hit, in red, next to its status. For workflows, the Runs tab of its logs says what each run scanned and why it produced what it did.
  • @bluobird_studioAgency account
    Verified
  • Label (optional)e.g. Brand account
    API Key••••••••••••••••
    API Key Secret••••••••••••••••
    Access Token••••••••••••••••
    Access Token Secret••••••••••••••••

    We verify these against X and store them encrypted.

    CancelVerify & connect
    Integrations — connected accounts with their Verified badge, and the Add X account form

    One prompt, three tweets. Bluobird’s compose box now writes a few versions so you can pick the voice that fits instead of settling for the first draft.

    151 charsUse this

    New in Bluobird: ask for a tweet, get three takes, keep the best one. Editing and scheduling happen right where you picked it.

    126 charsUse this
    Try again

    Describe the tweet you want…

    @bluobird_dev0/2000

    AI drafts left this month: 487 of 500 · each prompt uses one, posted or not.

    Compose — AI mode: your prompt, three versions to pick from, and the box ready for the next prompt
    Post
    dry-run
    Tue 10 Nov, 09:00

    Weekly changelog: calendar view, Android fixes, faster queue.

    Waiting: anti-spam pacing (30 posts/hour) — retries 14:32

    queued
    Post
    ASAP
    Tue 10 Nov, 09:00
    @bluobird_dev
    queued
    Post

    Weekly changelog: calendar view, Android fixes, faster queue.

    Waiting: anti-spam pacing (30 posts/hour) — retries 14:32

    ASAP@bluobird_studio
    Stopped by you, or skipped by a workflow (for example a duplicate the AI could not avoid — the reason is on the row).
    Run now · Delete
    Cancel
    Delete

    Three things we learned running 10,000 scheduled posts (thread) 🧵

    scheduled
    Post
    dry-run
    Tue 10 Nov, 09:00

    Weekly changelog: calendar view, Android fixes, faster queue.

    Waiting: anti-spam pacing (30 posts/hour) — retries 14:32

    queued
    Post
    ASAP
    scheduled
    Post
    dry-run

    Three things we learned running 10,000 scheduled posts (thread) 🧵

    Tue 10 Nov, 09:00@bluobird_dev
    queued
    Post

    Weekly changelog: calendar view, Android fixes, faster queue.

    Waiting: anti-spam pacing (30 posts/hour) — retries 14:32

    ASAP@bluobird_studio
    Help desk
    15:00
    TimezoneEurope/London
    Randomize posting timeiAdds a random delay of up to 60 minutes after each run time.
    Max actions / runi3
    Step 2 of 5
    New workflow — the schedule step
    DatasetLoop over the rows of one of your datasets.
    DatasetProduct catalog Q4 · 25 rows
    Pick rowsiLinear (oldest first)
    Limit to N rows per runi0
    Only rows where All match:
    postedequalsfalse
    Step 3 of 5
    New workflow — the source step with a dataset selected
    AI promptWrite one practical tip about scheduling posts on X. Mention ${record.product} once, keep it under 240 characters, no hashtags.
    Max lengthi280

    X allows 280; longer needs X Premium on the posting account.

    Search the webSource link(s)Skip duplicates
    Media from:Media libraryDataset fields
    API callsInsert row value
    Step 4 of 5
    New workflow — the compose step for an AI-written post
    On
    Dry-runi

    Simulate every action without posting. Turn off to go live.

    On
    Launch workflow
    New workflow — the last step
    Run now
    Edit
    Logs
    Duplicate
    Delete
    Active
    Live
    3/run
    ScheduleDaily at 15:00Next runToday, 15:00Last run22 hours agoTimezoneEurope/London
    ActiveRun nowLogs
    Workflows — one workflow card with its menu open
    Product catalog Q4
    25 rows
    4 fields
    #Product(product)Tagline(tagline)Hero image(image)Posted(posted)
    1Ultra-wide monitorEverything you need, on one screen.yes
    2Desk mat XLSoft on wrists, kind to mice.—
    3Mechanical keyboardQuiet switches, loud productivity.—
    Datasets — a dataset with an image field and a cell being edited. The table scrolls sideways on narrow screens
    Billing — usage this month
    Choose Free
    Basic
    Current
    $9.99 / month
    • 150 operations / month
    • 2 X accounts
    • 10 workflows
    • 5 datasets
    • 50 AI drafts / month without your own key
    • 100 AI web searches / month
    Current plan
    Recommended
    Pro
    $49.99 / month
    • 750 operations / month
    • 20 X accounts
    • Unlimited workflows
    • 10 datasets
    • 500 AI drafts / month without your own key
    • 500 AI web searches / month
    Choose Pro
    Billing — choosing a plan