# Rheos in Claude, ChatGPT & Cursor
Source: https://docs.rheos.app/developers/mcp/overview
Connect Rheos to Claude, ChatGPT, Claude Code or Cursor via MCP to brainstorm, draft, schedule and publish social posts from your AI chat.
**Work in progress** — this connector is being rolled out gradually. It isn't public yet, so the install steps below only work for invited accounts. Email **[hello@rheos.app](mailto:hello@rheos.app)** if you'd like early access.
Rheos plugs into Claude, ChatGPT, Cursor, and any other tool that speaks the [Model Context Protocol](https://modelcontextprotocol.io) standard. Once connected, your chat assistant can:
* Brainstorm post ideas in your brand voice
* Draft, edit and schedule posts across Instagram, LinkedIn, X and more
* Pull your brand identity, audiences, pillars and themes — anything in Rheos
* Generate images and save them straight to your asset library — all from chat
It's the same workflow as the Rheos dashboard, just driven by conversation.
## What you can do with it
"Give me 5 LinkedIn post ideas for our Q3 launch" — and the ideas come back in your tone, using your brand's current audiences and themes.
Generate, attach an image, pick a date, publish — all from one chat. No need to open the dashboard.
On Business or Team plans, "Draft for our nursery brand" works as expected.
Anything you create in chat shows up instantly in the Rheos dashboard for review.
## Which AI chat tool?
We currently support three install paths:
The easiest path. Add Rheos as a Custom Connector in Claude's settings — no install, just sign in.
Add as a custom connector in ChatGPT (rolling out — needs custom connector access).
For terminal-based workflows. Paste config into `~/.claude/settings.json`.
Other clients (Cursor, Windsurf, Zed, Continue, Goose) work the same way — see the [setup guide](/developers/mcp/setup) for the universal `mcp-remote` pattern.
## What's coming
* Public rollout once we've stabilised auth + rate limits
* One-click "Install in Claude" / "Install in ChatGPT" button in the Rheos dashboard
* Deeper analytics + reporting tools so you can ask "how did last week's posts do?"
* Workflow templates — drop a URL in, get a week of posts back
## Next steps
Step-by-step setup for Claude, ChatGPT, Claude Code and others.
Example chats — drafting from a URL, planning a week of content, more.
Every tool the connector exposes (technical reference).
# Install Rheos in your AI chat
Source: https://docs.rheos.app/developers/mcp/setup
Step-by-step setup for the Rheos MCP connector in Claude, ChatGPT, Claude Code, Cursor and other MCP clients — covering OAuth login and API keys.
**Work in progress** — early access only. Public rollout coming soon. Email **[hello@rheos.app](mailto:hello@rheos.app)** if you'd like an invite.
The Rheos connector lives at:
```
https://mcp.rheos.app
```
Two ways to sign in:
* **Log in with Rheos** (OAuth) — used by chat tools like **claude.ai** and **ChatGPT**. You select "Connect", get bounced to rheos.app to approve, and you're done. No keys to copy.
* **API key** — used by local tools like **Claude Code**, **Cursor**, and other CLI clients. Generate a key in **Settings → MCP**, paste it into the client's config.
Pick whichever your tool supports. Most chat tools use OAuth; most local tools use API keys.
## Generate an API key
Go to [dashboard.rheos.app/settings/mcp](https://dashboard.rheos.app/settings/mcp).
Select **Generate new key**, give it a label (e.g. "Cursor laptop"), and copy the secret. You'll only see it once.
Treat the key like a password. Anyone with it can act as you in Rheos. Revoke unused keys from the same screen.
## Client setup
Claude.ai uses OAuth — no API key needed.
In claude.ai, select your avatar → **Settings** → **Connectors** → **Add custom connector**.
* **Name:** `Rheos`
* **URL:** `https://mcp.rheos.app`
Select **Add**.
Claude.ai will redirect you to `rheos.app` to sign in and approve. After approval you'll be bounced back with the connection active.
Start a new chat and ask: *"What Rheos brands do I have?"* Claude should call `rheos_list_brands` and return your brands.
Claude Code can connect either directly (HTTP transport) or through the `mcp-remote` shim. Direct HTTP is preferred where the client supports it.
**Option A — direct HTTP** (`~/.claude/settings.json`):
```json theme={null}
{
"mcpServers": {
"rheos": {
"type": "http",
"url": "https://mcp.rheos.app",
"headers": {
"Authorization": "Bearer rk_live_your_api_key_here"
}
}
}
}
```
**Option B — via `mcp-remote`** (works everywhere `npx` does):
```json theme={null}
{
"mcpServers": {
"rheos": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.rheos.app",
"--header",
"Authorization: Bearer rk_live_your_api_key_here"
]
}
}
}
```
Restart Claude Code (or run `/mcp` to reload). You should see `rheos` listed under connected servers.
Edit `~/.cursor/mcp.json` (create it if it doesn't exist):
```json theme={null}
{
"mcpServers": {
"rheos": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.rheos.app",
"--header",
"Authorization: Bearer rk_live_your_api_key_here"
]
}
}
}
```
Restart Cursor. The Rheos tools will appear in the MCP panel.
ChatGPT's custom connector framework is rolling out gradually. If you don't see the option in your account, fall back to claude.ai or Claude Code in the meantime.
In ChatGPT, go to **Settings** → **Connectors** → **Create**.
* **Name:** `Rheos`
* **MCP Server URL:** `https://mcp.rheos.app`
* **Authentication:** OAuth
Save.
ChatGPT will open a `rheos.app` window for sign-in and consent.
Any MCP client that supports the Streamable HTTP transport will work. The
pattern is always the same:
```bash theme={null}
npx -y mcp-remote https://mcp.rheos.app \
--header "Authorization: Bearer rk_live_your_api_key_here"
```
Drop that command into the client's MCP server config and you're done. The
`mcp-remote` package handles the HTTP-to-stdio bridge.
## Verifying the connection
Once connected, any of these prompts should produce a tool call:
* *"List my Rheos brands."* → `rheos_list_brands`
* *"Load the context for my first Rheos brand."* → `rheos_get_context`
If the client returns "no tools available", check:
1. The Authorization header is exact — `Bearer ` prefix included, no trailing whitespace.
2. The key hasn't been revoked. Re-check **Settings → MCP** in the dashboard.
3. Your client supports the Streamable HTTP transport (most do as of 2026).
Never commit API keys to git. Use environment variables, a secret manager, or the client's native credential store.
## Rotating or revoking keys
Open **Settings → MCP** in the Rheos dashboard. Each key shows its last-used
timestamp. Select **Revoke** to invalidate it immediately — any client using
that key will start returning 401 within seconds.
To rotate, generate a new key first, update your client config, then revoke
the old one.
# MCP tools reference
Source: https://docs.rheos.app/developers/mcp/tools
Reference for every tool the Rheos MCP server exposes — posts, brands, formulas, images, video, scheduling and publishing — with parameters and payloads.
**Work in progress** — connector not yet publicly available. Email **[hello@rheos.app](mailto:hello@rheos.app)** for early access.
This is the full technical reference for everything the Rheos connector can do. If you're an end user, you probably don't need this — your AI chat picks the right tool automatically. It's useful if you're building agent workflows or want to know exactly what's possible.
This page lists every tool the Rheos MCP server registers, with the parameters
your assistant needs to know about. Each tool returns a JSON payload — the
shapes shown below are summaries; call the tool and inspect the response for
the full schema.
Almost every tool takes a `brand_id` (short ID like `default_f7634e61`). Start any session with `rheos_list_brands` to discover valid IDs, or call `rheos_get_context` to grab brand identity, audiences, themes and reference data in one call.
## Posts
CRUD for posts, pillars, campaigns and other Rheos records. `resource_type`
selects the collection.
### `rheos_list`
List records of a given type for the user or brand.
* **`resource_type`** — `"posts" | "pillars" | "campaigns" | "brands" | ...`
* **`brand_id`** *(optional)* — filter to one brand
* **`status`** *(optional)* — e.g. `"draft"`, `"idea"`, `"scheduled"`, `"published"`
* **`limit`** *(optional)*
* **`include_deleted`** *(optional)* — set to `true` to include soft-deleted assets; defaults to `false`
### `rheos_get`
Fetch a single record by id.
* **`resource_type`** — same enum as `rheos_list`
* **`id`** — record id
Soft-deleted assets are not returned.
### `rheos_create`
Create a record. For `resource_type="posts"` this is the canonical drafting
endpoint — pass `brand_id`, `textBody`, and any optional formula fields
(`intent`, `hookId`, `ctaId`) you want to store.
```json theme={null}
{
"resource_type": "posts",
"brand_id": "default_f7634e61",
"fields": {
"textBody": "We just shipped...",
"intent": "announce",
"hookId": "before-after",
"ctaId": "learn-more",
"channels": ["linkedin", "instagram"],
"assetIds": ["asset_abc123"]
}
}
```
### `rheos_update`
Patch fields on an existing record. Use this after `rheos_accept_idea` to
write the post body, or to edit a draft before scheduling.
* **`resource_type`**, **`id`**, **`fields`** — partial update object
## Ideation
Formula-aware idea generation. Ideas live as posts with `status="idea"`;
accepting one flips it to `status="draft"`.
### `rheos_brainstorm`
Calls the Genkit `postBrainstormFlow`. Returns a list of formula-aware ideas
suitable for picking one and writing the body yourself with `rheos_create`.
* **`brand_id`** *(required)*
* **`topic`** *(optional)* — seed concept
* **`count`** *(optional)* — defaults to a small batch
### `rheos_generate_ideas`
Persists a batch of new ideas (posts with `status="idea"`) and returns their
`idea_ids`. Use when you want the user to pick from a queue rather than
inline-brainstorm.
* **`brand_id`** *(required)*
* **`count`**, **`intent`**, **`hook_type`**, **`audience_name`**, **`theme_title`** *(optional)* — bias the set toward a formula slot, audience or theme
### `rheos_accept_idea`
Flips one idea from `status="idea"` to `status="draft"`. After accepting,
write the body in the brand voice and save it via `rheos_update`.
* **`idea_id`** *(required)*
### `rheos_refresh_idea`
Regenerates a single idea in place — keeps the id, replaces the content.
* **`idea_id`** *(required)*
## Publishing
Move a draft to scheduled or live across one or more channels.
### `rheos_schedule_post`
Queue a post for a future time. Status moves to `scheduled`; the backend
cron picks it up at `scheduled_at`. The post publishes to the channels already
set on the draft.
* **`post_id`** *(required)*
* **`scheduled_at`** — ISO 8601 timestamp
If any channel set on the post has no connected social account, the call is
rejected before scheduling:
```json theme={null}
{ "error": "channel_not_connected", "channels": ["twitter"] }
```
Call `rheos_get_platforms` (or `rheos_get_context`) to see which channels are
connected. Use `rheos_connect_platform` to connect any missing channel before
retrying.
This guard fails open by design. If connectedness cannot be determined — for example, because the post record is missing, the post has no brand attribution, or a read fails — the post still schedules. It blocks only when a channel is definitely not connected.
### `rheos_publish_post`
Publish immediately to the channels set on the draft. Returns per-channel
`publishResults` — inspect `results[].error` if any channel fails.
* **`post_id`** *(required)*
### `rheos_cancel_scheduled`
Pull a scheduled post back to draft so you can edit or delete it.
* **`post_id`** *(required)*
### `rheos_connect_platform`
Returns a dashboard OAuth deep-link the user can open in a browser to
connect Instagram, LinkedIn, Facebook, etc.
* **`channel`** — `"instagram" | "linkedin" | "facebook" | ...`
* **`brand_id`** *(required)*
## Brands & identity
Read and update the brand identity document, the sources that feed it, and
the metadata stored on the brand record.
### `rheos_list_brands`
List every brand in the org (both business and personal). Call this **first**
in any drafting flow — every subsequent tool needs a `brand_id`.
### `rheos_get_context`
Bundle call: returns the brand record, identity document, audiences, themes,
formulas and reference data in one response. Audiences come from audience
boxes or the content strategy; themes come from the content strategy. Legacy
pillars are the last-resort fallback. The `audiences` and `themes` fields remain
arrays of strings, with empty and whitespace-only values omitted.
* **`brand_id`** *(required)*
### `rheos_view_brand_document`
Read the freeform markdown identity document for a brand — the synthesised
output of all sources.
* **`brand_id`** *(required)*
* **`version`** *(optional)* — pick an older version
### `rheos_view_brand_sources`
List every source attached to the brand (website scrape, AI import, uploaded
docs) with status and timestamps.
* **`brand_id`** *(required)*
### `rheos_view_source`
Read the full content of a single source.
* **`brand_id`**, **`source_id`**
### `rheos_update_ai_import`
Write or replace the AI-import source — the one external write path into the
brand's source set. Personal brands use this instead of `rheos_scrape_website`.
* **`brand_id`** *(required)*
* **`content`** — markdown body
### `rheos_scrape_website`
Scrape a URL via Firecrawl (Cheerio fallback) and populate the brand's
website source. Business brands only.
* **`brand_id`** *(required)*
* **`url`** *(required)*
### `rheos_trigger_identity_doc_flow`
Synthesise all active sources into the brand identity document. Call after
populating sources via `rheos_update_ai_import` or `rheos_scrape_website`.
* **`brand_id`** *(required)*
* **`regenerate`** *(optional)* — force a fresh synthesis even if cached
### `rheos_update_brand_metadata`
Set structured fields on the brand record (name, tone, audience labels, etc.)
without re-running the full identity flow.
* **`brand_id`** *(required)*
* **`fields`** — partial metadata patch
## Images
Generate, iterate, upload and save image assets. Generated images return
inline as base64; saved assets get an `asset_id` you pass into `rheos_create`.
Asset read responses omit the raw `embedding` vector. Soft-deleted assets are excluded by default; set `include_deleted: true` on `rheos_list` when you need to include them.
### `rheos_image_generate`
Generate or iterate an image inside an ephemeral session. Pass
`iterate_from_generation_id` to refine instead of starting fresh.
* **`brand_id`** *(required)*
* **`prompt`** *(required)*
* **`session_id`** *(optional)* — resume an existing session
* **`iterate_from_generation_id`** *(optional)*
### `rheos_image_save_asset`
Promote a generation into the brand's asset library so it can be attached
to a post.
* **`session_id`**, **`generation_id`** — from the previous `rheos_image_generate` call
### `rheos_image_get_session`
Read back every image generated in a session — the options themselves, their
prompts, and which ones were kept. Use it when the generation response has
scrolled out of the conversation: without it the only way to see those options
again is to generate them again.
* **`session_id`** *(required)* — from `rheos_image_generate`
* **`limit`** *(optional)* — newest first, default 20, max 50
Each generation returns `generation_id`, `image_url`, `prompt`, `status` and
`saved_asset_id` (set once promoted). The response also carries a `markdown`
field of image links, so an assistant whose interface drops inline images can
still show the options.
### `rheos_upload_image`
Store an externally-generated image (PNG / JPEG / WebP, ≤10 MB) as a Rheos
asset. Returns an `asset_id`.
* **`brand_id`** *(required)*
* **`image_base64`** or **`image_url`**
* **`alt_text`** *(optional)*
### `rheos_upload_video`
Store a video (MP4 / MOV / WebM, ≤25 MB) as a Rheos asset. Returns an
`asset_id` you pass to `rheos_create` as `assetIds`. The format is identified
from the file's own bytes, not its extension or the server's content type.
* **`brand_id`** *(required)*
* **`video_base64`** or **`video_url`** — exactly one
* **`alt_text`**, **`filename`**, **`source_note`** *(optional)*
### `rheos_draft_post_from_image`
One-shot: upload an image **and** draft a caption + post in a single call.
Preferred over `rheos_upload_image` + `rheos_create` when the user already
has a topic in mind.
* **`brand_id`** *(required)*
* **`image_base64`** or **`image_url`**
* **`topic`** *(optional)*
* **`hook_type`** *(optional)* — formula hook label
## Video
Session-based video editing: get the current scenes, edit them, render via
AWS Lambda, then have Gemini review the MP4.
The video tools below are not yet on the customer tool surface — they are documented here because the API is stable and the group is next in line to open up. To get an existing video file into Rheos today, use `rheos_upload_video`.
### `rheos_video_get_session`
Fetch the current scenes and metadata for a video session.
* **`session_id`** *(required)*
### `rheos_video_update_scenes`
Apply scene-level edits (text layers, timing, asset swaps). For AI-suggested
edits prefer `rheos_video_apply_suggestions` — it preserves layer ids.
* **`session_id`** *(required)*
* **`scenes`** — full scene array
### `rheos_video_render`
Kick off the Lambda render. Returns `render_id` + `bucket_name` — poll
progress with `rheos_video_render_progress` every 3–5 seconds.
* **`session_id`** *(required)*
### `rheos_video_render_progress`
Poll a render. Returns `done`, `progress`, and (when complete) the MP4 URL.
* **`render_id`**, **`bucket_name`**
### `rheos_video_review`
Send the rendered MP4 to Gemini for critique. Returns text suggestions you
can feed back into `rheos_video_apply_suggestions`.
* **`session_id`** *(required)*
### `rheos_video_apply_suggestions`
Patch scenes from a review's suggestions. Preserves layer ids so animations
don't reset. After applying, re-render with `rheos_video_render`.
* **`session_id`**, **`suggestions`** — from `rheos_video_review`
## Search
### `rheos_search_posts`
Substring search over a brand's posts (drafts + scheduled + published).
* **`brand_id`** *(required)*
* **`query`** *(required)*
### `rheos_search_assets`
Basic text matching against the asset library (filename, alt text, prompt).
Soft-deleted assets are excluded. Every matching result includes its own
`score`.
* **`brand_id`** *(required)*
* **`query`** *(required)*
When nothing matches, the tool returns:
```json theme={null}
{
"query": "product shots",
"results": [],
"error": "no_assets_matched",
"next_step": "No assets matched; broaden the query or generate an image instead."
}
```
This is a real no-match result, not a fallback asset list. Broaden the query or
generate an image instead of retrying the same query unchanged.
## Reference
Small read-only helpers split out so they don't bloat `rheos_get_context`.
### `rheos_get_capabilities`
Report which capabilities are usable right now — generation, uploads, video,
publishing and analytics — before committing to a workflow. Cheap, read-only,
and makes no outbound calls.
* **`brand_id`** *(optional)* — publishing readiness is brand-scoped; defaults to the org's primary brand
Each capability returns `granted` (is it on your tool surface), `healthy` (is
it usable this moment) and a plain-language `reason` when either is false —
for example no connected channel, or no credits remaining. Call it first and
you avoid discovering a limit by hitting an error mid-task.
### `rheos_get_formulas`
Return the static formula tree: 8 intents × 35+ hooks × 10 CTAs.
Retired on 22 Aug 2026 and no longer on the customer tool surface. The assistant you are already talking to writes the post; a fixed formula tree only competed with it for attention. Nothing replaces it — describe the post you want in your own words.
### `rheos_list_audiences`
Return the brand's audiences with the source tier that answered the call.
* **`brand_id`** *(required)*
```json theme={null}
{
"audiences": [
{ "name": "Founders", "description": "...", "pains": ["..."], "desires": ["..."] }
],
"source": "audience_boxes"
}
```
`name` is required on each audience. `description`, `pains` and `desires` are
optional. `source` is `"audience_boxes" | "content_strategy" |
"legacy_pillars" | "none"`. It identifies current audience boxes, the content
strategy, the legacy pillars fallback, or no data.
**Breaking change (19 Aug 2026):** `audiences` entries were previously plain strings and are now objects (`name` plus optional detail). The `source` vocabulary also changed — it used to be `"brand_pillars" | "org_pillars"`; neither value is emitted any more.
### `rheos_list_themes`
Return the brand's themes with the source tier that answered the call.
* **`brand_id`** *(required)*
```json theme={null}
{
"themes": [
{ "title": "Operations", "description": "...", "icon": "..." }
],
"source": "content_strategy"
}
```
`title` is required on each theme. `description` and `icon` are optional.
`source` is `"content_strategy" | "legacy_pillars" | "none"`. It identifies
the content strategy, the legacy pillars fallback, or no data.
**Breaking change (19 Aug 2026):** `themes` entries were previously plain strings and are now objects (`title` plus optional detail). The `source` vocabulary also changed — it used to be `"brand_pillars" | "org_pillars"`; neither value is emitted any more.
### `rheos_get_platforms`
List connected social platforms for the user with token status and expiry.
### `rheos_get_credits`
Return the user's current credit balance and the credit cost of common
operations.
Not on the customer tool surface. Credit reporting is being reworked; ask about capability availability with `rheos_get_capabilities` instead, which reports whether image generation is usable right now.
### `rheos_fetch_docs`
Fetch a page from `rheos.app/docs` as markdown — useful for grounding an
assistant in product help articles. Pass no URL to get the docs index.
* **`url`** *(optional)* — must be on `rheos.app`
## Conventions
* **Errors** include `error` and may include `hint`, `next_step`, or
tool-specific fields such as `channels`. When present, `hint` tells the caller
which tool to invoke next (e.g. *"Call `rheos_list_brands` first"*).
* **All timestamps** are ISO 8601 in UTC.
* **`brand_id`** for personal brands is the user's `user_id`; for business
brands it's the short id from `rheos_list_brands`.
* **Credits** are deducted on tool success, not invocation. A failed
`rheos_image_generate` won't charge you.
# MCP workflow recipes
Source: https://docs.rheos.app/developers/mcp/workflows
End-to-end recipes for driving Rheos from your AI chat — drafting from a URL, planning a week of content, generating images and rendering video.
**Work in progress** — connector not yet publicly available. Email **[hello@rheos.app](mailto:hello@rheos.app)** for early access.
Concrete patterns for what Rheos-in-your-chat looks like. Each one is a natural-language prompt — your assistant figures out which tools to call. Use them as inspiration for your own workflows.
Every workflow starts the same way: `rheos_list_brands` to discover the brand, then `rheos_get_context` to load identity, current audiences and themes, plus reference data. We omit those two calls from the recipes below for brevity — assume they happen first.
## 1. Draft a post from a URL
**Goal:** *"Read this article and write a LinkedIn post about it in my brand voice."*
Use `rheos_scrape_website` if it's the brand's own site, or have the assistant fetch the page text directly (most clients can fetch HTTP). For an article on rheos.app, `rheos_fetch_docs` returns clean markdown.
If they help this post, pick an `intent`, `hookId` and `ctaId` from the formula data already loaded via `rheos_get_context`. These fields are optional.
The assistant writes the post text itself — no tool call needed. Brand voice comes from the identity document loaded in step 0.
Call `rheos_create` with `resource_type="posts"`:
```json theme={null}
{
"resource_type": "posts",
"brand_id": "default_f7634e61",
"fields": {
"textBody": "Three lessons from how Stripe handled...",
"intent": "educate",
"hookId": "number-stat",
"ctaId": "learn-more",
"channels": ["linkedin"]
}
}
```
The post is now visible in the dashboard. If the user is happy, call `rheos_schedule_post` with an ISO timestamp, or `rheos_publish_post` to go out immediately. The post's channel must be connected first; otherwise scheduling is rejected with `channel_not_connected`.
## 2. One-shot post from an image
**Goal:** *"Here's a photo from yesterday's event — draft an Instagram post."*
The fast path is `rheos_draft_post_from_image`, which uploads the image and
drafts a caption in a single call:
```json theme={null}
{
"brand_id": "default_f7634e61",
"image_base64": "iVBORw0KGgoAAAANS...",
"topic": "team off-site, Friday",
"hook_type": "Behind the Scenes"
}
```
The response includes the new `post_id` and `asset_id`. If the caption
needs tweaking, follow up with `rheos_update`. Then schedule or publish as in
workflow 1.
Use `rheos_upload_image` instead when you want to stage the image for later — for example, uploading a batch of product shots before deciding which one to pair with which post.
## 3. Schedule a week of content
**Goal:** *"Plan five posts for next week — Mon/Wed/Fri on LinkedIn, Tue/Thu on Instagram."*
Call `rheos_generate_ideas` with `count: 5` and any formula bias the user supplied. Returns five `idea_ids` as posts with `status="idea"`.
```json theme={null}
{
"brand_id": "default_f7634e61",
"count": 5
}
```
Show the ideas to the user. If they don't like one, call `rheos_refresh_idea` to regenerate it in place. If they want a totally different angle, call `rheos_generate_ideas` again with a different formula bias.
For each idea the user picks, call `rheos_accept_idea` — this flips the status to `draft`.
For each accepted idea, the assistant writes the full post body in brand voice, then `rheos_update` saves it:
```json theme={null}
{
"resource_type": "posts",
"id": "post_abc123",
"fields": {
"textBody": "...",
"channels": ["linkedin"]
}
}
```
Call `rheos_schedule_post` per post with the chosen `scheduled_at` ISO timestamp.
```json theme={null}
{
"post_id": "post_abc123",
"scheduled_at": "2026-05-20T09:00:00Z"
}
```
Confirm each post's channel is connected first with `rheos_get_platforms` or
`rheos_get_context`. A definite missing connection rejects the call with
`channel_not_connected`.
The dashboard calendar will show the full week — the user can drag posts
around there too, or come back to the MCP with *"cancel Wednesday's post"*
and the assistant will call `rheos_cancel_scheduled`.
## 4. Update the brand identity from a new website
**Goal:** *"We just relaunched our website — re-import the brand from there."*
```json theme={null}
{
"brand_id": "default_f7634e61",
"url": "https://acme.com"
}
```
`rheos_scrape_website` populates the brand's website source and versions the old one.
```json theme={null}
{
"brand_id": "default_f7634e61",
"regenerate": true
}
```
`rheos_trigger_identity_doc_flow` reads every active source and writes a fresh identity document. Pass `regenerate: true` to bypass the cache.
Call `rheos_view_brand_document` to read the new markdown. If metadata fields look off (tone, audiences), patch them with `rheos_update_brand_metadata` instead of re-running the full flow.
Personal brands don't have a website source — use `rheos_update_ai_import` to feed in markdown directly instead of `rheos_scrape_website`.
## 5. Produce and review a short-form video
**Goal:** *"Here's a draft video session — render it, get AI feedback, and apply the fixes."*
This is the video-pipeline loop. Sessions are created in the dashboard; the
MCP picks up from "session exists, scenes drafted":
`rheos_video_get_session` returns the current scene list.
Use `rheos_video_update_scenes` to make changes — but only for explicit
user edits. AI-suggested edits should go through
`rheos_video_apply_suggestions` (preserves layer ids).
`rheos_video_render` kicks off Lambda. Returns `render_id` and `bucket_name`.
```json theme={null}
{ "session_id": "vid_xyz" }
```
Call `rheos_video_render_progress` every 3–5 seconds. Typical render is
30–90 s for a 15-second clip. When `done: true`, the response includes
the MP4 URL.
`rheos_video_review` sends the MP4 to Gemini and returns text
suggestions ("tighten the cut at 0:04, the hook subtitle reads after the
visual change").
`rheos_video_apply_suggestions` patches the scenes from the review,
then loop back to step 3.
Three iterations is usually enough. Once the user signs off, the final MP4
can be attached to a post via `rheos_create` (`assetIds`) or published
directly through the video session's own publish flow in the dashboard.
## 6. Connect a new social channel
**Goal:** *"Connect this brand's Instagram account."*
OAuth has to happen in a browser — the MCP can't complete it directly. The
flow is:
Instagram, Facebook, LinkedIn, X, Bluesky and Pinterest can be connected today. TikTok, Threads and YouTube Shorts are still pending platform approval — `rheos_get_platforms` reports them as unavailable with the reason, and attempting to schedule for one is rejected with `channel_not_connected`.
`rheos_connect_platform` with `channel: "instagram"` and the `brand_id`.
Returns a `dashboard.rheos.app/settings/integrations?...` URL the user opens to
complete OAuth (the response status is `url_handoff_required` — it does **not** mean
the platform is connected yet).
The assistant tells the user to open the URL. They sign in to the
platform and approve.
After approval, call `rheos_get_platforms` (or `rheos_get_context`) to
confirm the channel is now connected. The new platform is then available
as a `channels` value on `rheos_create`, `rheos_schedule_post`, and
`rheos_publish_post`. Until it is connected, `rheos_schedule_post` rejects
a post for that channel with `channel_not_connected`.
## Tips
* **Start every session with `rheos_list_brands` + `rheos_get_context`.** It seeds the assistant with brand voice, current audiences and themes, plus reference data — everything else gets cheaper after that.
* **Prefer one-shot tools.** `rheos_draft_post_from_image` beats `rheos_upload_image` + `rheos_create`. `rheos_get_context` beats five separate reference calls.
* **Read the `next_step` hints.** When a Rheos tool response includes `next_step`, it nudges the caller toward the right follow-up tool. The assistant should treat it as a strong signal.
* **Failed generations don't charge.** A failed `rheos_image_generate` call refunds automatically, so a retry costs you the same as getting it right first time.
# Plans and pricing
Source: https://docs.rheos.app/help/billing/plans
Compare Rheos plans: Social Media Manager at £55/month and Marketing Team at £145/month. See seats, businesses, usage limits and the 7-day trial.
Rheos has two plans. Both create, schedule and publish to the same networks, and both include your own personal profile. Marketing Team adds more businesses, team seats, the full search-visibility tools and bulk creation. Prices include VAT, so £55 is what you pay.
## Compare plans
| | **Social Media Manager** | **Marketing Team** |
| ------------------------------------- | ------------------------ | ------------------ |
| **Monthly** | £55 / month | £145 / month |
| **Annual** | £550 / year | £1,450 / year |
| **Businesses you can manage** | 2 | 5 |
| **Your own personal profile** | Included | Included |
| **Team members** | 1 | 3 |
| **Content plan** | 1 month | 3 months+ |
| **AI search score** | Included | Included |
| **Tracked prompts + competitors** | Preview | Included |
| **Weekly findings + fixes** | — | Included |
| **History + export** | — | Included |
| **Create weeks of content in one go** | — | Included |
Platforms are not a paywall in Rheos — both plans publish to exactly the same networks. Which accounts you can connect is covered in [Connect your accounts](/help/publishing/connect-socials). Threads, TikTok and YouTube appear in the composer's platform strip but cannot be connected yet; they are coming soon.
Neither plan adds a Rheos watermark or hashtag to what you publish.
The full feature-by-feature comparison is on [rheos.app/pricing](https://rheos.app/pricing), and the workspace side of Marketing Team is covered in [Marketing Team plan](/help/billing/team-plan).
## Usage limits
There is no credit balance in Rheos to buy or top up, and no meter in the app counting one down. What a plan carries instead are fair-use limits, and two of them you can actually run into. Publishing has a weekly ceiling — the Home page shows a small used-of-limit pill, and once you reach it scheduling and publishing are refused until the week rolls over. AI image generation draws on a monthly allowance — before you run a generation the image panel prices it in credits, on the **Cost** line and as a number on the generate button, but there is no balance shown to weigh it against; when the allowance can no longer cover it that button is replaced by a link to billing and nothing is generated. Nothing can be bought to lift either limit mid-month, so the only lever is the plan above. Writing and editing text with AI does not draw on the image allowance. If you think you are hitting a limit you should not be, email **[support@rheos.app](mailto:support@rheos.app)**.
## Your first 7 days are free
Starting on a paid plan opens a 7-day free trial. Your card is collected up front and nothing is charged for those seven days.
On [rheos.app/pricing](https://rheos.app/pricing), pick **Monthly** or **Annual**, then select **Get started**.
Sign up, then work through onboarding.
**Continue to Payment** hands you to Stripe Checkout. A card is required to start the trial. £0 is taken today.
Your first payment is taken when the seven days are up, unless you cancel before then.
Three things worth knowing:
* **One trial per account.** If you have ever had a Rheos subscription, including one you cancelled, checkout charges you immediately instead of opening a trial.
* **A claim link that gives you a free first month replaces the trial.** The free month *is* the trial, so the two do not stack. A promo code typed into Stripe Checkout is a different thing and does not affect the trial either way — and when a claim link has already applied its discount, Checkout does not offer the promo-code field at all.
* **Leave the card on file.** If the card is removed mid-trial, the subscription cancels rather than retrying payment.
## Annual billing
Annual is billed as ten months, so two months are free: £550 a year for Social Media Manager, £1,450 a year for Marketing Team.
Pick **Annual** before you check out, or switch later. If you already pay monthly, **Settings → Billing** shows a **Save \~17% with annual** link under **Active plan**. Selecting it moves your existing subscription onto the annual price straight away, and Stripe prorates what you have already paid for.
## Before you subscribe
An account with no active subscription sits on Free: one business brand plus your personal profile. Free is not a plan you pick. It is where a new account starts before it subscribes, and where it returns if a subscription lapses. You cannot pick it from the billing page.
## What Settings → Billing shows
Your plan name, subscription status, and the renewal or trial-end date, with **Manage**, **Payment**, **Invoices** and **Cancel plan** controls.
Your last three payments. **All invoices** opens the full history in Stripe.
Both plans side by side with a **Monthly** / **Annual** toggle. Your current plan shows a **Current plan** pill; the other shows **Upgrade**.
There is no **Change plan** button in Rheos. The three sections above are what the page offers.
## Moving between plans
Moving up from Social Media Manager to Marketing Team does not work from the **Upgrade** button. That button opens a fresh Stripe Checkout session rather than editing the subscription you already have, and checkout refuses to open a second subscription for a customer who already has one. The attempt fails with **Failed to start checkout. Please try again.** This is a known problem.
Use **Manage** instead. It opens the Stripe billing portal, where you can change plan and Stripe applies its own proration.
Moving *down* does work from that button. On Marketing Team, selecting **Upgrade** in the Social Media Manager column opens the Stripe billing portal rather than checkout, and the change goes through from there. The column you are not on is always labelled **Upgrade**, even when selecting it moves you down.
**Upgrade** also works as expected for an account that has no subscription yet.
## Cancelling
Select **Cancel plan** under **Active plan**. It opens the Stripe billing portal, where you confirm. If your subscription is set to end at the end of the period you have paid for, **Active plan** shows a `Cancels` line with that date. Once it ends, the account falls back to Free.
## Older plans and prices
Existing subscribers keep the price their subscription was created at. A price change applies to new checkouts, not to subscriptions already running.
The Personal plan has been retired and is no longer sold. If you are still being billed for one, email **[support@rheos.app](mailto:support@rheos.app)** and we will sort it out.
Questions about billing? Email **[support@rheos.app](mailto:support@rheos.app)**.
# Marketing Team plan
Source: https://docs.rheos.app/help/billing/team-plan
The Rheos Marketing Team plan at £145/month: five businesses in one workspace, up to three seats, and how to invite, remove and switch teammates.
**Marketing Team** costs £145 a month and is the plan for running several businesses, working with colleagues, or both. It covers up to five businesses in one workspace, your own personal profile alongside them, and up to three people.
For prices, the trial, usage limits and the full plan comparison, see [Plans and pricing](/help/billing/plans).
## How a workspace is organised
A Rheos workspace is an organisation. Inside it sit your brands. Everyone you invite joins the organisation, which means they can see and work on every brand in it — there is no way to give someone access to only one brand.
Usage limits belong to the organisation, so a busy brand and a quiet brand draw on the same monthly allowance.
## Who can do what
| Role | What it means |
| ---------- | ---------------------------------------------------------------------------------------- |
| **Owner** | The account that pays. The only role that can invite, revoke invites and remove members. |
| **Member** | Everyone else. Full access to the workspace's brands, posts, calendar and publishing. |
You may occasionally see an **Admin** badge next to a member. It is a label only — it carries no extra permissions, and there is no way to assign it.
There is no review-and-approval workflow. Anyone in the workspace can publish.
## Inviting someone
**Settings → Team** is where you manage people. The row appears on both paid plans, but on Social Media Manager the page shows a locked card — **Team seats come with the Marketing Team plan** with a **View plans** button — rather than the invite form.
The **Invite a team member** card is visible to the workspace owner only. Members see the member list without it.
One email field, one **Send invite** button. There is no role picker and no brand picker — everyone joins as a member.
What happens next depends on whether they already use Rheos. See below.
**Send invite** refuses in three cases: the person is already a member, you have already sent them an invite that is still pending, or you have used every seat on your plan. In each case the reason appears as a notification in the corner of the screen rather than as text under the form, so read it before it fades.
## What the invited person sees
They get an email with a link, and sign up through it.
**No email is sent.** The invite waits for them inside the app, under **Pending invites** in the organisation switcher at the bottom of the sidebar. They select **Join** to accept.
An invite is tied to the exact address you typed. Signing in with a different address and trying to accept is refused. Signing in on its own never adds anyone to a workspace — accepting is always a deliberate action.
Invites expire seven days after you send them. Pending invites are listed under the invite field, and the X next to one revokes it.
## Removing someone, and leaving
* **Owners remove members** from the menu at the end of a member's row: **Remove member**. Owners cannot remove another owner or themselves.
* **Members remove themselves** with **Leave organisation** at the bottom of **Settings → Team**.
Either way, access to the workspace's brands, posts and content ends immediately, and the owner can re-invite the person later. Leaving a workspace does not delete a Rheos account.
The owner cannot leave their own workspace. To hand it over, email **[support@rheos.app](mailto:support@rheos.app)** and we will transfer ownership.
## Switching between brands and workspaces
There are two switchers in the sidebar, and they do different things.
| Control | Where | What it changes |
| --------------------- | --------------------- | ------------------------------------------------------------------------------------------ |
| Brand picker | Top of the sidebar | The active brand inside the current workspace. Posts, calendar and settings all follow it. |
| Organisation switcher | Bottom of the sidebar | The active workspace, when you belong to more than one. |
You can belong to several workspaces at once — your own, plus any client or employer who invited you. Accepting an invite adds a workspace rather than replacing the one you already have.
The organisation switcher only appears once you belong to two or more workspaces, or have an invite waiting. If you only have one and no invites, you will not see it.
## Managing several businesses
Each brand keeps its own identity document, sources, connected social accounts, posts and content calendar. Billing, usage limits and the people you have invited are shared across the whole workspace.
Name brands so nobody publishes to the wrong account — "Acme — Retail" and "Acme — Wholesale" beat two brands both called Acme.
Questions? Email **[support@rheos.app](mailto:support@rheos.app)**.
# Brand sources
Source: https://docs.rheos.app/help/brands/brand-sources
Feed Rheos your website, an export from an AI assistant, or your own files, then build the brand document Rheos reads before writing every post.
A brand's **sources** are the raw material behind its **brand document** — the markdown Rheos reads before it writes anything for that brand. There are three kinds: your website, AI imports, and uploaded documents.
## Where sources live
Open **Brands** in the sidebar, pick a business brand, then select **Sources** in the top bar. The page has three sections — **Website**, **AI imports** and **Documents** — plus a **Connect via MCP** card.
Personal brands keep a compact **Sources** panel on the brand page itself. It has an AI import box and a **Documents** row, but no website — and no **Upload .md** shortcut, so paste your import in rather than loading it from a file.
## Website
The **Website** card shows the URL Rheos has stored for the brand, how many pages it scraped and when. There's no box here to paste a URL: the address comes from your sign-up form, or from the **Basic details** section on the brand page.
* **The first scrape**, when Rheos builds the brand, crawls your site and picks up to ten pages to read — the homepage plus the about, services, products and pricing style pages it finds.
* **Re-scrape** refreshes the source afterwards. It re-fetches the site's main page only and replaces the stored copy, keeping the previous one in version history.
Use **View scraped content** to read exactly what Rheos pulled in.
## AI imports
An AI import is a context dump exported from an AI assistant — not a set of example posts. If you already talk to Claude, ChatGPT, Perplexity or Gemini about your business, this is the fastest way to hand Rheos everything it knows.
Under **Add or update an import**, select **Claude**, **ChatGPT**, **Perplexity** or **Gemini** to open that assistant with the prompt already loaded. **Copy prompt** copies it instead.
The prompt asks the assistant for a company overview, mission and values, target audience, unique value proposition, brand voice, content themes, do's and don'ts, and the owner or founder. A personal brand gets the equivalent about you.
Paste the result into the box on the Sources page. **Upload .md** loads a local `.md`, `.markdown` or `.txt` export straight into the box instead.
Set **From** to the assistant you used, then select **Save import**.
There is one slot per assistant, plus an **Other / unlabelled** slot. Saving to a slot replaces whatever was in it — the old version is kept in that slot's version history, so nothing is lost.
The **Connect via MCP** card wires Rheos into Claude or ChatGPT directly, so your assistant can push brand context over without the copy-paste. You get a review offer whenever it does. See [Rheos in Claude](/developers/mcp/overview).
## Documents
**Upload** takes `.pdf`, `.doc`, `.docx`, `.txt`, `.md` and `.csv` files, several at a time, up to **10MB each**. Tone-of-voice guides, brand do's-and-don'ts, personas, decks — anything you'd hand a new copywriter.
Uploaded files are read by the initial brand analysis when Rheos first builds the brand, and only the first five files (20MB combined) are read. Word files (`.doc` and `.docx`) are skipped. Re-running **Generate brand document** later does not pull uploaded files back in, and files stay marked **Processing** in the list. Anything you can't afford Rheos to miss belongs in an AI import or in the brand document itself.
## Building the brand document from your sources
Rheos never rewrites your brand document on its own. Changing a source flags the document rather than replacing it.
* When a source is newer than the document you'll see **Sources newer than document**.
* On a business brand's Sources page, the top-right button reads **Review updates in chat** once a brand document exists, so the changes are proposed to you before anything is applied. It reads **Generate brand document** when there is no document yet. The brand chat also floats a one-line offer with a **Review** button when a source has moved ahead.
* On a personal brand's **Sources** panel the same button reads **Update brand document** or **Generate brand document**.
Every regeneration snapshots the previous version first, on both brand types.
**Restoring an earlier version is a business-brand feature today.** On a business brand, **Activity** in the top bar lists every change: **Undo** an individual edit, or filter to **Doc versions** and **Restore** a snapshot. A personal brand page has no Activity control — the snapshots are still taken, but there's no self-service way to roll back, so email **[support@rheos.app](mailto:support@rheos.app)** if you need one recovered.
### The first build
When you set a **business** brand up, the brand chat builds the document with you.
* **If a source already exists** — a website, an AI import, or a URL you gave at sign-up — the chat opens with a two-sentence welcome saying it's reading that source, reads it, and only then asks at most three short questions to fill genuine gaps. It never asks for something you already gave it.
* **If there's nothing to read**, it opens with the welcome plus one open question ("Tell me a bit more about your business") and works through the essentials — what the business does, its name, who it's for, the core offering, and tone of voice — in eight questions at most.
A **personal** brand builds differently: there's no brand chat on the page. Save an AI import in the **Sources** panel and select **Generate brand document**, or write the document yourself and refine it with the "Ask AI to update this document…" bar at the bottom of the **Document** panel.
## What sources can't do
Sources teach Rheos **how** you sound, not **what's happening today**. For event-specific posts — a sale, a new hire, a product launch — put the news in the post prompt itself. That's the right place for it.
## Best practice
Set the URL in **Basic details** if you have a site. It's the fastest win.
Run the export prompt in the assistant you already use and save the answer. It fills in everything your website leaves unsaid.
On a business brand it's the **Brand document** section; on a personal brand it's the **Document** panel. Either way, **Edit** lets you correct anything Rheos got wrong, and your edits stick — the document is only rewritten when you ask for it.
# Multiple brands
Source: https://docs.rheos.app/help/brands/multi-brand
Run up to five business brands in one Rheos workspace on the Marketing Team plan. Built for agencies, holding companies and in-house teams.
If you manage more than one company, or your business has sub-brands with different voices, Rheos runs them all from a single workspace.
## Who multi-brand is for
* **Agencies** running social for several clients.
* **Holding companies** with multiple operating brands.
* **Founders** with a personal brand plus more than one business.
* **In-house teams** where different product lines need different voices.
## How many you get
| Plan | Business brands | Teammates |
| -------------------------------- | --------------- | ---------------- |
| Social Media Manager — £55/month | 2 | Just you |
| Marketing Team — £145/month | 5 | 3 seats included |
Everyone also gets their own personal brand on top of that. To go past two business brands, or to bring teammates in, [upgrade to Marketing Team](https://dashboard.rheos.app/settings/billing) — see [plans and billing](/help/billing/plans).
## What's shared, what's separate
| Shared across the workspace | Separate per brand |
| ----------------------------- | ------------------------------------------ |
| Teammates and their access | Brand document |
| Billing and your subscription | Sources — website, AI imports, documents |
| | Offerings, target audiences and guidelines |
| | Style: logos, palette, visual direction |
| | Social connections |
| | Posts, drafts and calendar |
One subscription covers the whole workspace — there's no per-brand billing, so a busy brand and a quiet brand sit under the same fair-use limits. See [plans and billing](/help/billing/plans).
## Switching brands
The brand picker at the top of the sidebar lists **Personal** with your own brand under it, then **Business** with every business brand in the workspace, then **All brands** and **Manage brands**. Select a brand to switch — your posts and calendar filter to it. **All brands** clears the filter.
The up and down arrows on the Brands page reorder that page's list, which is handy once you're past three or four brands. Give brands names that can't be confused at a glance ("Acme — Retail", "Acme — Wholesale") so nobody publishes to the wrong account.
## Teammates and roles
Team management lives at **Settings → Team**, on the Marketing Team plan. The row appears in settings from the Social Media Manager plan up, but until you're on Marketing Team the page shows a locked state — "Team seats come with the Marketing Team plan" — with a **View plans** button.
Everyone you invite joins as a **Member**. Each person carries a badge next to their name on that page: **Owner**, **Admin** or **Member**.
**Only an owner can manage the team.** The **Invite a team member** card appears for owners alone, and inviting, revoking a pending invite and **Remove member** are all refused for anyone else. **Admin** is currently a label on the members list rather than a permission — an Admin can do exactly what a Member can do, and cannot invite anybody. Making someone an Admin will not let them send invites.
What each person can actually do today:
* **Owner** — everything, including inviting and removing people, and billing. An owner can't leave the workspace: the **Leave organisation** card is hidden for owners, and the action is rejected for them. If the workspace needs a different owner, email **[support@rheos.app](mailto:support@rheos.app)**.
* **Admin** and **Member** — create, edit, schedule and publish posts across every brand in the workspace, and leave the workspace themselves from the **Leave organisation** card at the bottom of **Settings → Team**.
There is no "delete workspace" control. **Settings → Account** has **Delete Account**, which schedules *your account* for deletion — you get 30 days to change your mind by emailing [support@rheos.app](mailto:support@rheos.app), and the subscription is cancelled immediately. It says nothing about other members, so if you want a whole workspace wound down, talk to us first.
There is no per-brand access control. Every member of the workspace can see and work in every brand. There is also no review-and-approval step — anyone in the workspace can publish without a sign-off. If you need one client's brand walled off from another's, keep them in separate workspaces.
## Cross-brand best practices
* Keep each brand document tight and specific so the voices don't bleed into each other.
* Give every brand its own sources. A brand built from its own website and its own AI import sounds far less like its siblings.
* Check the brand picker before you publish. The whole dashboard follows whichever brand is selected.
If your workspace has outgrown the plan, get in touch at **[support@rheos.app](mailto:support@rheos.app)** and we'll help size up.
# How brands work in Rheos
Source: https://docs.rheos.app/help/brands/overview
A brand in Rheos holds your brand document, offerings, audiences, guidelines, visual style and connected accounts, and shapes every post generated for it.
A **brand** in Rheos is the identity behind every post. It holds how you sound, who you are talking to, what you sell, and which social accounts the brand publishes to. Whenever you create a post, Rheos reads the active brand first so the result sounds like you.
## The two brand types
You as a human. Your voice, your opinions, your face. Best for founders, freelancers, creators and consultants who post under their own name.
A company. One shared voice, often worked on by several teammates. Best for product companies, agencies, retailers and service businesses.
You'll often want at least one of each — a personal brand for LinkedIn thought-leadership, plus a business brand for the company channels.
## What a business brand contains
Open **Brands** in the sidebar and pick a business brand. The page holds the same seven sections every time, in this order.
| Section | What it holds |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **Basic details** | Name, industry, website and the rest of the brand's facts. |
| **Style** | Logos, colour palette and visual direction. |
| **Socials** | Which accounts this brand publishes to. The list is read-only here — **Connect in settings** takes you to **Settings → Social Accounts**. |
| **Brand document** | A markdown document describing the brand. Rheos reads it before generating a post. Use **Edit** to change it by hand. |
| **Offerings** | The products, services and differentiators you sell. |
| **Target audiences** | The people you want to reach, each with a short description. |
| **Guidelines** | Voice, do's, don'ts and banned phrases. |
Two more controls sit in the top bar of a **business** brand: **Sources** opens the [brand sources](/help/brands/brand-sources) page, and **Activity** shows the history of changes so you can undo an edit or restore an earlier version of the brand document.
A personal brand has a shorter page: your name, role, company and location at the top, then **Socials**, **Expertise**, **Guidelines**, a compact **Sources** panel and the brand document. Personal brands have no website source and no **Activity** control.
Not every tile in **Socials** can be connected yet — see [personal vs business brands](/help/brands/personal-vs-business) for which accounts each brand type publishes to, and which platforms are still coming.
## Switching brands
Use the brand picker at the top of the sidebar. It lists **Personal** with your own brand under it, then **Business** with every business brand, then **All brands** and **Manage brands**.
Picking a brand filters your posts and calendar to that brand. **All brands** removes the filter and shows everything in the workspace.
## How many brands you can have
| Plan | Personal brands | Business brands |
| -------------------------------- | --------------- | --------------- |
| Social Media Manager — £55/month | 1 per person | 2 |
| Marketing Team — £145/month | 1 per person | 5 |
The Brands page shows where you are against the limit: **Business Brands (1/2)**. When you're at the limit the **+** button sends you to billing instead of creating a brand.
Until a paid plan is active, a workspace is capped at one business brand. See [plans and billing](/help/billing/plans) for what a subscription changes.
See [multiple brands](/help/brands/multi-brand) for how to run several business brands side by side.
## Getting your brand right
The biggest lever on output quality is the brand document. Spend ten minutes on [brand sources](/help/brands/brand-sources) when you first set up — Rheos sounds much more like you once the document is rich.
# Personal vs business brands
Source: https://docs.rheos.app/help/brands/personal-vs-business
Choose between a personal and a business brand in Rheos: what each one holds, which social accounts it can connect, and when to pick each type.
Rheos supports two brand types. They look similar in the dashboard. What actually separates them is what Rheos reads before it writes, and which social accounts each one can connect.
Voice itself is not hard-coded either way. Rheos takes it from that brand's own brand document and its **Guidelines** — a personal brand sounds like you because its document says so, not because Rheos flips a switch. If the voice is wrong, the fix is in the document, not the brand type.
## Personal brand
A **personal brand** represents you, the human.
* What Rheos reads: your name, your role, your **Expertise** entries, and your personal brand document.
* Best for: founders, consultants, freelancers, creators, sales leaders, agency operators.
* Accounts you can connect: **LinkedIn** (your personal profile), **X**, **Bluesky**, **Mastodon**.
* Photos and videos usually feature you — that's a choice you make when you brief the post, not something Rheos enforces.
Use a personal brand when the audience is buying you: your taste, your expertise, your face. LinkedIn thought-leadership is the classic example.
Instagram and Facebook are business-brand only. A personal brand can't connect them, so plan Instagram content under a business brand.
## Business brand
A **business brand** represents a company.
* What Rheos reads: the business brand document, that brand's strategy and its visual style — plus your own personal brand context, which is read alongside them.
* Best for: product companies, agencies, retailers, service businesses.
* Accounts you can connect: **LinkedIn** (company page), **Instagram**, **Facebook**, **X**, **Pinterest**, **Bluesky**, **Mastodon**.
* Photos and videos usually feature the product, premises, customers or team.
Use a business brand when the audience is buying from the company: products, services, bookings, demos.
## Not yet available
**Threads**, **TikTok** and **YouTube Shorts** are listed in the app — in a brand's **Socials** section, and in the platform picker when you write a post (where YouTube Shorts is labelled just **YouTube**) — but no customer plan can connect them yet. They're coming; for now, treat them as unavailable and don't build a plan around them.
This is why the **Socials** section shows tiles you can't act on: three greyed on a business brand, one on a personal brand. A business brand with everything connected reads **7 of 10 connected**, and a personal brand **4 of 5**. Nothing is wrong with your account.
## Posting as yourself, about your business
Start a new post, pick your personal brand, and a **Targeting (optional)** row appears with an **About** choice: **Myself**, or any business brand in the workspace. Leave it on **Myself** and the post is you talking about you.
Pick a business brand and it's recorded on the post as what the post is *about*, and it's still there when you reopen the draft. Your voice doesn't change — Rheos writes from your personal brand either way. Today the choice is a note on the post rather than something that steers the writing, so put the business you're talking about in the post prompt as well.
The **About** row only appears when the brand you picked is personal and you have at least one business brand. Under a business brand there's no choice to make, so it's hidden.
## When to use both
You'll often want to run both in parallel:
* **Personal brand on LinkedIn**: the founder shares lessons, opinions, hires, war stories.
* **Business brand on Instagram**: the company posts product launches, customer stories, behind-the-scenes.
Personal brands compound trust with humans, business brands compound recognition with buyers. Each brand keeps its own document, sources and connected accounts, and every post is written from exactly one brand's voice.
## Switching between them
Use the brand picker at the top of the sidebar at [dashboard.rheos.app](https://dashboard.rheos.app). Your posts and calendar filter to whichever brand you pick.
A post's brand is set once, when you start it. The **Start a new post** screen asks you to **Choose a brand…** before anything else, and once the post has content there's no brand switcher inside the editor. If you're several paragraphs into a draft under the wrong brand, start a fresh post under the right one and paste the copy across.
## Plan limits
| Plan | Personal brands | Business brands |
| -------------------------------- | --------------- | --------------- |
| Social Media Manager — £55/month | 1 per person | 2 |
| Marketing Team — £145/month | 1 per person | 5 |
If you need more business brands — an agency running several clients, say — the [Marketing Team plan](/help/brands/multi-brand) is the right home.
# Account setup
Source: https://docs.rheos.app/help/get-started/account-setup
Set up Rheos: sign up, pick a plan and 7-day trial, secure your sign-in, connect your social accounts, and invite your team from four settings pages.
A few minutes spent on setup makes every post that follows faster and more on-brand. Here's the order we recommend.
## Create your account
Sign up at [dashboard.rheos.app](https://dashboard.rheos.app) with **Sign up with Google**, or with an email address and password.
Onboarding then asks about your first brand — what you do, who you talk to and how you sound. Finishing it doesn't put you on the dashboard: Rheos carries straight on into a full-screen chat that builds the brand out with you. Everything else in these guides starts from **Home**, the first item in the sidebar — go there whenever you want to leave the brand chat.
## Pick your plan
Rheos has two self-serve plans.
| Plan | Price | Brands | Teammates | Best for |
| ------------------------ | ------------ | ---------------------------------------- | -------------- | ---------------------------------------------- |
| **Social Media Manager** | £55 / month | 2 businesses, plus your personal account | Just you | One business, posting every week |
| **Marketing Team** | £145 / month | 5 businesses, plus your personal account | Invite up to 3 | Several businesses, or a team working together |
Prices include VAT. Pay annually and you pay for ten months instead of twelve.
Pick a plan — from the [pricing page](https://rheos.app/pricing), or later from **Settings → Billing** — and you go through Stripe Checkout. Your card goes on file, there's nothing to pay on the day, and the first **7 days are free**. The trial runs once per account: if you've subscribed before, or you're redeeming a claim link that already includes free time, checkout skips the trial rather than stacking another week on top.
Sign up straight from the dashboard instead and you land on a free, limited account — one business brand, and a low weekly ceiling on how many posts you can publish. It's somewhere to look around from before you subscribe, not a plan we sell.
See [plans](/help/billing/plans) for what each one includes.
## Find your way around settings
Open **Settings** from the row of icons at the bottom of the sidebar. There are four pages:
| Page | What lives there |
| ------------------- | ---------------------------------------- |
| **Account** | Your name, avatar and sign-in security |
| **Social Accounts** | The accounts Rheos publishes to |
| **Team** | Members and invites |
| **Billing** | Plan, payment method and recent payments |
**Team** appears once you're on a paid plan. Everything else is there from day one.
## Your account and sign-in
Open **Settings → Account** to set your display name and pick an avatar — twelve built-in options, picked rather than uploaded.
Sign-in security lives on the same page:
* **Change Password** — enter your current password, then the new one twice.
* **Sign-in Methods** — shows whether **Google** and **Email & Password** are set up on your account.
* **Email Verification** — confirm your address, or hit **Resend** if the link never arrived. Check your junk folder first.
* **Danger Zone** — delete your account and its data. There's no undo.
## Connect your socials
Open **Settings → Social Accounts**. You'll see a row for your personal account and a row for each business brand, each with a badge — **Not connected**, a count of what is connected, or an amber **needs attention** warning. Expand a row to see its connect cards.
A business brand can connect **Company Pages** (LinkedIn), **Instagram** (Business or Creator account), **Facebook**, **X (Twitter)**, **Pinterest**, **Bluesky** and **Mastodon**. Your personal account gets **Personal Profile** (LinkedIn), **X (Twitter)**, **Bluesky** and **Mastodon**.
Two of them want details before you select **Connect**:
* **Bluesky** asks for your handle and an app password, which you create at `bsky.app/settings/app-passwords`.
* **Mastodon** asks which instance you're on, for example `mastodon.social`.
You only need the platforms you actually post to, and you can add more later. Publishing and scheduling stay switched off for a platform until an account is connected to it.
**Threads, TikTok and YouTube Shorts are coming soon.** You'll see all three in the composer's platform strip, but there's no way to connect an account to them yet, so nothing can go out to them.
Instagram tokens last about 60 days and Rheos renews them for you in the background. LinkedIn and Facebook usually have to be reconnected by hand, so Rheos flags the brand with **needs attention** before the connection lapses. Bluesky and Mastodon don't expire.
## Notifications and Inbox
The bell at the bottom of the sidebar opens a short list of recent notifications. Select one to open it in full, or use **See all notifications** to go to your **Inbox**.
The Inbox has four tabs — **All**, **System**, **Individual** and **Unread**. Opening a message marks it as read; **Mark all read** clears the unread count in one go.
Notification delivery is still being rolled out, so your Inbox may stay empty for a while. Don't rely on it to tell you a post went out — the publish status of every post is on **Home**, under **Content Plan** and **Drafts & recent**.
## Invite your team
**Settings → Team** shows the people in your workspace. Inviting new ones is a **Marketing Team** feature — the plan covers up to 3 invited teammates. On **Social Media Manager** the page is still there, but locked, with a **View plans** button.
If you're the workspace owner, you'll see an invite card: type an email address, select **Send invite**, and they get an email with a link to join. Pending invites are listed underneath and you can revoke one at any time.
Everyone you invite joins as a **Member**. Owner and admin aren't picked at invite time. Owners can also remove a member from the list below.
## Next steps
The four-step walkthrough, from a one-line direction to a published post.
What Content Plan, the calendar and Drafts & recent are for.
The Rheos mobile app is iOS-first and still rolling out — see [the mobile app](/help/mobile/overview) for how to get access.
# Your dashboard
Source: https://docs.rheos.app/help/get-started/dashboard
A tour of Home in Rheos: the Content Plan timeline, the Content Calendar view, your weekly post counter, and the Drafts & recent list.
**Home** is where Rheos puts you when you sign in at [dashboard.rheos.app](https://dashboard.rheos.app). It's called **Home** in the sidebar; the page itself is headed **Content Plan**. It answers two questions: what's going out, and what's still unfinished.
Everything on the page is filtered by the brand picker at the top of the sidebar. Switch brand and the plan, the calendar and the drafts list all follow.
## Content Plan
The box at the top is your week. The label on its left tells you the range it's showing — **Today → 10 Aug**, for example — and each row is a post with its title, status, platform icons and time.
A post appears here once it has a date and time — scheduled posts, and any ideas or drafts you've given a slot. Anything undated stays in **Drafts & recent** below. An empty week says **Nothing scheduled this week** and offers a **Schedule a post →** shortcut.
* The chevron on the right of the box expands the view to a rolling four weeks starting today. The expanded weeks list scheduled posts only, so dated ideas and drafts drop out of them. Select the chevron again to drop back to this week.
* Select any row to preview the post. **Open** takes you into the editor; a scheduled post can be pulled back with **Cancel schedule**.
### Content Calendar
The calendar button beside **New post** swaps the plan for a full **Content Calendar** — a month, week or day grid of everything scheduled, with a **Drafts** panel down the right-hand side.
* Drag a draft from the panel onto a day and Rheos asks you to confirm the date and time before scheduling it.
* Select an empty day to start a new post already set to publish then.
* Select a post on the grid to preview it.
The same button switches back. The view is held in the page address, so a refresh keeps you where you were.
## Your weekly post counter
The small counter next to **New post** shows how many posts you've published this week against the ceiling for your plan. It turns amber as you approach that ceiling and red when you reach it, and it resets at the start of each week.
If you do hit it, publishing and scheduling are blocked until the week rolls over or you move up a plan.
## Drafts & recent
Underneath the plan is everything that isn't currently scheduled or publishing — ideas Rheos generated, drafts you haven't finished, posts that have already gone out, and anything that failed. Newest first, grouped by day.
* The two small icons at the top right switch between a list and a grid of cards. The chevron next to them expands the list beyond the first few rows.
* Select a row to preview the post; the **...** menu on each row offers **Preview**, **Open editor**, **Select** and, for ideas, drafts and failed posts, **Delete post**.
* To clear out several at once, select them — select the icon on the left of a row, or use **Select** in the row menu. A bar replaces the heading showing how many are selected, with **Clear** and **Delete**. Deleting asks you to confirm, and can't be undone.
If the list looks empty but you know you have drafts, check the brand picker. When your current brand has nothing, Rheos tells you which other brand does and offers a **Switch brand** button.
## What to read next
From a one-line direction to a published post.
How the queue works and what happens when a post goes out.
# Quickstart: publish your first AI-drafted social post
Source: https://docs.rheos.app/help/get-started/quickstart
Sign up to Rheos, then write, preview and publish your first AI-drafted social post in a few minutes. Covers the setup flow and post editor.
Rheos is an AI social media tool for small businesses. It learns your brand from your website, drafts posts in your voice, and publishes them to Instagram, LinkedIn (your profile and your company pages), Facebook, X, Pinterest, Bluesky and Mastodon.
This page covers your first post. Signing up and setting up are handled for you — here is what that looks like, then the part you actually do.
## What happens when you sign up
Create an account at [dashboard.rheos.app](https://dashboard.rheos.app) with Google or email, and Rheos walks you through the rest.
**You answer a few questions.** One screen, and only your name is required. The most useful thing you can give it is your website — Rheos reads your site to work out what you sell, who for, and how you sound. You can also paste in context from ChatGPT or Claude, or upload brand guidelines and decks.
**Rheos builds your brand profile.** A full-screen **Creating your brand profile** screen takes over while it reads your sources and writes up your tone, themes and audiences. If you gave it nothing to read, or what you gave left gaps, it interviews you in a short chat instead. Every account gets two brands — a personal one for you as a person, and a business one for the company.
**It offers you a first set of posts.** Written for the brand it has just built. Keep the ones you like, skip the rest, then drop them onto a calendar. That lands you on Home with a week already planned.
**Then a tour picks up where onboarding stopped.** A **Look around** list sits at the bottom of the sidebar with three things left to do — look at what Rheos knows about you, connect an account, and write a post. Each one takes you to the right screen. For a fuller walkthrough, open the account menu at the bottom of the sidebar and pick **Tutorials**: **Get your first post out** is the one that matters, and it tours the real interface rather than playing a video.
Signing up from the dashboard puts you on the free tier. If you pick a plan on the [pricing page](https://rheos.app/pricing) first, onboarding ends at Stripe Checkout — your card is collected up front and nothing is charged for 7 days. See [Plans](/help/billing/plans).
## Connect an account first
You can draft as much as you like without connecting anything, but nothing can be sent until at least one account is live. The tour prompts you, or go to **Settings → Social Accounts** yourself. Your personal and business brands each keep their own.
Most platforms are a **Connect** button, a sign-in, and back to Rheos. Two are different: Bluesky takes your handle and an app password you create at [bsky.app/settings/app-passwords](https://bsky.app/settings/app-passwords), and Mastodon asks which server you are on before sending you there. Full details in [Connect your accounts](/help/publishing/connect-socials).
**Threads, TikTok and YouTube are coming soon.** Their icons appear when you write a post, but there is no way to connect them yet.
## Write your first post
From **Home**, select **New post** at the top right of the Content Plan.
Pick a brand, tick the platforms this post is going to, and type a line of direction — "Launching our Ethiopia Guji single-origin", say. Then **Continue**.
**Formula** is optional and means it. Use **Choose intent** — Sell, Educate, Prove, Connect, Provoke, Inspire, Announce or Entertain — and **Audience** only when you want to steer the angle. To skip the AI entirely, use **or write manually**.
Rheos comes back with three angles on your brief, each tagged with its intent and hook. **More details** opens the angle and a summary.
If none land, select an intent chip or edit the brief and select **Regenerate**. Otherwise select the one you want and **Continue** — the editor opens with a full draft.
The body fills one scrollable card, hashtags sit underneath as chips, and Rheos saves as you go.
Two ways to get AI to change it, both in plain English:
* **One passage.** Select any run of text and a small purple button appears. Select it, then either type what you want — "shorten by half" — or take a shortcut: **Make shorter**, **More casual**, **Sharper hook**, **Add a stat**. Only your selection is rewritten.
* **The whole post.** Select **Edit** beside the title for the same box scoped to everything: **Tighten the whole post**, **Punchier opening**, **Stronger CTA**, **More on-brand tone**.
For an image, use the **Attachments** card: **Attach** to upload one or pick from your library, **Generate** for an AI image.
**Preview →** saves the draft and shows the post as each platform will display it. From there, **Post now** opens a **Posting to** summary to confirm, or **Schedule** opens a date and time picker.
Nothing is a one-way door — **Edit** takes you back to the body, and **Preview** steps back one from the summary or the picker.
Instagram and Pinterest will not publish a text-only post. Pick one with nothing attached and an amber note names the channel; publishing stays blocked until you add an image or video, or deselect it.
One caption goes to every channel you selected. The previews show how it lands, but you cannot yet write a different version per platform. Go over a platform's character limit and Rheos names it and holds publishing until you trim. See [per-platform variations](/help/publishing/per-platform).
## If you get stuck
Select the **?** at the bottom of the sidebar. You can browse these docs, open a frequently-asked answer, or **Message the team** — the assistant answers straight away and a human picks it up if it cannot. Or email **[support@rheos.app](mailto:support@rheos.app)**.
## What to do next
Add more sources — documents, extra websites, past posts — so Rheos sounds more like you.
Intent and hooks, so you can steer Rheos to the exact angle you want.
Platform requirements, permissions, and what to do when a connection expires.
Put posts on the calendar and let Rheos publish them for you.
# Your first post
Source: https://docs.rheos.app/help/get-started/your-first-post
Write your first Rheos post: set the brand and direction, pick one of three ideas, edit the draft, then publish it or put it on the schedule.
Every post in Rheos starts the same way: say what you want, pick one of the ideas Rheos comes back with, then edit the draft. This walkthrough follows one from a blank screen to a published post.
From **Home**, select **New post**. The **Start a new post** screen opens.
Pick the brand you're posting as — nothing else unlocks until you have. Then pick the platforms you're writing for, and type a line saying what the post is about. "5 myths about pension transfers", "Our new spring menu launches Monday", "Why we stopped offering free consultations" — one line is enough, because Rheos fills in the rest from your brand.
**Choose intent** and **Audience** are optional. Set them if you already know the post should sell rather than teach, or that it's aimed at one particular audience.
Select **Continue**. If you'd rather write it yourself, **or write manually →** takes you straight to an empty editor.
**Threads, TikTok and YouTube Shorts are coming soon.** They appear in that platform strip, but there's no way to connect an account to them yet — so pick from LinkedIn, Instagram, Facebook, X, Pinterest, Bluesky and Mastodon for now.
Rheos comes back with three ideas. Each one shows the intent it's built on — **Announce**, **Sell**, **Educate** and so on — the hook types behind it, and a one-line summary of the angle. **More details** expands an idea if the summary isn't enough to pick on.
Not the right three? Change the intent using the chips underneath, edit your direction, and select **Regenerate**. **Write manually** skips the ideas entirely.
Select the one you want and select **Continue**.
The editor opens as a single column: the post title, the body in one card with suggested hashtag chips along the bottom, and the attachments underneath. Everything is editable in place.
* **Edit**, beside the title, opens a box where you ask for a change to the whole post — "make it punchier", "cut the last two lines", "be more specific about the offer".
* Select a sentence in the body and a small **Comment on selection** button appears. It opens the same box, aimed at just that sentence rather than the whole post.
* The **Attachments** card holds the visuals. **Attach** takes an upload or something from your library; **Generate** makes an AI image from the post.
* Along the top row: a **Draft · saved** / **Draft · unsaved** marker so you can see whether your work is stored, then **Attach context** (the paperclip — files for the AI to read, not things to publish), **Version history**, and **Close post**.
Two **Attachments** cards currently appear one above the other. Use the top one — **Attach** and **Generate** there do everything you need.
Check the platform icons at the top left of the editor before you go on. If none are selected you'll see a **+ Pick a platform** button instead; once you have picked some it collapses to a bare **+** for adding more.
Rheos does **not** shorten an over-long caption for you. If the body is past a selected platform's character limit, a red pill at the top of the editor names that platform, and the buttons that move the post forward stop working — **Preview** in the writing view, **Post now** and **Schedule** on the preview screen. Hover a dead button and it tells you which platform is over. Cut the text back and they come alive again.
In the footer, **Save draft** keeps the post for later and **Preview →** takes you on to the platform previews. Nothing goes out from the writing view — publishing lives one step further on. From the preview footer:
* **Post now** doesn't publish. It opens a **Posting to** summary of the accounts the post will go to, and a second **Post now** in that footer is what actually sends it.
* **Schedule →** opens a date and time picker; **Confirm** puts the post in the queue.
* **Edit** takes you back to the writing view.
Both routes need a connected account for the platform you've picked. If nothing is connected yet, set that up first in **Settings → Social Accounts**.
## After publishing
Your post shows up on **Home**: scheduled posts sit in **Content Plan**, and everything else lands in **Drafts & recent**.
Each row carries one status for the whole post — **Draft**, **Scheduled**, **Published**, **Partially published** or **Failed** — followed by the icons of the platforms it's going to. There's no per-platform status on the list itself. To see which channel had the problem, select the row: a post that came back **Partially published** or **Failed** names the channels that didn't make it, with the error for each.
If a platform hiccups mid-publish — a rate limit, a momentary outage — Rheos retries it there and then. An expired or revoked connection is different: that can't fix itself, so the post is marked failed and stops. Reconnect the account in **Settings → Social Accounts**, then open the post and use **Retry failed** to send it to the channels that didn't go out.
## What to read next
Content Plan, the calendar and Drafts & recent, explained.
Everything the editor can do once you're past your first draft.
Queues, timing and what happens when a scheduled post goes out.
Set up the accounts Rheos publishes to.
# Live Documents
Source: https://docs.rheos.app/help/library/documents
A live document is a rich-text document inside Rheos, with auto-save, an AI assistant that edits on request, and comments you can apply in a batch.
A **live document** is a full-page rich-text document that lives in your Rheos workspace.
It has its own AI assistant and its own comment thread, which makes it a good home for
longer writing that isn't a post yet — briefs, outlines, scripts, notes.
## Create one
In the [Library](/help/library/overview), select **+** and pick **New Live Document**. Rheos creates the
document as **Untitled Document** and opens it straight away at
`dashboard.rheos.app/docs/...`.
**Save the link before you leave.** Live documents aren't listed anywhere in Rheos yet —
they don't appear in the Library grid, in Library search, or in the sidebar. The URL is
the only way back in, so bookmark it as soon as the document opens. If you navigate away
without it, the document still exists and its content is safe, but nothing inside Rheos
will lead you back to it — only your browser history or a saved link will.
## Write
Select the title at the top of the document and type to rename it, then write in the body
below.
* The formatting toolbar sits in the middle of the header: bold, italic, strikethrough,
two heading levels, bullet and numbered lists, a quote block, a divider, and undo and
redo.
* Type `/` anywhere in the body for a block menu. **Ask Rheos AI** is the first item — it
asks Rheos to carry on writing from what's already in the document. Below it: **Text**,
**Heading 1**, **Heading 2**, **Bullet List** and **Numbered List**.
* Two panel buttons in the top right hide and show the side panels. The right-hand one is
the panel that does the work — it holds comments and chat. Worth collapsing on a small
screen.
**Library** in the top-left takes you back.
## Auto-save
**Auto-save** is on by default — the toggle is in the header. With it on, Rheos saves a
couple of seconds after you stop typing and confirms with a **Saved** message.
Turn **Auto-save** off if you'd rather save deliberately. **Save Changes** in the header
saves on demand either way, and with auto-save off, selecting **Library** with unsaved work
raises an **Unsaved Changes** prompt offering **Discard** or **Save & Exit**.
## Comments
Select any text in the body. A **Comment** button appears above the selection — select it,
write your note in the **Add Comment** box, then select **Add Comment**. Rheos records the
text you highlighted and the section it came from.
Comments stack in the right-hand panel under **Comments**, with a count of the open ones.
Each has **Resolve**, and you can **Unresolve** it later. **Delete** appears on comments
you wrote.
## The document chat
The right-hand panel has a second mode. Open the settings icon at the top of the panel,
then pick **Chat Mode** under **Sidebar Mode** — **Comments Mode** switches back.
Ask for an edit in plain language, for example "tighten the second section" or "add a
short intro".
The input area at the foot of the panel stacks three things, top to bottom:
1. A button that sends every unresolved comment at once, labelled with the count — so
**Apply 3 comments** when three are open. It only appears when there are unresolved
comments.
2. The **Brand context** switch, directly above the text box. It controls whether Rheos
brings your brand identity into the edit, and it's on by default.
3. The text box itself, with the send button beside it. Enter sends; Shift-Enter starts a
new line.
### Reviewing the changes
Nothing is written into the document automatically. Every edit comes back as
**Review Changes**, a grouped diff that takes over the panel until you finish with it:
* Accept or reject each group with the tick and cross.
* **All** accepts every group at once; **None** rejects every group at once.
* **Apply Changes** stays greyed out until *every* group has been decided — the counter
beside it (**2/5 decided**) tells you how many are left. Accepting a couple and leaving
the rest untouched won't unlock it; use **All** or **None** if you want to move fast.
* **Apply Changes** then writes your accepted groups into the document. **Cancel**
discards the whole edit and puts the document back as it was.
Comments that matched an accepted change are resolved for you.
# Library
Source: https://docs.rheos.app/help/library/overview
Everything you upload or generate in Rheos lives in the Library. Upload files and folders, import from Google Drive or OneDrive, and attach assets to posts.
The **Library** is where every file in your workspace lives. It's the second item in the
sidebar, at `dashboard.rheos.app/library`.
It holds:
* Images, video and audio.
* Documents — PDF, Word (`.docx`) and plain text.
* Visuals you save out of the [Image Studio](/help/posts/image-studio).
Individual files can be up to 2 GB.
## What's on the page
Reading down from the top:
1. **The header row** — **Library** on the left. On the right, a zoom slider (a magnifier
icon with a slider) that resizes the thumbnails, then the **+** button. The slider only
appears in grid view.
2. **The search box**, centred on its own row underneath.
3. **The Create band** — a **Create** heading with a **New Post** card that starts a new
post. Opening a folder or typing a search hides it.
4. **The filter bar** — type toggles, view switcher, filters, sort and select. It sticks to
the top of the list as you scroll.
Below those come the folder strip and the file grid.
## Getting files in
Select **+** at the top right of the Library:
| Option | What it does |
| ---------------------------- | -------------------------------------------------------------------------------- |
| **Upload Files** | Pick files from your device. |
| **Upload Folder** | Pick a folder from your device. Rheos rebuilds its structure as Library folders. |
| **Import from Google Drive** | Browse your Drive and pick files, or import a whole folder. |
| **Import from OneDrive** | The same, for OneDrive. |
| **New Live Document** | Not a file — see [Live Documents](/help/library/documents). |
Sign in to Google or Microsoft when prompted — you don't need to set anything up
beforehand. Files are copied into your Library rather than linked, so later edits in
Drive or OneDrive don't flow through.
You can also drag files or a folder straight onto the page. A **Drop files to upload**
overlay appears while you drag. Drop a `.zip` and Rheos reads it first, then asks whether
to **Extract contents** or keep the archive whole with **Import as file**.
### The upload dialog
Uploads and cloud imports open **Upload Assets** before anything is stored. Along the top
you can set:
* **Brand** — which brand these files belong to. It's pre-set to the brand you have
selected in the sidebar.
* **Choose Folder for All** — send the whole batch to a Library folder.
* **Add Tags to All** — tag the batch in one go.
Each file also has its own **Name**, **Folder** and **Notes**, and images get a crop
button. **Upload** commits the batch; **Cancel** stores none of it.
**Upload Folder** — and dragging a folder onto the page — behaves differently. Rheos
rebuilds the folder structure as Library folders *before* the dialog opens, and confirms
with a message like **Found 12 files across 3 folders**. If you cancel **Upload Assets**
after that, no files are stored, but the new (empty) folders stay in your Library.
Right-click each one and pick **Delete**, then confirm in the dialog.
## Folders
Folders sit in a strip above the grid, each with an item count. Select a folder to open it;
the breadcrumb takes you back to **Library**.
* Select the dashed **+** card at the end of the strip to create a folder.
* Drag assets onto a folder card to move them in.
* Drag assets onto the dashed **+** card to create a new folder that already contains them.
* Drag a folder onto another folder to nest it.
* Right-click a folder to **Rename** or **Delete** it. Deleting a folder with contents
asks whether to **Keep contents** or **Delete everything**.
Your folders also appear under **Library** in the sidebar, below **All files**.
## Finding things
Type in the search box at the top of the Library. Give it at least three characters and
use plain language — Rheos matches on meaning as well as on file names, tags and
descriptions.
The filter bar below holds the rest:
* A **Library** / **Sessions** switcher at the far left. **Sessions** lists the creation
sessions you've run; **Library** is the file view this page describes.
* **Images**, **Video**, **Audio**, **Documents** — type toggles. Turn on any combination.
* **Bin** — the recycle bin.
* Grid or list view.
* A filter icon, which opens **Source** (**Uploaded** or **Studio**), **Aspect Ratio**
(**Square**, **Portrait**, **Landscape**) and **Date** (**Last 7 days**,
**Last 30 days**, **Last year**). **Tags** and **Campaigns** join them once you have
some.
* Sort by **Uploaded** or **Name**, ascending or descending.
* **Select** — turn on selection mode.
To resize the grid, use the zoom slider in the header row next to **+** — not the filter
bar. It's hidden in list view.
The Library shows the brand you have selected in the sidebar, plus anything that isn't
tied to a brand. If a file you expect is missing, check the brand selector first.
## Selecting and acting on assets
Cmd-select (Ctrl-select on Windows) to add an asset to the selection, or Shift-select to take
a range. If you'd rather not hold a key, select **Select** in the filter bar first — after
that, a plain select adds and removes assets.
A bar docks to the bottom of the screen as soon as anything is selected. It shows the
count and offers:
* **Add to post** — attach the selection to an existing draft.
* **Move to folder** — pick any Library folder. From inside a folder you can also move
things back to **Library Root**.
* **Download** — download every selected file.
* **Create post** — start a new post from the selection. Two or more images become a carousel.
* **Edit** — one asset at a time; opens **Edit Info** with **Asset Name**, **Project** and
**Internal Notes**.
* **Delete** — moves the selection to the bin.
Right-clicking an asset gives the same set plus **Rename** for inline renaming. The clear
button at the left of the bar drops the selection.
## Attaching an asset to a post
There are two routes, and they end in the same place.
Select one or more assets and select **Add to post**. **Add to existing post** lists
your drafts — select one and the assets are attached. Use **Create post** instead if
you want a brand-new post built around the selection.
In the [Unified Post Editor](/help/posts/unified-post-editor), use the **Attachments**
card. **Attach** (*Upload or library*) opens the **Add Assets** picker on your
Library — pick your asset and confirm. Once the post has an attachment, the **+** tile
alongside the thumbnails opens the same picker, and an **Attach** button sits under
them.
## The bin
**Delete** doesn't destroy anything straight away. Deleted assets move to the bin, which
you open with the **Bin** icon in the filter bar. Before you commit, the **Move to Trash?**
dialog names any posts that use the asset and warns that it will be removed from them.
From the bin, select assets and pick:
* **Restore** — then either **Restore Locations** to put them back in their old folders
and campaigns, or **To Library Only**.
* **Delete forever** — permanent, and not reversible.
# Rheos for iOS
Source: https://docs.rheos.app/help/mobile/overview
Sign in, write and publish a post from your phone, save a link from the iOS share sheet, and see what still needs the web dashboard.
Rheos for iOS signs in with the same account as the web dashboard and reads the same
organisation data — your brands, your library, your posts. You can write a post, have AI
draft one, attach an image, then publish it or put it on the schedule. It is a companion to
the web app, not a replacement for it.
Not sure whether you have access to the app yet? Email **[support@rheos.app](mailto:support@rheos.app)** and we'll tell
you where things stand.
## What you can do
Type the post yourself, or describe what you want and let Rheos draft it from a hook you
pick.
Upload from your camera roll, generate an AI image, or reuse an image already in your
**Library**.
Send a post now, or set a date and time. It goes out to the accounts you've connected.
Switch business brands, edit your identity, and connect social accounts.
## Getting started
Use the account you use on the web — **Continue with Apple**, **Continue with Google**,
or your email and password (**Sign in**, or **Create account** if you're new).
Home shows what's scheduled over the next 7 days, and a **Drafts & recent** list
underneath. The floating bar at the bottom has two round buttons on the left — your
posts and your **Library** — and a circular **+** on the right that opens the composer.
Top right: a bell for your **Inbox**, a calendar icon, and your avatar for brands,
identity and settings.
## Write a post
Tap the **+** on Home — the round button at the right-hand end of the floating bar.
The composer opens on a **Who's this for?** screen, labelled **Step one**. Pick your
personal voice or one of your business brands. This is the whole screen until you
pick: the rest of the composer, including the **Text** and **Image** tabs, only
appears once you've picked. Your choice sets the voice, platforms and pillars for the
post. See [multi-brand workspaces](/help/brands/multi-brand) for how many business
brands your plan covers.
On the **Text** tab, write into **Write your post...** — you get a counter up to 2,200
characters. Or type what you want into **Ask AI to create, edit or add a comment...**
and send it. Rheos comes back with hooks, you **Choose a hook**, tap **Generate Post**,
and then **Save as Draft** or **Try Another Hook**.
On the **Image** tab: **Upload** from your camera roll, **Generate** an AI image, or
pull one from **Library**. All three are images only — video, audio and documents can't
be attached here.
**Save draft** keeps it for later. **Post →** saves it and takes you to the schedule
screen.
Captions come from you, or from the AI text flow above. Rheos does not look at a photo from
your camera roll and write a caption from it.
## Schedule or publish
The schedule screen is where a post goes out. Tick the accounts you want under
**Channels**, then either tap **Publish now**, or pick a slot under **Date & Time** and tap
**Schedule**. The time has to be in the future — the screen tells you if it isn't. A post
that's already scheduled shows **Reschedule** instead, plus a **Cancel schedule** button in
the body of the screen.
The **Channels** list is filtered by the brand you picked in the composer, so it isn't the
same on every post. A personal-voice post lists **LinkedIn**, **X (Twitter)**, **Bluesky**
and **Mastodon**. A business-brand post lists **LinkedIn Page**, **Instagram**,
**Facebook**, **X (Twitter)**, **Pinterest**, **Bluesky** and **Mastodon** — your personal
**LinkedIn** profile isn't among them, so a business post can't go to it. Anything in the
list you haven't connected is greyed out with a **Connect** badge and can't be ticked.
You connect accounts from your avatar, then **Account → Integrations**. The accounts you
can finish connecting from the phone are **LinkedIn** (personal profile), **X (Twitter)**,
**Instagram** and **Facebook**. LinkedIn company pages, Bluesky, Mastodon and Pinterest are
connected from the web dashboard instead — they can still show a **Connect** badge on the
phone's **Channels** list, but there's nothing to tap on there. See
[connect social accounts](/help/publishing/connect-socials) for what each network needs.
If the post is longer than a ticked channel's limit, a **Character limit exceeded** warning
names that channel, your character count and its limit.
Threads, TikTok and YouTube Shorts are coming soon, so leave them alone for now. TikTok and
**YouTube Shorts** turn up in a business post's **Channels** list but have no card on
**Integrations**. **Threads** does have a card there, with a handle field and a **Submit**
button — that registers your handle for approval and shows **Pending approval**. It doesn't
connect the account.
## The calendar
The calendar icon at the top right of Home opens a read-only view of everything scheduled
or published, laid out as tiles grouped by month, newest first. Tapping a tile opens that
post. There's nothing to create from here — if you have nothing scheduled or published yet
it just reads **No scheduled or published posts yet.** To make a post, use the **+** on
Home.
## Add media to your library
The **Library** is the same org library you see on the web. Tap **+** in the top bar and
pick **Camera**, **Gallery**, **Files**, **Audio** or **Cloud Import**.
Everything you add here is stored in the library, but only images can be attached to a post
from the composer. Files, audio and video uploaded on your phone are for the library and
the web dashboard.
## Save a link from the share sheet
Share a link into Rheos — or share selected text that has a link in it — and pick **Rheos**
from the iOS share sheet. You get a sheet showing the link with an **Add a note (optional)**
field. Tap **Save to Rheos** and the link is filed against whichever business brand is
active — change that from your avatar, under **Business Brands**.
Rheos only registers for links and text, so it will not be offered in the share sheet for a
photo, a video or a file. Share text with no link in it and you get **Nothing to capture**.
Saved links aren't browsable yet — not on the phone, and not on the web. They're stored
against your brand, but there's no screen to read them back from. If you need the link
somewhere you can see it, put it in a draft instead.
If **Rheos** doesn't appear in your share sheet at all, you're on a build from before this
shipped. A share extension is part of the app binary, so an over-the-air update can't add
it — you need a newer build of the app.
## What isn't in the app yet
* **Plan changes and payment details.** Your avatar, then **Organisation → Billing**, shows
your current plan. Changing it, or updating a card, happens on the web — tap
**Manage Billing on Web**. See [plans](/help/billing/plans) for what each one includes.
* **Brand document uploads.** Your avatar, then **Brand → Brand Documents**, is there but
answers **Coming soon**. Add documents from the web dashboard for now.
Anything you can't finish on your phone is waiting for you at `dashboard.rheos.app` — same
account, same data.
Trouble installing or signing in? Email **[support@rheos.app](mailto:support@rheos.app)**.
# Comments and edits
Source: https://docs.rheos.app/help/posts/comments-and-edits
Refine a Rheos draft — highlight a line to have AI rewrite it, accept or decline each change inline, and roll back from version history.
Rheos drafts are starting points, not finished posts. You will usually tweak two or three
times before publishing. The **Unified Post Editor** gives you a few ways to do it.
## One-shot comments
The fastest way to refine. Highlight any sentence in the post body and a small comment
button appears beside it. Select it and a popover opens with your selection quoted at the
top. Type a short instruction:
* "Make this punchier"
* "Shorten by half"
* "Add a stat"
* "Sound less corporate"
* "Switch to UK English"
Press Enter to send, or Escape to close. The popover also carries one-select quick
prompts — **Make shorter**, **More casual**, **Sharper hook** and **Add a stat**.
For a pass over the whole post rather than one line, select **Edit** in the title row. The
same popover opens headed **Edit whole post**, with post-level quick prompts:
**Tighten the whole post**, **Punchier opening**, **Stronger CTA** and
**More on-brand tone**.
Short, blunt instructions beat polite paragraphs. "Punchier" is better than "could you
possibly make this slightly more punchy?".
While Rheos works, an **Editing…** chip sits in the corner of the post box. The rewrite
then replaces it.
## Review the changes in place
Rheos never silently overwrites your draft. The rewrite arrives as a **Suggested edit**
shown over your post, the way suggesting mode works in a document editor:
* New text appears in **green**, removed text in **red strike-through**, both in the flow
of the real post.
* Each change gets a **✓** and a **✕** in the right-hand margin. Accept or decline it
where it sits.
* A decided change collapses to a single badge — green ✓ if you accepted it, red ✕ if you
declined. Select that badge to undo the decision and get the pair of controls back.
* The header counts what is left — "2 of 5 left", then "All reviewed" — and carries a
character badge that turns red if the rewrite would push you over a platform's limit.
Three controls sit in the header:
* **All** — accept every change still outstanding.
* **None** — decline every change still outstanding.
* **✕** — discard the whole suggestion and keep your draft exactly as it was.
Once you have decided some changes but not others, an **Apply N accepted** button appears
below the post. It lands what you have decided and drops the rest.
Deciding the last outstanding change applies the rewrite immediately, and so do **All**
and **None**. There is no confirmation step. If you want out, use the **✕** before you
decide anything — or roll back afterwards from version history.
If Rheos comes back with nothing to change you get "No changes detected" and a
**Dismiss** button.
## Inline editing
The post body is a normal text box. Select anywhere and type — fix a typo, swap a word,
add a line. Auto-save keeps your changes. This is the right tool for small, deterministic
edits where you already know exactly what you want.
## Changing the angle
The post's intent and hook are set before the copy exists, on the **Start a new post**
screen and in the ideas step. Once you have picked an idea and Rheos has written it up,
the formula is baked into the draft.
So for a bigger shift — "this should be a contrarian post, not an educational one" — you
have two routes:
* Ask for it. Select **Edit** and say "rewrite this as a contrarian take". The whole post
comes back as one **Suggested edit**.
* Start the ideas again. Open a new post, set the intent you want, and let Rheos draft
three fresh angles around it.
See [formulas](/help/posts/formulas) for what intent and hook actually control.
## Regenerating visuals
Open the **Attachments** card under the post. **Generate** opens the
[Image Studio](/help/posts/image-studio), where you can re-prompt or re-roll; **Attach**
adds one from your **Library**. Neither one removes what is already there — hover the old
thumbnail and select its **✕** first. Your text stays put either way.
## Version history
Rheos snapshots your post before certain changes, so you can roll back if a recent edit
made things worse. Open **Version history** (the clock icon) in the editor — restore
points are labelled by what they preceded, and **Restore** puts that version back in the
editor.
A restore point is written when:
| Label | Written when |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Manual save** | You select **Save draft**, or save on the way out — Rheos saves for you when you open **Preview** or close the post, and asks first if you follow a link away with unsaved work. |
| **Before AI edit** | Before a rewrite is applied, whether from a highlight or from **Edit whole post**. |
| **Before brainstorm pick** | Before an idea from the ideas step is written up into the post. |
| **Before restore** | Before you restore an older version, so restoring is itself undoable. |
Typing does not create a restore point. The background auto-save that fires a few
seconds after you stop typing keeps your draft safe, but it writes no version — a long
writing session can leave no intermediate points to go back to. Select **Save draft**
when you reach a state you might want to return to. Version history lists the 20 most
recent points.
## When to use which
| Want to… | Use |
| ---------------------------------- | ------------------------------------------------------------------- |
| Fix a typo or swap one word | Inline edit |
| Rewrite a sentence | Highlight it → comment → **Suggested edit** |
| Rework the whole post | **Edit** in the title row |
| Change the angle of the whole post | Ask for a rewrite, or start the ideas again |
| Swap an image | Remove it with its **✕**, then **Generate** or **Attach** a new one |
| Go back to an earlier version | **Version history** |
A good workflow: start the post, comment-edit two or three lines and accept the changes
you like, regenerate the visual, publish. Most posts take a few minutes.
# Post formulas: intent and hook
Source: https://docs.rheos.app/help/posts/formulas
How Rheos shapes a post — pick an intent for why you are posting and a hook for how you open, and the whole draft changes around them.
Rheos does not just paraphrase your prompt. Every post is built on a formula: **why**
you are posting, and **how** you open. Those are the intent and the hook. Both are
optional, and both change the post completely.
## Where you set the formula
On the **Start a new post** screen, **Choose intent** opens the **Formula tree** — "Intent
first, hook if useful." Pick an intent from the grid and the **Hook** row underneath
fills with the hooks that carry it; until you do, it just reads "Pick an intent to show
matching hooks." **Clear** resets both.
Once Rheos has drafted its ideas you can still change the intent — select a different
**intent chip** above the prompt and hit **Regenerate** to redraw all three ideas around
it. The hook is set at the start.
The formula is baked into the draft the moment you pick an idea. To change the angle
after that, ask for a rewrite from the editor or go back and regenerate the ideas — see
[comments and edits](/help/posts/comments-and-edits).
## Intent — why are you posting?
Rheos carries **eight intents**:
| Intent | Use it when… |
| ------------- | ----------------------------------------------------------- |
| **Sell** | Driving a purchase, a signup or a direct action. |
| **Educate** | Teaching the audience something useful. |
| **Prove** | Building credibility with results and evidence. |
| **Connect** | Building relationship and trust — story, behind the scenes. |
| **Provoke** | Sparking debate or a reaction. |
| **Inspire** | Motivating with aspiration or transformation. |
| **Announce** | News, launches, events. |
| **Entertain** | Delighting, amusing or riding a trend. |
The intent goes to the model as part of the brief, so it colours the whole draft rather
than just the opening. A Sell post and a Provoke post on the same topic read nothing
alike.
## Hook — how do you open?
The first line. Rheos carries 36 hooks, each tagged with the intents it serves, and the
picker shows you every hook that carries the intent you picked — usually between seven and
twelve chips, so expect a wall of them rather than a shortlist. Pick **Sell** and the row
starts Offer, Pain Point, Transformation Tease, Direct, DM Hook, Social Proof… Pick
**Provoke** and it starts Number / Stat, Question, Myth / Misconception, Bold Claim,
Contrarian…
Hooks overlap between intents on purpose — **This vs That** serves Sell, Educate and
Provoke — so the same chip turning up under two intents is not a bug. Hover any chip for
a one-line description of what it does.
Leave the hook alone and Rheos picks one per idea, deliberately picking a different hook
for each of the three so they are not three versions of the same post. Pick one and all
three ideas use it, varying the angle instead.
Try the same prompt twice — once with **Provoke**, once with **Prove**. Same topic,
completely different post. It is the fastest way to see what intent actually does.
## What Rheos decides for you
Intent and hook are the two slots you fill. How the copy is structured and the ask at the
end are the model's call, taken from your brand identity, the intent and the hook — there
are no controls for either in the editor.
Length is the exception. Select LinkedIn on its own and a **Length** slider appears above
the post body, running from short through medium to long. It starts on medium and sets a
soft target the model writes towards. Select anything else, or more than one platform, and
the slider is not there.
If the ending is not what you wanted, that is a rewrite, not a setting: highlight it and
tell Rheos what to change, or use **Edit** for a pass over the whole post.
# Image Studio
Source: https://docs.rheos.app/help/posts/image-studio
Generate on-brand images inside a Rheos post — pick a model, guide it with your logos and reference assets, then add the result to the draft.
The **Image Studio** is the visual half of the Unified Post Editor. It is where you
generate, iterate on and save the images for a post, without leaving the post.
## Opening the studio
Select **Generate** on the **Attachments** card under the post body. The studio opens in
place over the editor, headed **Image Studio**. Close it with the **✕** and you are back
in the post with your copy untouched.
Everything to do with generating and re-prompting happens inside the studio. The
**Attachments** card outside it only attaches and removes: hover an attached visual for
the **✕** that takes it off the post. To change a visual, open the studio again with
**Generate**.
## Generating an image
The prompt box reads "Guide the image (optional) — your post copy & brand are used as the
base". You can leave it empty: Rheos works from the post you have written and your brand
identity. Type into it to steer the result.
Around the prompt sit the controls:
* The aspect-ratio picker, headed **Select Aspect Ratio** — it offers only the ratios that
work for every platform you have selected.
* **Model** — see below.
* **Web search** (the globe) — grounds the generation in a live search. Only offered on
the two Nano Banana models, and it costs a little more per image.
* **Deeper thinking** (the brain) — asks the model to think harder before it draws. The
tooltip warns it is slower. Nano Banana 2 only.
* **Generation settings** (the cog) — **Batch** (1 to 4 images per run), the cost of the
run, and a **Parameters** panel listing the model, size, batch and resolution the run
will use.
The generate button carries the run's cost as a badge, so you can see what a change to
the settings does before you select it.
### Logos and reference assets
Above the prompt is a row with two halves:
* **Logos** — your brand's uploaded logos. Select one to include it in the generation.
* **Reference Assets** — images or documents for the model to work from. Add them from
your library, paste them in, or let Rheos suggest matches from your library once your
prompt is ten characters or longer. You can carry up to ten references and logos
combined.
Upload a clean transparent-background PNG of your logo for the best results.
### Picking a model
| Model | What you get |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Auto** | The default. Rheos routes the request for you, so it carries no extra settings — and **Web search** and **Deeper thinking** are hidden, because which model will run is not known in advance. |
| **Nano Banana 2** | Adds a **Resolution** choice of 1K, 2K or 4K. The only model that offers **Deeper thinking**. |
| **Nano Banana Pro** | Also carries the **Resolution** choice. Costs more per image than Nano Banana 2 at the same resolution. |
| **GPT Image 2** | Adds a **Quality** choice of low, medium or high. Cannot read document references — attach a PDF or a Word file and Rheos switches you back to **Auto**. No web search. |
Pick a specific model and Rheos calls it directly. On **Auto** it tries Google AI Studio
first and falls back to Fal.ai only when Google is rate-limited or unavailable; any other
failure is reported rather than retried elsewhere.
## Working with a generated image
Hover a result and the action bar gives you:
* **Add to post** — attaches it to the draft.
* **Regenerate** — re-runs the same prompt and settings for a fresh result.
* **Edit (iterate on this image)** — seeds a new run from this image; the prompt box
switches to "Describe the change…".
* **Save to library** — the heart. Keeps it in your Library for reuse in later posts.
* **Download**, **Open full size** and **Delete**.
Select several at once and a bar appears at the top with **Add to post**, **Save to
library** and **Delete** across the whole selection.
## What a generation costs
The studio shows the cost of a run before you start it — on the cog's **Generation
settings** panel, and as a badge on the generate button. Four things move it:
* **How many images.** Cost is per image, so a batch of four costs four times a single
one. A regenerate or an **Edit** is a fresh generation, charged the same way.
* **Which model.** **GPT Image 2** on low quality is the cheapest single image; **Nano
Banana Pro**, and **GPT Image 2** on high, are the most expensive. **Auto** sits at the
cheaper end.
* **Resolution and quality.** Stepping **Nano Banana 2** from 1K to 2K costs more;
**Nano Banana Pro** charges the same at either. **GPT Image 2** costs more each time you
step the quality up from low to medium to high.
* **Web search**, which adds a little on top of a Nano Banana run.
Attaching an image you already have, and uploading your own to the Library, cost nothing.
4K is not available on customer accounts yet — the 4K resolution option is greyed out.
How much generating you can do is governed by your plan's fair-use limits — see
[plans](/help/billing/plans).
# How a post works
Source: https://docs.rheos.app/help/posts/overview
Every Rheos post is one body of copy, any media you attach and the platforms you send it to. How the flow runs, and what each platform accepts.
Rheos does not ask you to pick a post type. Every post is the same object: a body of copy, any media you attach, and the platforms you are publishing to. What the post *becomes* is decided by what you attach and where you send it.
## The flow
Pick a brand, tick the platforms, optionally set an intent and a hook, then type what the post is about. Select **Continue**.
Rheos drafts three ideas. Each card shows its intent and its hook. Pick one and select **Continue** to write it up — or select **Write manually** to skip the ideas and go straight to a blank editor.
The Unified Post Editor opens with the copy written. Highlight a line to have Rheos rewrite it, add hashtags, and attach or generate a visual.
Check the preview for each platform, then **Post now** or **Schedule**.
All four steps happen on one screen. The [Unified Post Editor](/help/posts/unified-post-editor) page walks through each of them in detail.
## Copy and media
A post starts as copy. The **Attachments** card under the post body gives you two routes to a visual:
* **Attach** — pick something you have already saved to your Library.
* **Generate** — make an AI image in the embedded [Image Studio](/help/posts/image-studio).
To use a photo of your own, upload it on the **Library** page first, then **Attach** it here.
Attach more than one image and the platforms that support multi-image posts publish them as a carousel. Rheos caps attachments at the tightest limit among the platforms you have selected, and tells you which platform set the cap when it drops the extras.
Instagram and Pinterest cannot publish a text-only post. If either is selected with nothing attached, Rheos blocks **Schedule** and **Post now** and shows a banner: "Instagram needs an image or video. Add media or deselect that channel to continue."
## What each platform accepts
| Platform | Text-only post | Images per post | Caption limit |
| --------- | :------------: | :-------------: | ------------- |
| LinkedIn | Yes | Up to 20 | 3,000 |
| Instagram | No | Up to 10 | 2,200 |
| Facebook | Yes | Up to 10 | 63,206 |
| X | Yes | Up to 4 | 280 |
| Bluesky | Yes | Up to 4 | 300 |
| Mastodon | Yes | Up to 4 | 500 |
| Pinterest | No | Up to 5 | 500 |
One caption goes to every platform you tick. The preview shows it in each platform's own styling so you can see how it will land, and Rheos warns you before you publish if the copy is over one of these limits. Editing the caption per platform is not available yet — see [per-platform posting](/help/publishing/per-platform).
**Threads**, **TikTok** and **YouTube Shorts** are coming soon. They show up in the platform picker — YouTube Shorts appears there as **YouTube** — but there is no way to connect them yet, so they stay dimmed and selecting one opens **Social Accounts**.
## Where posts live
There is no separate posts page. Your work is reached from two places, and they do not show quite the same thing:
* **Recent** in the sidebar — your 25 most recently updated posts, narrowed to the brand you have selected. Status does not matter: drafts, scheduled, published and failed all appear. Five are listed to start, with **Show more** underneath for the rest; select one to reopen it in the editor.
* **Drafts & recent** on **Home** — the backlog, grouped by day. It leaves out anything currently scheduled or mid-publish, so a post you have scheduled shows in the sidebar but not here. Scheduled posts live on the **Content Plan** instead.
Start a new one with **New post** on **Home**, or the **+** on the sidebar's **Recent** row.
Ready to dig in? Start with the [Unified Post Editor](/help/posts/unified-post-editor).
# Unified Post Editor
Source: https://docs.rheos.app/help/posts/unified-post-editor
Take a Rheos post from prompt to publish on one screen — start a post, pick an idea, refine the copy, attach a visual and schedule it.
The **Unified Post Editor** takes a post from idea to published. It is a short three-step
flow: **start a post → pick an idea → edit and publish.**
## Step 1 — Start a new post
A new post opens on the **Start a new post** screen. Work down it:
1. The brand picker at the top, reading "Pick a brand…" until you set it. Nothing else
on the screen is active until you have.
2. **Platforms** — a row of icons for the platforms this brand can post to. Select one to
include it. Platforms you have not connected are dimmed ("Connect *X* to use it"), and
selecting one opens **Social Accounts** in a new tab rather than selecting it.
**Threads**, **TikTok** and **YouTube** are in that row but cannot be connected yet —
they are coming soon, so they stay dimmed.
3. **Targeting** *(optional)* — **About** decides whether the post is about you
(**Myself**) or about one of your other business brands.
4. **Choose intent** *(optional)* — opens the **Formula tree**: an intent first, then a
hook if you want one. **Clear** resets both. See [formulas](/help/posts/formulas).
5. **Audience** — sits beside the formula. It defaults to **All audiences**; tick any of
the audiences defined on the brand to aim the post at them.
6. The prompt box, "Give the post direction…". A line is enough. Select **Continue**.
Two controls sit on the prompt box itself:
* The paperclip, **Attach context** — **Upload** a file or take one **From library** and
the AI works from it as well as your prompt. A badge shows how many are attached.
* The clock, **Prompt history** — your recent prompts, select one to reuse it. The up and
down arrow keys walk the same list without opening the menu.
Already know what you want to say? Select **or write manually →** to skip the ideas and
open a blank editor, with anything you typed carried into the body.
## Step 2 — Pick an idea
Rheos drafts **three ideas**. Each is a starting point rather than a finished post — a
hook and an angle, not the full copy.
Each card shows its **intent** (Sell, Provoke, Prove and so on), the hook type it uses —
Pain Point, Prediction, Before / After — and the opening line itself. **More details**
expands the **Angle**, a sentence or two on the approach it would take, and a **Summary**
of what the full post would cover.
To steer the set, select an **intent chip** (Sell, Educate, Prove, Connect, Provoke,
Inspire, Announce, Entertain), adjust the prompt underneath, and select **Regenerate**.
Earlier batches are not lost — once you have more than one, arrows and a counter ("1/3")
appear to the right of the intent chips so you can step back and forward through them.
Select the card you want, then **Continue**. Rheos writes the post and opens the editor.
**Write manually** leaves the ideas behind and takes your prompt into a blank body instead.
## Step 3 — The editor
A strip of controls runs across the top, above the post itself.
On the left, one icon tab per platform you have selected. Selecting a tab points the
character counter at that platform's limit, and hovering it shows the count against that
limit. A tab carries a warning dot when that connection needs reconnecting.
Beside the tabs is **+ Pick a platform** — it reads that way while nothing is selected and
shrinks to a **+** once something is. It opens a **Publish to** list: connected platforms
toggle on and off, and unconnected ones show **Connect →** and open **Social Accounts** in
a new tab.
On the right:
* A live save status — **Draft · saved**, **Draft · unsaved** or **Saving…**.
* The paperclip, **Attach context** — the same **Upload** / **From library** picker as on
the start screen, for material the AI should work from.
* The clock, **Version history**.
* **✕**, which closes the post and takes you back to Home.
Below the strip:
* **The title** — a plain text box at the top of the post card. Select into it and type to
rename the post; it saves when you press Enter or select away.
* **Edit**, beside the title, is not a rename. It opens the **Edit whole post** popover
and runs an AI rewrite of the whole thing. It is greyed out until there is a body to
rewrite.
* **The body** — the caption, in a single scrollable card. It is a normal text box, so
type, paste and edit freely.
* **Hashtags** — chips in a row along the bottom of that card, kept separate from the copy
rather than typed into it. The **#** button opens the hashtag picker: type to add one,
star the ones you reuse so they follow the brand, or save the current set as a group and
apply it in one select later.
* **Attachments** — the card under the post. Empty, it offers **Attach** ("Upload or
library") and **Generate** ("AI image"). Once something is attached the thumbnails
appear in that card, with a **+** tile beside them and **Attach** / **Generate** buttons
underneath. Hover a thumbnail for the **✕** that removes it.
* **Save draft** and **Preview →** sit at the bottom.
### Refining the text
Highlight any sentence in the body and a small comment button appears beside it. Select it
and a popover opens — type a short instruction and Rheos rewrites just that span:
* "Make this punchier"
* "Shorten by half"
* "Swap to UK English"
* "Add a stat about retention"
The popover also carries quick prompts — **Make shorter**, **More casual**, **Sharper
hook**, **Add a stat** — which fire on one select. Press Enter to submit, Escape to close.
For a pass over the whole thing, select **Edit** in the title row. The same popover opens
headed **Edit whole post**, with post-level quick prompts: **Tighten the whole post**,
**Punchier opening**, **Stronger CTA**, **More on-brand tone**.
Either way the rewrite comes back as a **Suggested edit** shown inside the post box, not
as a silent overwrite. See [comments and edits](/help/posts/comments-and-edits) for how
to review it.
### Adding and editing visuals
**Attach** opens your Library so you can drop in media you have already saved. To use a
photo of your own, upload it on the **Library** page first, then attach it here.
**Generate** opens the [Image Studio](/help/posts/image-studio) over the post — your copy
stays exactly where it was while you work, and closing the studio returns you to it.
Add more than the tightest limit among your selected platforms and Rheos keeps what fits
and tells you which platform set the cap: "Instagram allows up to 10 images — extras
weren't added."
### Auto-save and version history
Drafts save as you work; the status flips between **Draft · unsaved** and
**Draft · saved**. Close the tab and come back and your work is still there.
Open **Version history** (the clock icon) to roll back. Restore points are labelled by
what they preceded — **Manual save**, **Before AI edit**, **Before brainstorm pick**,
**Before restore**. **Restore** puts that version back in the editor.
Background auto-saving keeps your draft safe but does not add a restore point. Select
**Save draft** at a moment you might want to come back to, and version history will
have it.
### Publishing
Rheos counts characters as you type and warns you, by name, when a caption is over a
selected platform's limit — X (280), Bluesky (300), Instagram (2,200) or LinkedIn
(3,000). The warning is a chip in the top strip reading "X over limit"; hover it to see
the count against each limit. **Preview**, **Post now** and **Schedule** stay disabled
until you are back under.
Instagram and Pinterest cannot publish a text-only post. Select one with nothing
attached and Rheos blocks the next step: "Instagram needs an image or video. Add media
or deselect that channel to continue."
Select **Preview →** to see the post as each platform will show it. From there:
* **Post now** takes you to a confirmation screen listing the accounts you are publishing
to; **Post now** again sends it.
* **Schedule →** opens the calendar. Pick a date and time and select **Confirm**.
Each screen has a back button on the left: **Edit** on the preview, and **Preview** on the
confirmation and calendar screens.
For the formula details, see [formulas](/help/posts/formulas). For the visual side, see
[Image Studio](/help/posts/image-studio).
# Connect social accounts
Source: https://docs.rheos.app/help/publishing/connect-socials
Connect Instagram, LinkedIn, Facebook, X, Pinterest, Bluesky and Mastodon to Rheos so you can schedule and publish posts to each network.
Rheos publishes to seven networks: **Instagram**, **LinkedIn** (personal profile and company
pages), **Facebook**, **X**, **Pinterest**, **Bluesky** and **Mastodon**. Connect each account
once, and Rheos keeps the connection alive where the network allows it.
## Connections belong to a brand
**Settings → Social Accounts** lists your personal account first, then one section per business
brand. Each section holds its own connections, and the networks on offer differ:
| Section | Networks you can connect |
| ---------------- | -------------------------------------------------------------------------------- |
| Personal account | LinkedIn **Personal Profile**, X, Bluesky, Mastodon |
| A business brand | LinkedIn **Company Pages**, Instagram, Facebook, X, Pinterest, Bluesky, Mastodon |
Instagram, Facebook, Pinterest and LinkedIn company pages only appear under a business brand —
you won't find them under Personal. X, Bluesky and Mastodon appear in both, and are connected
separately for each brand.
Each section header shows how many accounts are connected, and turns amber with a count of how
many need attention when one of them needs reconnecting.
**Threads, TikTok and YouTube Shorts are coming soon.** They already show up in the composer's
platform list, but there is no card for them in **Settings → Social Accounts**, so there's no way
to connect an account yet and nothing can publish to them. Ignore them for now.
## How to connect an account
From the sidebar, open **Settings**, then **Social Accounts**.
Pick your personal account, or the business brand this account belongs to.
Rheos takes you to that network's sign-in page and brings you back when you're done.
The card shows a green **Connected** badge with the account name. You can now select that
network on a post.
Bluesky, Mastodon and X don't quite follow that pattern — see below.
## Platform notes
Rheos connects to Instagram directly, not through a Facebook Page. You need an **Instagram
Business or Creator account** — personal accounts can't publish through the API. If you're
switching from personal, do that in the Instagram app first, then connect.
Two separate cards. **Personal Profile** lives under your personal account; **Company Pages**
lives under a business brand.
Connecting company pages authorises every page you administer, but only one page publishes
for that brand. If you admin more than one, Rheos asks which — until you pick, company-page
posts for that brand can't go out. Select **Set active** on the page you want. You can change
it any time from the same list.
If no pages appear, check you're a Super Admin or Content Admin of the page on LinkedIn, then
reconnect.
You connect a Facebook Page, not your personal profile. Make sure you're a Page admin first.
Rheos authorises every Page you grant and picks one as the publishing Page. If you manage
several, the card names the Page posts go to — select **Change** to switch.
X reuses whatever X session your browser already has, so it can quietly connect the wrong
account. Rheos shows a short dialog before sending you over: **Open X logout**, sign out,
come back, then **Continue to X** and sign into the account you actually want.
Bluesky doesn't use OAuth. Create an app password at
`bsky.app/settings/app-passwords`, then type your handle (e.g. `you.bsky.social`) and that app
password into the card and select **Connect**. Use an app password, not your account password.
Mastodon is federated, so Rheos needs to know which server you're on. Type your instance
(e.g. `mastodon.social`) into the card first, then select **Connect** to sign in there.
Standard sign-in and approve. Afterwards, pick the board Rheos should pin to — **Pick
board** on the Pinterest card. Until a default board is set, Pinterest posts fail.
## When a connection expires
Most networks issue credentials that expire. Rheos renews what it can, and asks you to
reconnect only where the network makes that unavoidable.
| Network | What happens |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| Instagram | Renews itself in the background |
| X | Renews itself each time it publishes |
| Pinterest | Renews itself each time it publishes |
| LinkedIn (profile and company pages) | Renews itself when your connection was issued a refresh token; if it wasn't, expect a reconnect roughly every 60 days |
| Facebook | Always needs a manual reconnect, roughly every 60 days |
| Bluesky | Rheos doesn't track an expiry date, and refreshes your Bluesky session each time it publishes |
| Mastodon | Rheos doesn't track an expiry date |
Bluesky has no countdown, but it isn't immune to needing you. Rheos refreshes the Bluesky session
on every publish, and if Bluesky rejects that refresh the publish fails with a "Bluesky session
refresh failed" error asking you to reconnect. That usually means the app password was revoked or
changed — create a fresh one and reconnect the card.
### When a connection needs attention
Two warnings exist, and they don't start at the same moment:
* **The brand section header** goes amber with a count — "1 needs attention" — from **14 days**
before a connection Rheos can't renew for you runs out. That means LinkedIn without a refresh
token, and Facebook.
* **The LinkedIn and Instagram cards inside** count down separately, from **7 days** out: "Token
expires in N days". Only the LinkedIn cards carry a **Reconnect** link — Instagram's countdown
is plain text.
So from 14 days out to about 8, the header flags something the cards haven't spelled out yet.
Nothing is broken and nothing has stopped working. Treat the amber header as the signal: reconnect
from the card and it clears. The Facebook card carries no countdown at all — use the refresh icon
on it.
The card countdowns run off the credential's own expiry date, not off whether Rheos can renew it.
Instagram's says so outright — "It will be refreshed automatically" — and the section header stays
green for it. A LinkedIn connection with a refresh token behaves the same way. Reconnecting anyway
does no harm.
Reconnecting takes you back through the same sign-in as the first time; nothing else about the
account changes.
If a scheduled post fails because a connection expired, the post isn't lost. Reconnect, open the
post, and use **Retry failed**. See [publishing troubleshooting](/help/publishing/troubleshooting).
Still stuck? Email **[support@rheos.app](mailto:support@rheos.app)**.
# Per-platform variations
Source: https://docs.rheos.app/help/publishing/per-platform
How one Rheos caption lands on each network: per-platform previews, character limits and media caps, plus what per-platform editing will add.
**Per-platform editing is coming soon.** Today a Rheos post has **one body**, and that body goes
to every network selected on it, unchanged. There is no separate LinkedIn version and Instagram
version of the same draft — the per-platform views are previews, and they're read-only.
What *is* per-platform today is what Rheos shows you and what it checks: a preview skinned like
each network, a character limit, a cap on how many images fit in one post, and a media rule for
the networks that have no text-only post type.
Need genuinely different copy for two networks right now? Write two posts and select one network
on each.
## Previews
Select **Preview** in the editor and you get one tab per selected network, each rendering your
caption and media the way that platform will. The previews are **read-only** — you edit in the
body, and every tab updates together.
Three platforms have a second view:
* **Instagram** — **Post** or **Grid** (Grid appears once the post has an image)
* **Facebook** — **Feed** or **Post**
* **Pinterest** — **Pin** or **Board**
## Limits per network
| Platform | Characters | Images per post | Best image ratio |
| --------- | ---------- | --------------- | ---------------- |
| X | 280 | 4 | 16:9 |
| Bluesky | 300 | 4 | 1:1 |
| Mastodon | 500 | 4 | 16:9 |
| Pinterest | 500 | 5 | 2:3 |
| Instagram | 2,200 | 10 | 4:5 |
| LinkedIn | 3,000 | 20 | 1:1 |
| Facebook | 63,206 | 10 | 4:5 |
Mastodon takes images only — it has no video post type in Rheos.
**Threads, TikTok and YouTube Shorts are coming soon.** They appear in the composer's platform
list, but there's no way to connect an account to them yet, so nothing can publish there. See
[connect social accounts](/help/publishing/connect-socials).
## Character counting
The editor shows one tab per selected network. The counter under the body counts against whichever
tab you're on, so switching tabs changes the number you're writing to. It starts on the first
network you selected.
Whichever tab you're on, the post still has to fit **every** network selected on it. Going over any
one of them disables **Preview**, **Post now**, **Schedule** and **Confirm** until you trim, so an
over-length post can't be sent at all. A red pill names the networks that are over — "X, Bluesky
over limit" — and hovering it shows your count against each one's limit.
## Media
Rheos does not crop or re-frame your media, and it never changes the aspect ratio you created it
at. If a ratio matters, crop before you publish — otherwise the platform decides, and X
centre-crops a 4:5 image.
One exception, and it's Bluesky. Bluesky rejects any image over 2 MB. On a **scheduled** publish
Rheos handles that for you: it re-encodes an oversized image to JPEG and shrinks its longest edge
until it fits, so framing survives but fine detail and file type may not. On **Post now** the file
goes up as you attached it — if Bluesky rejects it for size, the post still goes out, just without
that image. Keep Bluesky images under 2 MB and both paths behave the same.
Every other network gets the file exactly as you attached it.
Attach more images than a selected network allows and Rheos trims to the lowest cap as you
attach, naming the network that set it.
**Instagram** and **Pinterest** have no text-only post type. Rheos blocks scheduling and
publishing to them until the post has an image, carousel or video in the **Attachments** card.
Add media, or untick that network for this post.
## Hashtags
Hashtags come from one list and go to every network — there's no separate set per platform.
How that list is trimmed depends on **how** you send the post, which is the one place the two
publish paths differ:
| How you send it | What happens to the hashtags |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| **Post now** from the editor | Rheos trims the list to each network's own cap before sending — Instagram, Facebook and LinkedIn 30, Pinterest 20, X, Bluesky and Mastodon 10 |
| **Scheduled** for later | The full list is sent to every network as written — nothing is trimmed |
Because a scheduled post isn't trimmed, more than 30 hashtags on a scheduled Instagram post will
be rejected by Instagram itself and that network will fail. Keep the list at or under 30 — and
under 20 if Pinterest is selected — and both paths behave the same.
On X the 280-character limit bites long before the hashtag cap does.
Mentions aren't supported yet. Typing `@` doesn't open a picker on any network — write the name
as plain text.
Email **[support@rheos.app](mailto:support@rheos.app)** if anything looks off.
# Scheduling posts
Source: https://docs.rheos.app/help/publishing/scheduling
Schedule a Rheos post to publish automatically — how the time slots work, where scheduled posts live, and what happens when you edit one.
Publish a post immediately, or pick a slot and let Rheos send it for you. A scheduled post waits
in the queue until its time, then goes out to every network selected on it.
## Schedule a post
Write it in the editor, then select **Preview** to check how it lands on each network.
On the preview screen, **Post now** and **Schedule** sit side by side. **Schedule** opens the
calendar. (**Post now** does *not* publish on the first select — see
[publishing immediately](#publishing-immediately-instead) below.)
Pick a day, then a time. The picker offers half-hour slots from **08:00** to **21:30** —
those are the only times you can pick from the editor.
Select **Confirm**. The post moves to its scheduled state, and the editor gives way to the
read-only summary described below.
Times are read in your browser's timezone. Rheos has no account-level timezone setting, so if
you're working away from home, check what the slot means before you confirm.
## Publishing immediately instead
**Post now** takes two selects, not one.
The **Post now** button on the preview screen doesn't send anything — it switches the editor to a
confirmation view listing the accounts the post is going to. A **second** button, also labelled
**Post now**, sits at the bottom of that view, and that is the one that publishes. Until you select
it, nothing has left Rheos.
You'll know it worked: the button shows a spinner and a "Publishing to N platforms…" message
appears, then the editor drops back to the preview screen with the post marked as publishing.
Changed your mind on the confirmation view? Select **← Preview** to back out. Nothing is sent.
## Where scheduled posts live
Scheduled posts appear on your Home dashboard under **Content Plan**. Select the calendar icon
next to **New post** to switch that panel to a full **Content Calendar** month grid.
From the calendar you can drag a post onto a different day. That opens a **Schedule post**
dialog, where you can pick any hour — still on the hour or the half hour — and where Rheos
warns you if another scheduled post is already hitting the same channel at that hour.
## Editing a scheduled post
Open a scheduled post and you don't get the editor. You get a read-only summary: the heading
**Scheduled**, the date and time it's going out ("Fri 8 Aug at 14:30"), and a **Posting to** card
listing the accounts it's aimed at. You can't type into the body from here.
The actions sit in a row underneath:
* **Reschedule** — reopens the calendar on the existing time so you can move it. The post stays
scheduled the whole way through.
* **Edit post** — unschedules the post and drops you into the editor. It goes back to draft
("Unscheduled for editing"), and you'll need to schedule it again afterwards.
* **Cancel schedule** — has the same effect as **Edit post**: the post is unscheduled and moves
back to drafts ("Unscheduled — moved back to draft"). The wording differs, the outcome doesn't.
* **Back to home** — leaves the post exactly as it is and returns you to the dashboard.
**Edit post** and **Cancel schedule** both cost you the slot. If all you want is a different time,
use **Reschedule**.
## How publishing runs
At the scheduled time, Rheos sends the post to each connected network on it. The networks are
independent: if one fails — an expired connection, a rejected image — the rest still go out.
The post lands as **partial**, with the error recorded against the network that failed. See
[publishing troubleshooting](/help/publishing/troubleshooting) for what to do next.
A scheduled post sends your hashtag list exactly as written — unlike **Post now**, which trims it
to each network's cap first. Instagram rejects a caption carrying more than 30 hashtags, so keep
the list at or under 30 (and under 20 if Pinterest is selected) before you schedule. See
[per-platform variations](/help/publishing/per-platform#hashtags).
Connect a new account after scheduling a post and that post won't pick it up. Open the post,
select **Edit post** to unschedule it, add the network, then schedule it again.
Two things will stop **Confirm** working. Copy over a selected network's character limit greys the
button out — the red pill in the editor names which network. A network that needs media on a post
with none attached lets you select, then refuses with "Instagram needs an image or video". Fix
either in the editor and come back.
Need help? Email **[support@rheos.app](mailto:support@rheos.app)**.
# Publishing troubleshooting
Source: https://docs.rheos.app/help/publishing/troubleshooting
Why Rheos posts fail to publish — expired connections, missing media, daily limits, duplicate content and missing destinations — and how to fix each one.
Publishing failures almost always come down to one of four things: a connection that needs
reconnecting, content a network won't take, a destination that was never picked, or a Rheos
safety check. Here's how to spot and fix each.
## A post failed to publish
Networks publish independently, so a failure is usually partial: one network is red and the rest
went out. The post lands as **partial** (or **failed**, if none of them made it).
Look under **Drafts & recent** on your Home dashboard, or **Recent** in the sidebar. Both
list failed and partial posts.
Don't go looking in **Content Plan** — that timeline only carries posts still waiting to go
out, so a failed post drops off it.
The **Results** panel lists every network the post went to, with a red mark and the
platform's own error message on the ones that failed.
Reconnect the account, or fix whatever the message asks for, then select **Retry failed**.
That resends only the networks that failed — the ones that already published are left alone.
If the failure needs something the post doesn't have — an image for Instagram, say — retrying
can't help. Use **Create a new post to fix this**. It clones the copy into a fresh draft
targeting only the failed networks, and leaves the ones that already published alone.
## Common errors
The network invalidated your access. Go to **Settings → Social Accounts**, open the brand
section holding that account, and reconnect from its card. Then retry the post.
Rheos renews most connections for you: Instagram in the background, X and Pinterest each time
they publish, and LinkedIn too when your connection was issued a refresh token. **Facebook**
is the one that always needs a manual reconnect, roughly every 60 days.
Bluesky and Mastodon have no expiry date for Rheos to track, but Bluesky can still ask for a
reconnect: Rheos refreshes the Bluesky session on every publish, and if Bluesky rejects that
refresh the publish fails with a "Bluesky session refresh failed" or "Bluesky token refresh
failed" error. That usually means the app password was revoked or changed — create a new one
and reconnect the card.
Reconnecting is also how you grant new permissions when Rheos adds a capability that needs
them.
**Instagram** and **Pinterest** have no text-only post type, so Rheos blocks scheduling or
publishing to them until the post has media attached. You'll see "Instagram needs an image or
video" (or "Pinterest needs…") with "Add media or deselect that channel before publishing".
Add an image, carousel or video from the **Attachments** card — or untick that network for this
post — and you'll be able to publish.
A pin has to go somewhere. Until a default board is set, every Pinterest publish fails
pre-flight with "No Pinterest board selected".
Go to **Settings → Social Accounts**, open the Pinterest card and select **Pick board**. The
connect flow offers this once, but it's dismissible — so it's easy to miss.
If you admin more than one LinkedIn company page, Rheos authorises them all but publishes to
only one — and it won't guess which. Until you pick, company-page posts for that brand fail.
Open **Settings → Social Accounts**, find the **Company Pages** card under that brand, and
select **Set active** on the page you want to publish to.
Your Instagram account needs to be **Business** or **Creator** — personal accounts can't
publish through the API. Switch it in the Instagram app under Settings → Account type, then
reconnect in Rheos.
Each network has its own rules. Instagram takes 1:1, 4:5 or 9:16 video, and a 9:16 clip posts
as a Reel. Instagram carousels are capped at 10 slides and every slide has to match the first
slide's ratio; X caps a post at 4 images, Pinterest at 5.
Rheos doesn't check video length, so a clip over the network's own limit is rejected by the
platform rather than caught in the editor. Swap or re-encode the media and retry.
This is a Rheos cap, not the platform's. To stay comfortably inside each network's own limits,
Rheos allows a set number of posts per connected account per day: X 15, Facebook 20, Pinterest
50, LinkedIn 80, Instagram 90, Bluesky and Mastodon 100.
The counter resets at midnight UTC, so waiting an hour won't help. Reschedule the post for the
next day.
Rheos blocks republishing identical content — same text, same media, same networks — within
10 minutes, so an accidental double-click doesn't double-post. You'll see "You just published
this exact post".
If you meant it, select **Publish anyway** on the warning. There's no need to reword the copy.
Deleting an asset from your Library after attaching it to a post doesn't raise an error. At
publish time Rheos simply skips the attachment it can no longer find, and the post goes out
text-only on every network that allows text-only posts.
On **Instagram** and **Pinterest**, which need media, losing the only attachment leaves nothing
to send and that network fails with "Instagram requires at least one media item" or "Pinterest
requires an image to create a pin".
Either way the fix is the same: open the post, attach the image again from the **Attachments**
card, and publish it again. Deleting from the Library is what breaks the link — keep an asset
there while any post still references it.
## Still stuck?
Email **[support@rheos.app](mailto:support@rheos.app)** with the post title, the network that failed, and the error message
shown in the **Results** panel. Those three things are what we need to trace it.
# Rheos documentation
Source: https://docs.rheos.app/index
Help articles, product guides and developer reference for Rheos — the AI social media platform that drafts, schedules and publishes posts for SMEs.
Rheos turns your brand into an AI-powered social media team. Connect your accounts, set your brand voice, and ship on-brand posts to Instagram, LinkedIn and beyond.
Sign up, let Rheos build your brand, and publish your first post.
Walk through the Unified Post Editor, from a one-line brief to a finished draft.
Hook up Instagram, LinkedIn, Facebook, X, and more.
Upload, organise and reuse your images, video and documents.
Brainstorm, draft, and publish straight from claude.ai, ChatGPT, or Cursor.
## Popular topics
* [Plans](/help/billing/plans) — what's included on Social Media Manager and Marketing Team.
* [Scheduling](/help/publishing/scheduling) — put posts on the calendar and let Rheos publish them for you.
* [Brand sources](/help/brands/brand-sources) — feed Rheos your website, documents, and tone of voice.
* [Troubleshooting publishing](/help/publishing/troubleshooting) — token expiry, failed posts, reconnects.
## Need help?
Email **[support@rheos.app](mailto:support@rheos.app)** or DM us on [LinkedIn](https://linkedin.com/company/rheosapp).