# Voholabs Studio docs, full text > Voholabs Studio is a hosted social media scheduler with an MCP server, a public API and a CLI, so people and AI agents can plan, schedule and publish posts across social networks and a Sanity blog. These docs cover using Studio, connecting AI agents, the API and billing. Generated from https://voholabs.com/docs. Index: https://voholabs.com/docs/llms.txt # Voholabs Studio docs > Voholabs Studio is a hosted social media scheduler that you, or an AI agent working for you, can use to plan, schedule and publish posts to X, LinkedIn, Instagram, Facebook, Threads, TikTok, YouTube, Discord and a Sanity blog. These docs explain how to set it up, connect an agent, use the API and pay for the few features that cost credits. Source: https://voholabs.com/docs Last updated: 5 October 2026 Studio is free to start, with no card. You connect your channels, write or import posts, and Studio publishes them at the time you choose. You can do all of it in the app, or connect Claude, ChatGPT or a coding agent and let it do the work through Studio's MCP server. ## Where should I start? - **New to Studio?** Follow [Getting started](https://voholabs.com/docs/getting-started) to connect a channel and schedule your first post, then read [How Voholabs Studio works](https://voholabs.com/docs/getting-started/concepts). - **Writing and scheduling?** See [Create a post](https://voholabs.com/docs/posts/create), [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) and [The calendar](https://voholabs.com/docs/posts/calendar). - **Want an AI agent to post for you?** Read [Connect your agent](https://voholabs.com/docs/agents), then the page for [Claude](https://voholabs.com/docs/agents/claude), [ChatGPT](https://voholabs.com/docs/agents/chatgpt) or [developer tools](https://voholabs.com/docs/agents/developer-tools), and fill in your [brief](https://voholabs.com/docs/getting-started/brief). - **Something not working?** Start with [Troubleshooting](https://voholabs.com/docs/help/troubleshooting). - **Building an integration?** Start with the [public API](https://voholabs.com/docs/api), [OAuth apps](https://voholabs.com/docs/api/oauth) or the [CLI](https://voholabs.com/docs/cli). - **Posting to X, or wondering what costs money?** See [Plans and billing](https://voholabs.com/docs/billing), [Credits and wallet](https://voholabs.com/docs/billing/credits) and the [X channel page](https://voholabs.com/docs/channels/x). ## Which networks does Studio publish to? X, LinkedIn (profiles and pages), Instagram, Facebook Pages, Threads, TikTok, YouTube, Discord and Sanity. The [channels overview](https://voholabs.com/docs/channels) lists what each one accepts. ## Are these docs available to AI assistants? Yes. Every page has a Markdown version at the same address with `.md` on the end, for example [getting-started.md](https://voholabs.com/docs/getting-started.md). The full set is in one file at [/llms-full.txt](https://voholabs.com/llms-full.txt), and [/docs/llms.txt](https://voholabs.com/docs/llms.txt) lists every page with a one-line summary. --- # Getting started with Voholabs Studio > Sign up at studio.voholabs.com with Google or an email address, answer a few short questions, connect a channel, then write a post and choose Add to Calendar. Studio publishes it at the time you picked, and you can connect an AI agent at any point to do the same work for you. Source: https://voholabs.com/docs/getting-started Last updated: 5 October 2026 You need about five minutes and an account on at least one network Studio publishes to. If you would rather have an AI agent do the posting, follow steps 1 to 3, then go to [Connect your agent](https://voholabs.com/docs/agents). ## How do I set up Studio and schedule my first post? 1. Go to [studio.voholabs.com](https://studio.voholabs.com) and sign up with Google, or with an email address and a password. You agree to the [Studio terms](https://studio.voholabs.com/terms) once, at sign-up. 2. Fill in **Tell us a bit about you**: your name, your company website, your role, what you will use Studio for and where you found us. Use your own website; example addresses are refused. 3. In **Connect Your Channels**, click a network and sign in to it to authorise Studio. Repeat for every account you want to post to, then choose **Next: connect your agent**. 4. Connect an AI agent now, or choose **Skip for now** and then **Finish**. You can do it later from **Settings › Connect Agent**. 5. In the calendar, choose **Create Post**, pick the channels it goes to and write it. Each channel shows its own character count and settings. See [Create a post](https://voholabs.com/docs/posts/create). 6. Pick a date and time and choose **Add to Calendar**. Studio publishes the post at that time. See [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling). 7. Once it has gone out, hover the post in the calendar and choose **View the live post** to open it on the network. > [!TIP] > To try things without publishing anything, choose **Save as draft** instead of adding it to the calendar. Drafts never publish and never spend credits. ## What can I connect? X, LinkedIn profiles, LinkedIn Pages, Instagram (two ways), Facebook Pages, Threads, TikTok, YouTube, Discord servers and Sanity projects. Every other network in the **Add Channel** dialog is marked **Coming soon**. See the [channels overview](https://voholabs.com/docs/channels) for what each one accepts. X works differently on the free plan: it is locked until you top up your wallet, because X charges for every post sent through its API. The [X page](https://voholabs.com/docs/channels/x) explains how that works. ## How do I let an AI agent post for me? Copy your connector link from **Settings › Connect Agent** and add it to Claude or ChatGPT, or paste a config into Claude Code, Cursor or another coding agent. Then ask it, for example, to list your channels and schedule a post for tomorrow at 9am. The step-by-step guides are under [Connect your agent](https://voholabs.com/docs/agents). ## What is free and what costs credits? Channels, posts, the calendar, team members, webhooks, the public API, MCP and 2 GB of media storage are free. A few things cost credits from a prepaid wallet: posting to X, storage above the free amount and the guided brief onboarding after the first one. Prices are on the live [prices page](https://studio.voholabs.com/pricing). See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Where do I go next? - [How Voholabs Studio works](https://voholabs.com/docs/getting-started/concepts): the words Studio uses. - [Brief and guided onboarding](https://voholabs.com/docs/getting-started/brief): tell your agent about your brand. - [Create a post](https://voholabs.com/docs/posts/create) and [The calendar](https://voholabs.com/docs/posts/calendar) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Team members and roles](https://voholabs.com/docs/workspace/teams) - [Connect your agent](https://voholabs.com/docs/agents) - [Plans and billing](https://voholabs.com/docs/billing) - [Troubleshooting](https://voholabs.com/docs/help/troubleshooting) and the [FAQ](https://voholabs.com/docs/help/faq) ## Frequently asked questions ### Do I need a card to start? No. The free plan needs no card and has no trial that runs out. You only pay if you top up your wallet for a pay-per-use feature such as posting to X. See [Plans and billing](https://voholabs.com/docs/billing). ### Can I skip the questions after sign-up? No. The short "Tell us a bit about you" form is required once, before you reach the app. It asks for your name, your company website, your role, what you will use Studio for and where you found us. ### Can I connect my agent later? Yes. Choose Skip for now in the onboarding, and connect it any time from Settings › Connect Agent. ### Which time zone does Studio use for my posts? Studio shows and schedules times in the time zone of the browser you are using. When you ask an agent to schedule, name the time zone you mean. --- # How Voholabs Studio works > Studio organises your work into a workspace that holds channels, the accounts you publish to, and posts, which go out on a schedule. This page explains each term you meet in the app and the API. Source: https://voholabs.com/docs/getting-started/concepts Last updated: 5 October 2026 You do not need to learn these words to use Studio, but they help when you read the rest of the docs, use the [API](https://voholabs.com/docs/api) or ask an [AI agent](https://voholabs.com/docs/agents) to do something for you. ## What is a workspace? A workspace is the account everything else lives in: your channels, posts, media library, settings, API key and, on the free plan, the wallet. You create one when you sign up, and you can invite colleagues to it. See [Team members and roles](https://voholabs.com/docs/workspace/teams). ## What is a channel? A channel is one account Studio publishes to, such as an X profile, a LinkedIn Page, a Discord server or a Sanity project. You connect it once, and it then appears in the left-hand list of the calendar. See the [channels overview](https://voholabs.com/docs/channels). ## What is a customer? A customer is an optional label for a group of channels. Agencies use it to keep one client's channels apart from another's. To assign a channel, choose **Move / add to group** in the channel's menu, then pick or type a name under **Select Customer**. Once you have more than one customer, a **Select Customer** filter appears in the calendar and the composer, so you only see that customer's channels. The API calls customers groups. ## What is the difference between a draft and a scheduled post? A draft is saved but never publishes on its own. A scheduled post is on the calendar with a date and time, and Studio publishes it then. You can move a post between the two at any time before it goes out. See [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling). ## What is a post group? When you write one post for several channels, Studio saves a separate post for each channel. Each one carries a group ID that ties its parts together, such as the replies of an X thread or the comments under a LinkedIn post. Editing, moving and deleting act on one channel's post and all its parts. The API uses the group ID, for example to delete a post with everything in it. ## What is a time slot? A time slot is a time of day you like to post on a channel. Every channel starts with a few, and you can change them with **Edit Time Slots** in the channel's menu. When you choose **Create Post**, Studio suggests the next free slot as the date. Agents can ask for the next free slot too. See [What are time slots?](https://voholabs.com/docs/posts/scheduling#what-are-time-slots) ## What are sets and signatures? A set is a saved starting point for new posts: the channels, the text and the settings. A signature is a reusable sign-off, such as your name and a link, that you insert into posts. One signature can be added to new posts automatically. See [Sets and signatures](https://voholabs.com/docs/posts/sets-and-signatures). ## What is a preview link? Every post has a page at `studio.voholabs.com/p/` that shows the post to anyone, without signing in. You can send it to a client or colleague, and anyone signed in to Studio can comment on it. See [Review and share posts](https://voholabs.com/docs/posts/approvals). ## What is a post reference? A post reference is `(post:)` in the text of a post. When the post publishes, Studio replaces it with the live address of the post it points to. This lets you schedule "read the full thread on X" before the X thread exists. See [Create a post](https://voholabs.com/docs/posts/create#how-do-i-link-to-another-post-that-has-not-gone-out-yet). ## Where is everything in the app? | Menu item | What it is for | |---|---| | **Calendar** | Your channels, and every draft, scheduled and published post. Create, move, preview and review posts here. | | **Analytics** | How each channel is doing. See [Analytics](https://voholabs.com/docs/workspace/analytics). | | **Media** | The media library. See [Media library and storage](https://voholabs.com/docs/workspace/media). | | **Plugs** | Automatic reposts and follow-ups. See [Plugs](https://voholabs.com/docs/posts/plugs). | | **Brief** | The document about your brand that steers your agent. | | **Skills** | Ready-made methods your agent can follow. Shown on the free plan only. | | **Support** | Opens the Studio community. | | **Settings** | Team, webhooks, sets, signatures, agent connection and more. See [Settings](https://voholabs.com/docs/workspace/settings). | On the free plan, the wallet chip in the top bar opens your balance, **View billing** and **View prices**. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Frequently asked questions ### Is a workspace the same as an organisation or a team? Yes. The app, the API and the MCP tools use workspace, organisation and team for the same thing. Its channels, posts, media, API key and wallet are shared by all its members. ### Can I belong to more than one workspace? Yes. If you are a member of several, a Select Organization menu appears at the top of the app so you can switch between them. ### Does a post to three channels count as one post or three? Three. Studio saves one post per channel, so you can edit, move, review or delete each channel's version on its own. ## Related pages - [Getting started](https://voholabs.com/docs/getting-started) - [Create a post](https://voholabs.com/docs/posts/create) - [Channels overview](https://voholabs.com/docs/channels) - [Connect your agent](https://voholabs.com/docs/agents) --- # Brief and guided onboarding > The brief is one living document about your brand, audience, voice and offers that your AI agent reads before it writes. A guided onboarding can write it for you in one sitting, and your first run is free. Source: https://voholabs.com/docs/getting-started/brief Last updated: 5 October 2026 Think of the brief as the briefing you would give a new head of marketing. You write it once instead of repeating it in every chat. Your agent reads it before it writes anything, and adds to it as it learns what works for you. ## What is the brief? The brief is a structured document in Studio, under **Brief** in the menu. It has four sections: | Section | What goes in it | |---|---| | **Foundation** | Fixed documents that apply to every channel: **North Star**, **Business basics**, **Ideal Customer Profile**, **Competitors**, **Glossary**, **Tone of voice**, **Branding & assets**, **Boundaries**, **Tasks** and **Additional info**. | | **Sources** | Documents you create and name, each holding links the agent can draw on, with notes on how to use them. | | **Experience** | Lessons about what works for your brand. Your agent fills this in as it learns from results and your edits. You can correct or delete any lesson. | | **Channel Preferences** | One document per connected channel, saying how that account adjusts the Foundation. | **Boundaries** is where you list what the agent must never say, claim or touch. **Tasks** covers how often you post, the content mix and how much the agent may publish without asking you. ## Who can use the brief? - **Paid plans:** the brief is always open. - **Free plan:** the brief opens with your first wallet top-up, of any amount. Before that, the Brief page explains what it does and shows a **Top up to start the brief onboarding** button. See [Credits and wallet](https://voholabs.com/docs/billing/credits) for how topping up works. ## How does the guided onboarding work? The guided onboarding is a short interview that writes your brief for you. It is offered on the Brief page to workspaces that have topped up. Paid plans open straight into the brief editor. 1. In Studio, open **Brief** and choose **Create your brief**. Studio takes you to the onboarding on voholabs.com. 2. Answer one question at a time. Say "skip" to any question you would rather not answer. 3. While you answer, the onboarding reads your company website and the websites of competitors you name, so it can suggest answers instead of asking you everything. 4. Attach a logo, style guide or brand document if you have one. PDF, Word, PowerPoint and image files are accepted. 5. When every section is covered, the onboarding writes your brief and takes you back to the Brief page in Studio, where you can read and edit it. The onboarding runs in the language your Studio is set to. Nothing is published along the way. > [!TIP] > Have your website address and any brand guidelines to hand before you start. The more real material the onboarding can read, the fewer questions it needs to ask. ## What does a repeat onboarding cost? Your first onboarding is free. After that, each new run costs credits, taken from your wallet when you confirm it. Studio shows the price before you start, and the current amount is on the [prices page](https://studio.voholabs.com/pricing). - **Continuing** a run that is still open is always free. - **Redo onboarding**, on the Brief page once your brief exists, starts a new run. Studio warns you first: "Starting over replaces your previous answers and rewrites your brief." - If a paid run is not finished, its credits go back to your wallet. A run left open for three hours is closed and refunded automatically. ## Can I write the brief myself? Yes. On an empty Brief page, choose **Write it myself instead** to open the editor. Each document is a set of headed blocks you fill in, and Studio saves as you type. You can also mix the two: run the onboarding, then edit anything it wrote. ## How do agents read and update the brief? A connected agent works with the brief through MCP. It reads the brief before it writes, and records what it learns afterwards. | Tool | What the agent does with it | |---|---| | `briefListTool` | Reads the whole brief. | | `briefSaveTool` | Writes or rewrites one document. | | `briefDeleteTool` | Deletes a document, optionally keeping its history. | | `briefLearnTool` | Adds or refines one lesson in **Experience**. | | `briefAssetTool` | Registers or removes a brand file in **Branding & assets**. | | `briefHistory` | Shows what changed in the brief since the agent last reviewed it. | | `markLearned` | Marks reviewed changes so they are not read twice. | | `briefOnboardingStatus` | Says whether the guided onboarding is available, open or finished, whether a new run is charged, and the link to start it in Studio. Not shown to paid plans. | When your brief is empty and you ask your agent to set it up, it checks `briefOnboardingStatus` first and sends you to the Brief page. If you prefer, it can interview you in the chat and write the documents with `briefSaveTool` instead. The brief is also on the [public API](https://voholabs.com/docs/api#what-can-the-api-do), under `/brief`, so scripts and other agents can read and edit it with your API key. ## What files can I add to the brief? Brand files, such as a logo, product shots or a short video, live in **Branding & assets**. Documents can be up to 25 MB and images up to 10 MB. An agent can register a file there with `briefAssetTool` once it has uploaded it. ## Frequently asked questions ### Does the onboarding publish anything? No. Your answers become your brief in Studio and nothing is posted. You can edit every part of the brief afterwards. ### Can my agent start the onboarding for me? No. The onboarding is an interview you take part in, so it starts from the Brief page in Studio. If you ask your agent, it checks the onboarding status and gives you the link to that page. ### What happens if I close the onboarding halfway? The Brief page shows "Your onboarding is in progress". Choose Continue onboarding to pick up where you left off. Continuing is free. ### Can I use the brief without connecting an agent? Yes. You can read and edit it in Studio at any time. It only steers writing once an agent reads it, but it is still a useful single record of how your brand should sound. ## Related pages - [Skills library](https://voholabs.com/docs/agents/skills) - [Agent examples](https://voholabs.com/docs/agents/examples) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - [Credits and wallet](https://voholabs.com/docs/billing/credits) --- # Create a post > Choose Create Post in the calendar, pick the channels, write the post once for all of them or edit it per channel, add images or video and any follow-up parts, then schedule it. The preview on the right shows how it will look on each network. Source: https://voholabs.com/docs/posts/create Last updated: 5 October 2026 The composer is the same whether you open it from the calendar, from a channel's menu or from a time slot. An agent connected through [MCP](https://voholabs.com/docs/agents) fills in the same fields for you. ## How do I open the composer? 1. In the **Calendar**, choose **Create Post**. Studio sets the date to the next free [time slot](https://voholabs.com/docs/posts/scheduling#what-are-time-slots). 2. If you have saved [sets](https://voholabs.com/docs/posts/sets-and-signatures), pick one under **Select a Set**, or choose **Continue without set**. 3. Click the avatars of the channels the post goes to. Selected channels appear as tabs above the editor. 4. Write the post, add media, and choose **Add to Calendar** or **Save as draft**. You can also click an empty slot in the calendar to start a post at that time, or choose **Create Post** from a channel's menu to start with that channel selected. ## How do I write one post for several channels? Write in the global editor, the first tab with the globe icon. The text, images and follow-up parts there go to every selected channel. The **Post Preview** on the right shows each network's version, and each channel keeps its own character count. ## How do I change the text for one channel? 1. Click the channel's tab above the editor. 2. Choose **Edit content**. The editor now holds that channel's own copy, marked **Editing a Specific Network**. 3. Change the text, media or follow-up parts. Other channels keep the global version. To undo it, choose **Back to global**. This discards the channel's own version, and it cannot be undone. Each channel's tab also has a **Settings** panel, named after the channel, for options such as who can reply on X, the post type on Instagram or the title on YouTube. The channel pages list them, for example [X](https://voholabs.com/docs/channels/x#which-settings-does-an-x-post-have) and [TikTok](https://voholabs.com/docs/channels/tiktok#which-settings-does-a-tiktok-post-have). ## How do I add images and video? 1. Under the editor, choose **Insert Media** to open the **Media Library**. 2. Pick files you uploaded before, or choose **Upload** to add new ones. You can also drop files straight onto the editor. 3. Choose **Add selected media**. Click an attached image or video to open **Media Settings**, where you can add **Alt Text (for accessibility)** and, for a video, create a thumbnail. Drag the small thumbnails to change their order. Each network has its own rules for what it accepts, shown in the [channels overview](https://voholabs.com/docs/channels#what-does-each-network-accept). ## How do I add a thread or comments? Choose the button under the editor: it reads **Add post**, **Add comment** or **Add comment or post**, depending on what the networks you picked support. Each part has its own editor and media. - Use the arrows beside a part to change the order, and the bin to remove it. - Use the delay button beside a later part (**Delay comment**) to send it some minutes after the part before. - On X and Threads the parts become a thread; on LinkedIn, Instagram and Facebook they become comments. See [follow-up parts](https://voholabs.com/docs/channels#what-are-follow-up-parts). ## How do I add tags, a signature or a repeat? The bar along the bottom of the composer holds: - **Tags**: colour labels that show on the post in the calendar. - **Repeat Post Every...**: publishes the same post again at a fixed interval. See [How do repeating posts work?](https://voholabs.com/docs/posts/scheduling#how-do-repeating-posts-work) - **Reviewed**: a note to yourself that you have checked the post. It does not change when or how it goes out. See [Review and share posts](https://voholabs.com/docs/posts/approvals). **Add Signature** in the editor's toolbar inserts a saved signature. See [Sets and signatures](https://voholabs.com/docs/posts/sets-and-signatures). ## Why will the composer not let me schedule? When you choose **Add to Calendar** or **Post now**, Studio checks every channel and shows a message naming the one with the problem: - **Your post should have at least one character or one image.** Add some content to that channel. - **post is too long, please fix it**: the text is over that network's limit. Shorten it in that channel's tab. - **Please fix your settings**: a required setting is missing, such as a YouTube title or a Discord channel. The settings panel opens for you. - A network rule, such as "Item must be a video" for YouTube, appears as written. On the free plan, X posts also need enough credits. The line above the buttons shows the cost, and says "Not enough credits to schedule it. Top up, or save it as a draft." when you are short. See [How is X charged on the free plan?](https://voholabs.com/docs/channels/x#how-is-x-charged-on-the-free-plan) ## How do I link to another post that has not gone out yet? 1. In the editor's toolbar, choose **Link to a post**. 2. Pick the post. Only posts scheduled before this one are offered, so the link can always resolve. 3. A chip appears in the text. It says the link is filled in when the post goes out. At publish time, Studio swaps the chip for the other post's live address. If that post has not published within an hour, or never will, this post fails rather than go out with a broken link. In the API and for agents, the same reference is written as `(post:)`. ## Frequently asked questions ### Can I post the same text everywhere and still change it for one channel? Yes. Write it once in the global editor, then open one channel's tab and choose Edit content. Only that channel changes. Back to global throws away that channel's own version and returns it to the shared text. ### Why do I get "Check the circles above"? No channel is selected yet. Click one or more channel avatars at the top of the composer. ### Can I save a post that is not finished? Yes. Save as draft only needs some text or an image. The full checks for length and settings run when you schedule it. ### Which file types can I attach? Images (JPEG, PNG, GIF and WebP among others) and MP4 video. See [Media library and storage](https://voholabs.com/docs/workspace/media) for sizes. ### Do posts to X cost credits? On the free plan, yes, and the composer shows the cost before you schedule. Every other channel is free. See [Post to X](https://voholabs.com/docs/channels/x). ## Related pages - [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) - [The calendar](https://voholabs.com/docs/posts/calendar) - [Channels overview](https://voholabs.com/docs/channels) - [Media library and storage](https://voholabs.com/docs/workspace/media) --- # Schedule and publish posts > Every post is either a draft, which never publishes, or on the schedule, which publishes at its time. Choose Save as draft, Add to Calendar or Post now in the composer, and Studio takes it from there. Source: https://voholabs.com/docs/posts/scheduling Last updated: 5 October 2026 Scheduling is the last step of writing a post. You can also schedule through an [AI agent](https://voholabs.com/docs/agents), the [API](https://voholabs.com/docs/api) or the [CLI](https://voholabs.com/docs/cli); they all put the post on the same calendar. ## What is the difference between a draft and a scheduled post? | | Draft | Scheduled | |---|---|---| | Publishes on its own | Never | At its date and time | | Checked against network limits | Only that it has some content | Fully, for every channel | | Charged credits (X, free plan) | No | Yes, when scheduled | | Shown in the calendar | Yes, marked **Draft:** | Yes | A draft that you open again shows **Schedule** instead of **Add to Calendar**. To take a scheduled post off the schedule without deleting it, open it and choose **Save as draft**. ## How do I schedule a post? 1. In the composer, choose the date and time in the date picker at the bottom. 2. Choose **Add to Calendar**. Studio checks every channel and saves the post. 3. To publish straight away instead, hover **Add to Calendar** and choose **Post now**. To change the time later, drag the post to another slot in the calendar, or open it, change the date and choose **Update**. See [The calendar](https://voholabs.com/docs/posts/calendar). ## How do repeating posts work? Choose **Repeat Post Every...** at the bottom of the composer and pick an interval, from **Day** to **Month**. After the post publishes, Studio publishes it again each time the interval passes, until you remove the repeat or delete the post. On the free plan, each repeat of an X post is charged when it goes out, not all at once. The composer says so next to the cost. ## What are time slots? Time slots are the times of day you like to post on a channel. Studio uses them to suggest a date: **Create Post** opens at the next free slot across your channels, and a channel's own **Create Post** uses that channel's slots. Agents can ask for the next free slot with the `findSlotTool`. To change a channel's slots: 1. In the calendar, open the channel's menu and choose **Edit Time Slots**. 2. Under **Add Time Slot**, pick the **Hour** and **Minutes** and choose **Add**. 3. Remove a slot with its bin icon. 4. Choose **Save Changes**. Slots only suggest a time. You can always pick any other time in the date picker. ## What happens after I schedule a post? 1. The post waits on the calendar until its time. 2. At that time Studio publishes the first part, then any follow-up parts in order, waiting for any delay you set on them. 3. If the post links to another post with `(post:)`, Studio waits for that post to go out first, for up to an hour. 4. Once published, the post in the calendar links to the live post, the bell notifies you, and any [webhooks](https://voholabs.com/docs/api/webhooks) and [plugs](https://voholabs.com/docs/posts/plugs) run. If the network rejects the post, it is marked with a red outline and an exclamation mark. Hover the mark to read the reason. ## Why did a scheduled post not publish? | What you see | Why | What to do | |---|---|---| | A network's message, such as a duplicate-content error | The network refused the post. | Open the post, change what it objects to, and choose **Update** to put it back on the schedule. | | Refresh channel needed | The channel's access expired. | Choose **Reconnect channel** in the channel's menu, then reschedule. | | Channel disabled | The channel is turned off in Studio. | Choose **Enable Channel** in the channel's menu, then reschedule. | | This post links to a post that hasn't published yet | The post it references did not go out within an hour. | Publish the other post, or remove the reference. | | Not published: there weren't enough credits when it was due. | On the free plan, the wallet could not pay for an X post. | Top up, then reschedule it. | The [troubleshooting page](https://voholabs.com/docs/help/troubleshooting) covers more cases. ## Frequently asked questions ### Do I need to keep Studio open for a post to publish? No. Studio publishes from its servers, so you can close the browser once the post is on the calendar. ### Which time zone are times in? The time zone of the browser you are using. Under Settings › Global Settings you can switch the clock between AM:PM and 24 hours. ### Can I schedule a post in the past? No. Past times in the calendar are greyed out, and you cannot drop a post onto them. To publish straight away, use Post now. ### Do drafts cost credits? No. Nothing is charged for a draft. On the free plan, an X post is charged when it goes on the schedule, and the charge is given back if you move it back to draft. See [Post to X](https://voholabs.com/docs/channels/x). ### How do I know a post went out? The bell in the top bar notifies you when a post is published or fails, and the post in the calendar links to the live post. You can also turn on email notifications in Settings › Global Settings. ## Related pages - [Create a post](https://voholabs.com/docs/posts/create) - [The calendar](https://voholabs.com/docs/posts/calendar) - [Post to X](https://voholabs.com/docs/channels/x) - [Troubleshooting](https://voholabs.com/docs/help/troubleshooting) --- # The calendar > The calendar shows every draft, scheduled and published post by day, week or month, or as a list. Drag a post to reschedule it, hover it to duplicate, preview, see statistics or delete it, and click it to edit. Source: https://voholabs.com/docs/posts/calendar Last updated: 5 October 2026 The **Calendar** is the first item in the menu. Your channels are listed on the left, with **Create Post** above them, and the posts fill the main area. ## Which views does the calendar have? The switch at the top right has three views: - **Calendar view**: posts on a grid. Choose **Day**, **Week** or **Month**, move with the arrows, and choose **Today** to come back. - **List view**: every post in date order, with filters for **All**, **Scheduled**, **Draft** and **Published**. Published posts are listed newest first. - **Review view**: each post shown as it will look on the network, closest to publishing first. See [Review and share posts](https://voholabs.com/docs/posts/approvals). In the list and review views, a row of channel chips lets you show one channel at a time, or **All accounts**. ## How do I reschedule a post? 1. Drag the post to another time or day in the calendar view. 2. If it was already published, Studio asks what to do: **Just update the post details** keeps it as it is on the network, and **Reschedule the post** publishes it again at the new time. You can also open the post, change the date and choose **Update**. ## How do I edit a post? Click the post to open it in the composer, make your changes and choose **Update**, or **Schedule** for a draft. If the post was already published, Studio asks whether to **Just update the post details** or **Republish the post**. ## How do I duplicate a post? Hover the post and choose **Duplicate Post**. The composer opens with a copy of the text, media and settings at the next free time slot. Pick the channels and schedule it like a new post. ## How do I see a published post? Hover the post and choose **View the live post** to open it on the network. Before it is published, the same button reads **Preview Post** and opens the [preview page](https://voholabs.com/docs/posts/approvals). Once a post is published, **Post Statistics** opens its numbers on networks that report them. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## How do I filter by customer? When your channels belong to more than one [customer](https://voholabs.com/docs/getting-started/concepts#what-is-a-customer), a person icon with the tooltip **Select Customer** appears next to the view buttons. Pick a customer to show only their channels and posts. ## How do I delete a post? 1. Hover the post and choose **Delete Post**, or open it and choose **Delete Post** in the composer. 2. Confirm. The post and all its follow-up parts are removed from that channel. If the post had not gone out yet, it will not publish. On the free plan, credits charged for an unsent X post go back to your wallet. ## Frequently asked questions ### Why can I not drop a post on a time? The time is in the past. Past days and hours are greyed out and do not accept posts. ### What does the red outline on a post mean? The post failed to publish. Hover the exclamation mark for the reason, and see [Why did a scheduled post not publish?](https://voholabs.com/docs/posts/scheduling#why-did-a-scheduled-post-not-publish) ### Does deleting a published post remove it from the network? No. Deleting in the calendar removes the post from Studio only; it stays on the network. Sanity is the exception, where deleting unpublishes the article and keeps the draft. ### What does the coloured bar on top of a post mean? It is the colour of the post's first tag, and it shows the tag names. Add tags with Tags at the bottom of the composer. ## Related pages - [Create a post](https://voholabs.com/docs/posts/create) - [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) - [Review and share posts](https://voholabs.com/docs/posts/approvals) - [How Voholabs Studio works](https://voholabs.com/docs/getting-started/concepts) --- # Review and share posts > The review view shows your upcoming posts as they will look on each network, and the Reviewed mark records which ones you have checked. To get a client's approval, send them the post's preview link, collect their comments, and schedule the post when they agree. Source: https://voholabs.com/docs/posts/approvals Last updated: 5 October 2026 Studio has no approval step that holds a post back. Instead, it gives you three tools: a review view to check many posts in one pass, a **Reviewed** mark to keep track, and a public preview page to show a post to someone outside your workspace. ## How do I review a batch of posts? 1. In the **Calendar**, choose **Review view** in the view switch at the top right. 2. Pick **Scheduled** or **Draft** to narrow the list, and a channel chip to see one account at a time. 3. Read each post in its network preview. The post due out first is marked **Next up**, and threads show how many parts they have. 4. For each post, choose **Mark as reviewed**, **Preview Post**, **Edit Post** or **Delete Post**. 5. Use the filter **Any**, **Reviewed** or **Not reviewed** to see what is left. When everything is done, Studio says **Nothing left to review**. The review view loads posts a page at a time; move between pages with the arrows at the top. ## How do I mark a post as reviewed? - In the review view, choose **Mark as reviewed** on the post. Choose it again to undo. - In the composer, tick **Reviewed** at the bottom before you save. A reviewed post carries a small tick in the calendar. The mark stays when you edit the post in the app or through an agent, and it is shared with everyone in your workspace. ## How do I share a preview? 1. Hover the post in the calendar and choose **Preview Post**, or choose it in the review view. The preview page opens in a new tab. 2. Choose **Share with a client** at the top. Studio copies the link to the page. 3. Send the link to your client or colleague. The page shows the channel, the text and media of every part, and the **Publication Date:**. Once the post is published, the calendar's button opens the live post instead, but the preview link keeps working. ## Who can see a preview link? Anyone who has the link, without signing in. The link contains the post's ID, which is hard to guess, but treat it as private if the post is not public yet. ## How do comments work? Comments appear beside the post on its preview page. Anyone signed in to Studio can add one, and commenters are shown as **User1**, **User2** and so on rather than by name. Someone who is not signed in sees **Login / Register to add comments**, which takes them to sign in or sign up, then back to the post. ## How do I run an approval round with a client? 1. Write the posts and choose **Save as draft**, so nothing can go out early. 2. Send your client the preview link of each post. 3. Ask them to sign in and comment on the preview page, or reply to you directly. 4. Make the changes, then open each post and choose **Schedule**. 5. Mark each one as **Reviewed** so your team knows it has been through the round. ## Frequently asked questions ### Does a post wait until it is marked as Reviewed? No. Reviewed is a note to yourself and your team. It never stops, delays or changes a post. To hold a post until it is approved, keep it as a draft. ### Can my client approve a post in Studio? There is no approve button. Your client can comment on the preview page, and you schedule the post once they agree. ### Can someone without a Studio account comment? No. Anyone with the link can see the preview, but commenting needs a Studio sign-in. The comment button reads Login / Register to add comments. ## Related pages - [The calendar](https://voholabs.com/docs/posts/calendar) - [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) - [Team members and roles](https://voholabs.com/docs/workspace/teams) --- # Sets and signatures > A set saves a group of channels with their content and settings as a starting point for new posts, and a signature is a reusable sign-off you can insert into posts. Both live in Settings, and both are free on every plan. Source: https://voholabs.com/docs/posts/sets-and-signatures Last updated: 5 October 2026 Sets and signatures save typing for posts you write often. You manage both under **Settings**. ## What is a set? A set is a template for new posts. It remembers which channels the post goes to, the text and media, and the settings for each channel, such as the post type on Instagram. When you start a new post, you pick a set and the composer opens already filled in. ## How do I create a set? 1. Go to **Settings › Sets** and choose **Add a set**. 2. The composer opens. Pick the channels, write the text and fill in each channel's settings. 3. Choose **Save Set**. 4. Give it a name under **Set Name** and choose **Save**. To change a set, choose **Edit** next to it; to remove it, choose **Delete**. ## How do I start a post from a set? 1. Choose **Create Post** in the calendar. 2. When you have sets, Studio asks you to **Select a Set**. Pick one, or choose **Continue without set**. 3. The composer opens with the set's channels, text and settings. Change anything you like, then schedule it. ## What is a signature? A signature is a block of text you reuse at the end of posts, such as your name, a call to action or a link. You can keep several. ## How do I add a signature? 1. Go to **Settings › Signatures** and choose **Add a signature**. 2. Write it in the editor. 3. Set **Auto add signature?** to **Yes** if new posts should start with it, or **No** to insert it by hand. 4. Choose **Save**. To insert a signature by hand, choose **Add Signature** in the composer's toolbar and then **Use Signature** next to the one you want. It is added at the cursor. ## How do I add a signature automatically? Set **Auto add signature?** to **Yes** on one signature. New posts you start by clicking a time in the calendar then open with it already in the text. It is not added when you start from a set, and you can delete it from any post before you schedule. ## Frequently asked questions ### Can a set include per-channel text? No. While you build a set you can only edit the shared text; the per-channel editors are locked. You can still change any channel's text in the post you start from the set. ### Can more than one signature be added automatically? No. Only one signature can have Auto add signature? set to Yes. Turning it on for one turns it off for the others. ### Does the automatic signature apply to posts my agent writes? No. It is added in the app when you start a post from the calendar. Ask your agent to add your sign-off, or put it in your brief. ## Related pages - [Create a post](https://voholabs.com/docs/posts/create) - [Settings](https://voholabs.com/docs/workspace/settings) - [How Voholabs Studio works](https://voholabs.com/docs/getting-started/concepts) --- # Plugs: automatic reposts and follow-ups > Plugs act on your published posts automatically: when a post reaches the number of likes you set, Studio can repost it or add a follow-up post that promotes something. LinkedIn Page and Threads plugs are free on every plan, and X plugs are included in paid plans or, on the free plan, charged per action from your wallet after a top-up. Source: https://voholabs.com/docs/posts/plugs Last updated: 5 October 2026 A plug is a rule for a channel, not for a single post. Once you turn it on, it watches every post that channel publishes from then on. ## Which plugs are there? | Plug | What it does | Channels | |---|---|---| | **Auto Repost Posts** | When a post reaches the number of likes you set, Studio reposts it to reach more people. | LinkedIn Page, X | | **Auto plug post** | When a post reaches the number of likes you set, Studio adds a follow-up post under it, so people who engaged see your promotion. | LinkedIn Page, Threads, X | LinkedIn profiles, Instagram, Facebook Pages, TikTok, YouTube, Discord and Sanity have no plugs. ## Which plans can use plugs? - **LinkedIn Page and Threads plugs** are free on every plan, including the free plan. They never take credits. - **X plugs on a paid plan** are included, with no credits. - **X plugs on the free plan** are pay-per-use. Until your first wallet top-up they are locked: choosing one opens the top-up. After a top-up you can set them up, and each paid action is charged from your wallet. ## How do I set one up? 1. Choose **Plugs** in the menu. 2. Pick the channel on the left. Only channels that support plugs are listed. 3. Choose **Set Plug** on the plug you want. 4. Fill in the fields: the number of likes that triggers it and, for **Auto plug post**, the text of the follow-up post. 5. Choose **Activate**. To change it later, choose **Edit Plug**. To pause it without losing the settings, use the switch on the plug. On the free plan, each X plug card shows what it is charged per use. If a card says "This plug isn't available with wallet credits yet.", that plug cannot be set up from the wallet for now. ## How are X plugs charged on the free plan? X charges Studio for every call to its API, so a plug is charged for each call it makes, before it makes it: | Action | Charged as | |---|---| | Checking a post's likes | One post read. Each post is charged at most once a day, however many checks run. | | The follow-up post from **Auto plug post** | One X post, or an X post with a link if the follow-up contains a link. | | A repost from **Auto Repost Posts** or **Add Re-posters** | One repost, for each account that reposts. | The current price of each is on the live [prices page](https://studio.voholabs.com/pricing). Charges appear on the **Billing** page with your other usage. If X refuses a call, its credits go back to your wallet. ## What happens if my balance runs out? Studio tries auto top-up first, if you have it turned on. If that cannot cover the action: - Studio does not call X, so nothing is charged. - The plug stops for that post. Later checks on that post are skipped, and it is not retried after you top up. - You get one in-app notification, "X plug didn't run", with a link to your wallet. Studio sends at most one such notification per plug per day. Posts published after you top up are handled as normal. To avoid gaps, turn on auto top-up. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Can other accounts repost my post? Yes, on X. When you create a post for an X channel, its settings include **Add Re-posters**. Turn it on, choose a **Delay**, and pick other X accounts connected to your workspace under **Accounts that will engage:**. Once the post is published, those accounts repost it. On a paid plan this is included. On the free plan each repost is charged from your wallet, as in the table above. ## Frequently asked questions ### Does a plug apply to posts I published before I turned it on? No. Studio starts watching a post when it publishes, so a plug only acts on posts published while it is turned on. ### How often does Studio check the likes? Three times after a post is published, about six hours apart. Once the plug has acted on a post, it stops checking that post. ### Why does the Plugs page say there are no plugs matching my channels? None of your connected channels supports plugs. Connect a LinkedIn Page, Threads or X account from the calendar. ### Will a plug try again after I top up? Not for a post it has already given up on. A plug that could not be paid for stops for that post. Posts published after your top-up are handled as normal. ### Am I charged if X refuses the repost or reply? No. When X refuses a call, the credits for it go back to your wallet. ## Related pages - [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) - [Post to X](https://voholabs.com/docs/channels/x) - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [Channels overview](https://voholabs.com/docs/channels) - [Plans and billing](https://voholabs.com/docs/billing) --- # Channels overview > A channel is one account Studio can publish to, such as an X profile, a LinkedIn Page or a Sanity project. Studio publishes to X, LinkedIn, LinkedIn Pages, Instagram, Facebook Pages, Threads, TikTok, YouTube, Discord and Sanity, and every channel except X is free on every plan. Source: https://voholabs.com/docs/channels Last updated: 5 October 2026 ## How do I connect a channel? 1. Open the calendar and choose **Add Channel**, or use **Connect Your Channels** during onboarding. 2. Click the network. Most networks open their own sign-in page, where you approve Studio. 3. If the network has several accounts behind one login, pick the one to use: a LinkedIn Page, a Facebook Page, an Instagram account or a YouTube channel. 4. The channel appears in the left-hand list of the calendar, ready to post to. To reconnect, disable, delete or organise channels later, see [Manage your channels](https://voholabs.com/docs/channels/manage). Sanity is the exception: you paste a project ID, dataset and API token instead of signing in. See [Sanity](https://voholabs.com/docs/channels/sanity). ## What does each network accept? | Channel | What you can post | Text limit | Follow-up parts | Analytics | |---|---|---|---|---| | [X](https://voholabs.com/docs/channels/x) | Text, up to 4 images or 1 video | 280, or 4,000 for Premium accounts | Thread replies, with media | Yes | | [LinkedIn](https://voholabs.com/docs/channels/linkedin) (profile) | Text, images, 1 video, or an image carousel | 3,000 | Comments, text only | No | | [LinkedIn Page](https://voholabs.com/docs/channels/linkedin-page) | Same as LinkedIn | 3,000 | Comments, text only | Yes | | [Instagram](https://voholabs.com/docs/channels/instagram) | At least one image or video: post, Reel, carousel of up to 10, or Story | 2,200 | Comments, text only | Yes | | [Facebook Page](https://voholabs.com/docs/channels/facebook) | Text, photos or 1 video; Stories | 63,206 | Comments, each with up to 1 image | Yes | | [Threads](https://voholabs.com/docs/channels/threads) | Text, 1 image or video, or a carousel | 500 | Thread replies | Yes | | [TikTok](https://voholabs.com/docs/channels/tiktok) | 1 video, or one or more photos | 2,000 | None | Yes | | [YouTube](https://voholabs.com/docs/channels/youtube) | Exactly 1 video, with a title | 5,000 (description) | None | Yes | | [Discord](https://voholabs.com/docs/channels/discord) | Text with image or video attachments | 1,980 | Replies in a thread | No | | [Sanity](https://voholabs.com/docs/channels/sanity) | An article you wrote in Sanity | Set by your Sanity schema | None | No | Limits are set by each network and can change. The composer checks them as you type and will not schedule a post that breaks them. See [Create a post](https://voholabs.com/docs/posts/create) for writing one post for several channels, and [Analytics](https://voholabs.com/docs/workspace/analytics) for what each network reports. ## What is the difference between the two Instagram connections? - **Instagram (Facebook Business)** signs in through Facebook. It needs an Instagram Business account linked to a Facebook Page, and it is the only connection that can add music or original audio to Reels. - **Instagram (Standalone)** signs in with Instagram directly. It works with Business and Creator accounts and needs no Facebook Page, but it cannot add audio to Reels. ## What is the difference between LinkedIn and LinkedIn Page? **LinkedIn** posts as you, on your personal profile. **LinkedIn Page** posts as a company page you administer; after signing in you choose the page. Connect both if you post in both places. Only LinkedIn Pages report analytics. ## What are follow-up parts? Some networks let one post carry more parts after the first: a thread on X and Threads, comments on LinkedIn, Instagram and Facebook, or replies in a Discord thread. In the composer the button reads **Add post**, **Add comment** or **Add comment or post** depending on the network. TikTok, YouTube and Sanity take no follow-up parts. ## Can a post link to another post that has not gone out yet? Yes. Put `(post:)` in the text, using the ID of another post in Studio. When the post publishes, Studio replaces the reference with that post's live address. If the referenced post has not gone out within an hour, the post fails rather than publish a broken link. See [how to link to another post](https://voholabs.com/docs/posts/create#how-do-i-link-to-another-post-that-has-not-gone-out-yet). ## Which channels does Studio not support yet? Networks shown as **Coming soon** in the **Add Channel** dialog are not available. Which networks Studio can connect depends on the approvals each network has given us. ## Frequently asked questions ### How many channels can I connect? The free plan sets no limit on channels or on scheduled posts. Fair-use rate limits apply to the API and MCP. ### Why are some networks greyed out as Coming soon? Studio only offers a network once that network has approved our app for publishing. The greyed-out ones are not available yet, and which networks are available can change. ### Why does X need credits when the others are free? X charges for every post sent through its API. On the free plan, X is paid per use from your wallet; paid plans include it. See [the X page](https://voholabs.com/docs/channels/x). ### Can I post the same text everywhere and still change it for one channel? Yes. Write the post once for all selected channels, then edit the version for any single channel. Each channel keeps its own character count and settings. ## Related pages - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) - [Getting started](https://voholabs.com/docs/getting-started) --- # Manage your channels > Each channel has a menu in the calendar where you reconnect it, set its posting time slots, move it to a customer, change its additional settings, copy its ID, disable it or delete it. A channel that has lost its sign-in shows a red exclamation mark, and clicking it takes you through the network's sign-in again. Source: https://voholabs.com/docs/channels/manage Last updated: 5 October 2026 Everything on this page happens in the calendar's channel list. Hover a channel and click the three dots next to its name to open its menu. The options you see depend on the channel and on its state. ## How do I reconnect a channel? 1. Find the channel with a red exclamation mark on its picture. Hovering it shows "Channel disconnected, click to reconnect." 2. Click the channel, or choose **Reconnect channel** from its menu. 3. Sign in to the network with the same account the channel was connected with, and approve every permission it asks for. 4. Studio returns you to the calendar and the channel works again. If you sign in with a different account, Studio stops with "Please refresh the channel that needs to be refreshed". Sign out of the network, sign in with the right account and try again. Studio also tells you when it could not renew a sign-in, with a notification that starts "Could not refresh your" followed by the network's name. > [!NOTE] > A red exclamation mark can also mean a connection was never finished. Some networks ask you to pick a page, account or channel after you sign in. If you closed that step, click the channel to pick one. ## What does the channel menu contain? | Option | What it does | |---|---| | **Create Post** | Opens the composer with this channel selected. | | **Copy Channel ID** | Copies the channel's ID for the API, the CLI or an agent. | | **Reconnect channel** | Shown only when the channel has lost its sign-in. | | **Additional Settings** | Account-level settings, for channels that have them. | | **Change Bot Nickname** | Discord only: renames the Voholabs bot in your server. | | **Move / add to group** | Assigns the channel to a customer. | | **Edit Time Slots** | Sets the times Studio suggests for this channel. | | **Disable Channel** or **Enable Channel** | Pauses or resumes the channel. | | **Delete** | Removes the channel from Studio. | A Sanity channel shows **Write in Sanity** in place of **Create Post**, because its articles are written in Sanity. ## What does "Not enough scopes" mean when I connect? It means you switched off one of the permissions the network asked you to approve, so Studio cannot do everything it needs. The full message is "Not enough scopes, when choosing a provider, please add all the scopes". Connect the channel again and leave every permission switched on. On Facebook and Instagram, if the network offers to continue with your previous settings, choose to edit them so you can include the page or account you want. Each network's page explains what its permissions are for. ## How do I set posting time slots? Time slots are the times of day Studio suggests for a channel. They show in the calendar, and Studio, the API and agents use them to find the next free time for a post. 1. Choose **Edit Time Slots** from the channel's menu. 2. Pick an **Hour** and **Minutes**, then click **Add**. Repeat for each slot. 3. Remove any slot you do not want from **Scheduled Times**. 4. Click **Save Changes**. A new channel starts with a few slots spread across the day. Slots are only suggestions: you can still schedule a post at any time. ## How do I group channels by customer? Customers let an agency, or a team with several brands, keep each brand's channels together. 1. Choose **Move / add to group** from the channel's menu. 2. Under **Select Customer**, pick an existing customer or type a new name. 3. Click **Save**. The channel list then groups channels under each customer's name. Once you have more than one customer, a **Select Customer** filter appears in the calendar and in the composer, so you can work on one customer's channels at a time. To take a channel out of a customer, open the same dialog and click **Remove from customer**. Agents and the API can read the same groups. See [MCP tools](https://voholabs.com/docs/agents/mcp-tools) and the [public API](https://voholabs.com/docs/api). ## What are additional settings? Some channels have settings that belong to the account rather than to a single post. When a channel has them, its menu shows **Additional Settings**. For example, an [X](https://voholabs.com/docs/channels/x) channel uses it to say whether the account is verified, which raises its character limit. Per-post settings, such as an Instagram post type or a YouTube title, are set in the composer instead. Each network's page lists them. ## How do I disable or delete a channel? **Disable Channel** pauses a channel without losing anything. It stays in your list, faded, and keeps its posts and settings. Posts that fall due while it is disabled are not published, and Studio notifies you. Choose **Enable Channel** to turn it back on. **Delete** removes the channel from Studio: - Its posts in Studio are deleted with it. Studio saves one post per channel, so a post you wrote for several channels stays on the other channels. - Posts already published stay on the network. - Studio clears its copy of the channel's sign-in. Where the network supports it, Studio also withdraws its access on the network's side. > [!WARNING] > Deleting cannot be undone. If you only want to stop posting for a while, disable the channel instead. You can connect the same account again later with **Add Channel**. It comes back as a fresh channel, without the old posts. ## Where do I find a channel's ID? Choose **Copy Channel ID** from the channel's menu, and Studio copies it to your clipboard. You need it when you post through the [public API](https://voholabs.com/docs/api) or the [CLI](https://voholabs.com/docs/cli). Agents connected over [MCP](https://voholabs.com/docs/agents/mcp) can list your channels and their IDs themselves. ## Frequently asked questions ### Why did my channel disconnect? Every network gives Studio a sign-in that can expire or be withdrawn. Studio renews it in the background where the network allows. It stops working if you change your password, remove Studio's access on the network, lose your role on a page, or the network ends the session. Reconnect the channel to fix it. ### Do I lose my posts when I reconnect? No. Reconnecting updates the existing channel, so its posts, time slots and customer stay as they were. Sign in with the same account the channel was connected with. ### What happens to posts that were due while a channel was disconnected or disabled? They are not published, and Studio sends you a notification saying why. They are not retried on their own, so after you reconnect or enable the channel, open each one and schedule it again. ### Does deleting a channel delete my posts on the network? No. Deleting a channel removes it and its posts from Studio. Anything already published stays on the network. ### Is there a limit on how many channels I can connect? The free plan sets no limit on channels. Every channel except X is free on every plan. ## Related pages - [Channels overview](https://voholabs.com/docs/channels) - [LinkedIn](https://voholabs.com/docs/channels/linkedin) - [Instagram](https://voholabs.com/docs/channels/instagram) - [Facebook Page](https://voholabs.com/docs/channels/facebook) - [YouTube](https://voholabs.com/docs/channels/youtube) - [Discord](https://voholabs.com/docs/channels/discord) - [Create a post](https://voholabs.com/docs/posts/create) --- # Post to X from Voholabs Studio > On the free plan X is pay-per-use, so you top up your wallet once to unlock it, then each X post is charged in credits when you schedule it, and refunded if it never goes out. Paid plans include X with no credits. Source: https://voholabs.com/docs/channels/x Last updated: 5 October 2026 ## How do I connect X? 1. Choose **Add Channel** and click **X**. 2. On the free plan, if you have not topped up before, Studio opens the top-up first. Top up any amount above the minimum. See [Credits and wallet](https://voholabs.com/docs/billing/credits). 3. Studio shows what connecting costs. Continue, and sign in to X to approve Studio. Studio connects the account you are signed in to on X. To connect a different one, switch accounts on X first. > [!NOTE] > Connecting an X account on the free plan is charged once as an account lookup. Prices are on the live [prices page](https://studio.voholabs.com/pricing). ## How is X charged on the free plan? - **When you schedule, not when you save.** Credits are taken when a post goes on the schedule: **Add to Calendar**, **Post now**, putting a draft on the schedule, or an agent or the API doing the same. - **Per part.** Each part of a thread is its own X post. - **Links cost more.** A post containing a link uses the "X post with a link" price. - **Edits re-price the difference.** Editing a scheduled post charges or gives back only the change. - **Refunds are automatic.** Deleting a post, moving it back to draft, or a failure to send gives back the credits for the parts that did not go out. These go back to your wallet, not to your card. - **Repeating posts** are charged each time a repeat goes out. The composer shows the cost before you schedule, for example "This post costs N credits", and says if you do not have enough. Other channels in the same post are free. ## Do X plugs and reposts cost credits? On the free plan, yes. X plugs (**Auto Repost Posts**, **Auto plug post**) and **Add Re-posters** are pay-per-use, like posting: they unlock with your first top-up, and each action is charged from your wallet when it runs. A likes check is a post read, a follow-up is an X post, and each repost is charged as a repost. If your balance cannot cover an action, the plug stops for that post and Studio sends one notification. Paid plans include them with no credits. See [Plugs](https://voholabs.com/docs/posts/plugs). ## What can I post to X? - Text up to 280 characters, or 4,000 if the channel is marked as a Premium account. - Up to 4 images, or 1 video. - Threads: each extra part is posted as a reply to the one before, and replies can carry media. To raise the limit for a Premium account, turn on **Is this a verified user? (Premium)** under **Additional Settings** in the channel's menu. Studio fills it in from X when you connect. ## Which settings does an X post have? - **Who can reply to this post?** Everyone (the default), accounts you follow, mentioned accounts, subscribers or verified accounts. - **Post to a community**: paste the community's address to post there. - **Made with AI** and **Paid partnership** labels. ## What do X's error messages mean? | Message | What to do | |---|---| | X is not accepting posts right now. Please try again later | X has paused posting from apps. Try again later. | | There can be maximum of one cashtag ($SYMBOL) per post | Remove all but one cashtag. | | You are not allowed to create a post with duplicate content | X refuses identical posts. Change the text. | | The video you are trying to post is longer than 2 minutes, which is not allowed for this account | Shorten the video, or post from an account X allows longer videos for. | | X authentication has expired, please reconnect your account | [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). | ## Frequently asked questions ### Why is X locked on my account? X charges for every post sent through its API, so on the free plan X stays locked until your first wallet top-up. Clicking it opens the top-up. Paid plans are never locked. ### Am I charged for a draft? No. Credits are only taken when a post goes on the schedule, whether you choose Add to Calendar or Post now, or an agent or the API schedules it. ### What happens if my balance runs out before a scheduled X post is due? The post is not published and is not retried. Studio tells you why, and you can top up and reschedule it. Turning on auto top-up avoids this. Studio also warns you when scheduled posts in the next 48 hours need more credits than you have. ### Is a thread charged once or per part? Per part. Every part of a thread is charged as its own X post. ### Why does a post with a link cost more? X charges more for posts that contain a link, and Studio passes that on as a separate price, "X post with a link". Studio counts links the way X does, so a bare domain such as example.com counts as a link. ### Does reading X analytics cost credits? On the free plan, yes. Loading X analytics reads posts from X, which X charges for. Studio caches results and never charges twice for the same post on the same day. See [Analytics](https://voholabs.com/docs/workspace/analytics#why-does-loading-x-analytics-need-credits). ## Related pages - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [Plans and billing](https://voholabs.com/docs/billing) - [Channels overview](https://voholabs.com/docs/channels) - [Create a post](https://voholabs.com/docs/posts/create) - [Plugs](https://voholabs.com/docs/posts/plugs) - [Analytics](https://voholabs.com/docs/workspace/analytics) - [Manage your channels](https://voholabs.com/docs/channels/manage) --- # Post to LinkedIn from Voholabs Studio > Connect your personal LinkedIn profile to post as yourself, free on every plan. You can post text, images, one video, or an image carousel that LinkedIn shows as a document, and add comments as follow-up parts. Source: https://voholabs.com/docs/channels/linkedin Last updated: 5 October 2026 The LinkedIn channel posts to your personal profile. To post as a company, use a [LinkedIn Page](https://voholabs.com/docs/channels/linkedin-page) channel; you can connect both. ## How do I connect LinkedIn? 1. Choose **Add Channel** and click **LinkedIn**. 2. Sign in to LinkedIn with the profile you want to post from. 3. Approve Studio's access. LinkedIn asks to use your name and photo and to post on your behalf. 4. The channel appears in the calendar, named after your profile. ## What can I post? - **Text** of up to 3,000 characters. - **Images**: one or more. - **One video**, on its own. A post with a video cannot carry any other attachment. - **An image carousel** of two or more images. See below. - **Follow-up parts**, added with **Add comment**. Studio posts them as comments under your post, in order. Comments are text only. The composer checks these rules before you schedule. If a post breaks one, you see a message such as "Can have maximum 1 media when selecting a video." or "Comments can only contain text." ## How do carousels work? Studio turns your images into a PDF document and publishes it as a document post, which LinkedIn shows as swipeable slides. 1. Add two or more images to the post. Videos cannot be part of a carousel. 2. In the LinkedIn settings of the post, tick **Post as images carousel**. 3. Optionally fill in **Carousel slide name**. This is the document's title on LinkedIn; it is "slides" if you leave it empty. 4. Schedule the post as usual. If you tick the box with fewer than two images, or with a video, the composer shows "Carousel can only be created with 2 or more images and no videos." ## Why are there no analytics for my profile? Studio's access to LinkedIn covers statistics for company pages only, so personal profiles do not appear on the [Analytics](https://voholabs.com/docs/workspace/analytics) page. If you need statistics, post from a [LinkedIn Page](https://voholabs.com/docs/channels/linkedin-page) channel, which reports page and post analytics. ## What should I do when a LinkedIn post fails? - **"Not enough scopes"** when connecting: you declined part of the access LinkedIn asked for. Connect again and approve it all. - **The channel shows a red exclamation mark**: the sign-in has ended. [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). - **"Error posting to LinkedIn"** or a processing error: LinkedIn refused the post or could not process a video or carousel. Check the video plays and the file is not unusually large, then schedule the post again. Studio retries on its own when LinkedIn reports a temporary problem, such as "Resource is forbidden" during an outage. ## Frequently asked questions ### Can I post to my company page with this channel? No. The LinkedIn channel only posts to your personal profile. Connect a LinkedIn Page channel to post as a company page you administer. ### Does LinkedIn cost credits? No. LinkedIn is free on every plan, including the free plan. ### Can a comment include an image? No. Follow-up comments on LinkedIn are text only. Put every image in the main post. ### Why can't I mix a video with images? LinkedIn allows one video per post, on its own. Post the video by itself, or post the images without it. ### Why did my LinkedIn channel disconnect? LinkedIn sign-ins last for a limited time, and they end early if you change your password or remove Studio's access in your LinkedIn settings. Reconnect the channel from the calendar and your posts stay in place. ## Related pages - [LinkedIn Page](https://voholabs.com/docs/channels/linkedin-page) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to a LinkedIn Page from Voholabs Studio > Connect a LinkedIn Page to post as your company, free on every plan. You must be an admin of the page on LinkedIn, and after signing in you choose which page to connect. Source: https://voholabs.com/docs/channels/linkedin-page Last updated: 5 October 2026 A LinkedIn Page channel posts as a company page. It uses the same composer, limits and carousel option as the personal [LinkedIn](https://voholabs.com/docs/channels/linkedin) channel, and it adds analytics. ## What do I need before I connect? - A LinkedIn account that is an **admin** of the page. Studio lists only the pages where you hold the admin role, so other page roles, such as analyst, are not enough. - The page itself. Studio cannot create one; create it on LinkedIn first. ## How do I connect a LinkedIn Page? 1. Choose **Add Channel** and click **LinkedIn Page**. 2. Sign in to LinkedIn and approve Studio's access to manage your pages and their posts. 3. Back in Studio, **Select Linkedin Page:** lists the pages you administer. Choose one. 4. The channel appears in the calendar, named after the page. If you close the window before choosing a page, the channel shows a red exclamation mark. Click it to finish. ## What can I post? The rules match the personal LinkedIn channel: - **Text** of up to 3,000 characters. - **Images**: one or more. - **One video**, on its own. - **An image carousel** of two or more images, ticked with **Post as images carousel** and titled with **Carousel slide name**. LinkedIn shows it as a document with swipeable slides. See [how carousels work](https://voholabs.com/docs/channels/linkedin#how-do-carousels-work). - **Follow-up parts**, added with **Add comment**, posted as text-only comments from the page. ## Which analytics does a page report? Open **Analytics** in the menu, choose the page and a period of **7 Days**, **30 Days** or **90 Days**. - **For the page:** page views, clicks, shares, engagement, comments, and organic and paid followers. - **For each post:** impressions, unique impressions, clicks, likes, comments, shares and engagement. Hover a published post in the calendar and open **Post Statistics**. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## Why can't Studio find my page? If the picker says "We couldn't find any business connected to your LinkedIn Page.", LinkedIn returned no page where you are an admin. Check these, then connect again: 1. You signed in with the LinkedIn account that holds the admin role, not another account in the same browser. 2. Your role on the page is admin. Ask an existing admin to change it if needed. 3. The page exists and is active on LinkedIn. When the page appears, delete the unfinished channel from its menu so your list stays tidy. ## What should I do when the channel disconnects? LinkedIn sign-ins last for a limited time. Studio renews them where LinkedIn allows, and a page channel also stops working if you lose your admin role. When the channel shows a red exclamation mark, [reconnect it](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel) with the same LinkedIn account. ## Frequently asked questions ### Can I connect several LinkedIn Pages? Yes. Each page is its own channel. Add the LinkedIn Page channel once per page and choose a different page each time. ### Does a LinkedIn Page cost credits? No. LinkedIn Pages are free on every plan, including the free plan. ### Do I also need to connect my personal LinkedIn profile? No. The LinkedIn Page channel signs in separately and only needs your admin role on the page. Connect the LinkedIn channel as well only if you also want to post as yourself. ### Someone else is the admin of our page. What do they need to do? Either they connect the page in your Studio workspace, or they make you an admin of the page on LinkedIn first. Studio only lists pages the signed-in person administers. ## Related pages - [LinkedIn](https://voholabs.com/docs/channels/linkedin) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to Instagram from Voholabs Studio > Studio connects to Instagram in two ways: Instagram (Facebook Business), for Business accounts linked to a Facebook Page, and Instagram (Standalone), for Business and Creator accounts with no Page. Both post feed posts, Reels, carousels and Stories for free on every plan, and only the Facebook connection can add music to Reels. Source: https://voholabs.com/docs/channels/instagram Last updated: 5 October 2026 Instagram only lets apps publish to professional accounts, Business or Creator, so a personal account must be switched first. After that, the choice is about how you sign in and whether you need audio on Reels. ## Which connection should I choose? | | Instagram (Facebook Business) | Instagram (Standalone) | |---|---|---| | You sign in with | Facebook | Instagram | | Account type | Business account linked to a Facebook Page | Business or Creator account, no Page needed | | Posts, Reels, carousels, Stories | Yes | Yes | | Collaborators and trial Reels | Yes | Yes | | Music or original audio on Reels | Yes | No | | Analytics | Yes | Yes | Choose **Instagram (Facebook Business)** if your account is already linked to a Facebook Page, or if you want to add audio to Reels. Choose **Instagram (Standalone)** if you have a Creator account, have no Facebook Page, or would rather not involve Facebook. ## How do I connect Instagram? **Through Facebook:** 1. Choose **Add Channel** and click **Instagram (Facebook Business)**. 2. Sign in to Facebook with the profile that manages the Page your Instagram account is linked to. 3. When Facebook asks which Pages, businesses and Instagram accounts to share, include the Page and the Instagram account you want. Selecting all of them is the safest choice. 4. Approve the permissions Facebook lists. 5. Back in Studio, **Select Instagram Account:** shows the accounts you shared. Choose one. **Directly:** 1. Choose **Add Channel** and click **Instagram (Standalone)**. 2. Sign in to Instagram with the account you want to post from. 3. Approve the access Instagram asks for, including publishing content. 4. The channel appears in the calendar, named after your account. > [!TIP] > If you connected Studio before, Facebook may offer to continue with your previous settings. Choose to edit them instead, or the new Page or account will not be shared with Studio. ## What can I post? - **At least one image or video.** Instagram posts cannot be text only. - **A caption** of up to 2,200 characters. - **A single video**, published as a Reel. - **A carousel** of up to 10 images and videos. - **Stories.** See below. - **Follow-up parts**, added with **Add comment**, posted as text-only comments under the post. Feed images must have an aspect ratio between 4:5 and 1.91:1. Instagram rejects images outside that range. ## How do I post a Reel or a Story? In the Instagram settings of the post, **Post Type** has two options: - **Post / Reel** (the default). One video becomes a Reel. One image becomes a feed post. Several attachments become a carousel. - **Story**. Each attachment is published as its own Story, in order. Collaborators, audio and trial Reels are not available for Stories. ## How do collaborators and trial Reels work? **Collaborators (max 3) - accounts can't be private** invites up to three other accounts to co-author the post, so it can appear on their profiles too once they accept. The accounts must be public. Instagram does not accept collaborators on carousels. **Trial Reel (share only to non-followers first)** shows a Reel to people who do not follow you before your followers see it. It needs a single video. Then pick a **Graduation Strategy**: - **Manual**: you decide in Instagram whether to share it with your followers. - **Auto (based on performance)**: Instagram shares it with your followers if it performs well. Not every account can post trial Reels. If yours cannot, the post fails with "This account doesn't support Trial Reels". ## How do I add music to a Reel? Audio needs the **Instagram (Facebook Business)** connection and a post that is a single video with **Post / Reel** selected. On a Standalone channel the button is greyed out with "Only available on Instagram with Facebook Login". 1. Under **Audio (Reels only - single video)**, click **Add audio**. 2. Choose **Music** or **Original sound**. 3. Search for a track, or leave the search empty to see what is trending, and pick one. You can play it first. 4. Set **Audio volume** and **Original video volume** to balance the track against the sound in your video. ## What analytics does Instagram report? Open **Analytics** in the menu and choose the channel. Both connections report the same figures. - **For the account:** followers, reach, likes, views, comments, shares, saves and replies. - **For each post:** views, reach, saves, likes, comments and shares, under **Post Statistics** when you hover a published post in the calendar. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## What do Instagram's errors mean? | Message | What to do | |---|---| | "Your Instagram account is not a business account, please convert it to a business account" | Switch the account to Business in the Instagram app, or connect it with Instagram (Standalone). | | "Not enough scopes, when choosing a provider, please add all the scopes" | You declined a permission. Connect again and approve everything. | | "The account is missing some permissions to perform this action, please re-add the account and allow all permissions" | Delete the channel, add it again, and approve every permission and Page. | | "Something is wrong with your connected user, please re-authenticate" | [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). | | "You session has been invalidated, this can usually happen from frequent posting, please re-authenticate, and wait 1-2 days before posting again" | Reconnect, then pause posting for a day or two. | | "Aspect ratio not supported, must be between 4:5 to 1.91:1" | Crop the image to that range. | | "Collaborators are not allowed for carousel" | Remove the collaborators, or post a single image or video. | | "Instagram detected that your post is spam, please try again with different content" | Change the caption or media and schedule again. | | "Media expired, please upload again" or "Media not found, please upload again" | Upload the file again in the composer and reschedule. | ## Frequently asked questions ### Can I connect a personal Instagram account? No. Instagram only lets apps publish to professional accounts. Switch your account to Business or Creator in the Instagram app, which is free, then connect it. ### Can I connect the same account both ways? No. Studio keeps one channel per Instagram account. Connecting it through the other option switches the existing channel to that connection instead of adding a second one. ### Does Instagram cost credits? No. Both Instagram connections are free on every plan, including the free plan. ### Can I post text without an image? No. Every Instagram post needs at least one image or video. ### Can a comment include an image? No. Follow-up comments are text only. ### How many posts can I publish a day? Instagram sets a daily publishing limit per account. If you reach it, the post fails with a message saying so; schedule the rest for the next day. ## Related pages - [Facebook Page](https://voholabs.com/docs/channels/facebook) - [Threads](https://voholabs.com/docs/channels/threads) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to a Facebook Page from Voholabs Studio > Studio posts to Facebook Pages, not personal profiles, and it is free on every plan. Connect, choose the page, then post text, photos, a video or Stories, with comments as follow-up parts. Source: https://voholabs.com/docs/channels/facebook Last updated: 5 October 2026 A Facebook Page channel posts as the Page. You need to manage the Page on Facebook. If your Instagram account is linked to the same Page, you can connect it through Facebook too; see [Instagram](https://voholabs.com/docs/channels/instagram). ## How do I connect a Facebook Page? 1. Choose **Add Channel** and click **Facebook Page**. 2. Sign in to Facebook with the profile that manages the Page. 3. When Facebook asks which Pages and businesses to share, include the Page you want. Selecting all of them is the safest choice. 4. Approve the permissions Facebook lists. Studio needs them to publish, to post comments and to read Page statistics. 5. Back in Studio, **Select Page:** lists the Pages you shared. Choose one. 6. The channel appears in the calendar, named after the Page. > [!TIP] > If you connected Studio before, Facebook may offer to continue with your previous settings. Choose to edit them instead, or a Page you have added since will not be shared with Studio. If the picker says "We couldn't find any business connected to the selected pages.", Facebook shared no Page with Studio. Delete the unfinished channel, add it again, and include the Page when Facebook asks. ## What can I post? - **Text only**, up to 63,206 characters. - **Photos**: one or more. Each photo must be smaller than 4 MB and saved as JPG or PNG. - **One video.** If you attach several files to a video post, only the first is used. - **Stories.** See below. - **Follow-up parts**, added with **Add comment**, posted as comments from the Page. Each comment can carry one image. ## How do Stories work? In the Facebook settings of the post, set **Post Type** to **Story**. A Story needs at least one photo or video, and each attachment is published as a separate Story, in order. **Post** is the default and publishes to the Page's feed. ## What are backgrounds and embedded URLs? Both are in the Facebook settings of the post and only apply to text posts. - **Embedded URL (only for text Post)** attaches a link to the post, so Facebook shows a link preview under the text. - **Background (applies to text-only posts shorter than 130 characters)** sets a coloured background behind short text, like the ones you can pick on Facebook. The default is **None (plain text)**. Facebook publishes no official list of backgrounds, so the colours in Studio are close but not exact, and one Facebook no longer accepts is dropped and the post goes out as plain text. ## Which analytics does a Page report? Open **Analytics** in the menu, choose the Page and a period of **7 Days**, **30 Days** or **90 Days**. - **For the Page:** impressions, post engagement, followers and media views. - **For each post:** impressions, clicks, clicks by type and reactions, under **Post Statistics** when you hover a published post in the calendar. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## What do Facebook's errors mean? | Message | What to do | |---|---| | "Please re-authenticate your Facebook account" or "Access token has been revoked, please re-authenticate" | [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). | | "Page publishing authorization required, please re-authenticate" | Facebook wants you to confirm you may publish for the Page. Reconnect, and check your role on the Page. | | "Photos should be smaller than 4 MB and saved as JPG, PNG" | Resize or convert the photo and schedule again. | | "You are posting too fast, please slow down" | Space the posts out and try again later. | | "These photos were already posted." | Facebook refuses a repeat of the same photos. Use different images. | | "Cannot post Facebook.com links" | Remove the facebook.com link from the post. | | "Content violates Facebook Community Standards" or "Content flagged as abusive by Facebook" | Facebook blocked the content. Change it before you try again. | | "Facebook service temporarily unavailable" | A problem on Facebook's side. Schedule the post again a little later. | ## Frequently asked questions ### Can I post to my personal Facebook profile? No. Facebook only lets apps publish to Pages. Create a Page for your business or brand and connect that. ### Can I connect several Pages? Yes. Each Page is its own channel. Add the Facebook Page channel once per Page and choose a different Page each time. ### Does Facebook cost credits? No. Facebook Pages are free on every plan, including the free plan. ### Why was my background not applied? Backgrounds only apply to text-only posts shorter than 130 characters, and Facebook changes the backgrounds it accepts without notice. If Facebook rejects the one you chose, Studio publishes the post as plain text instead of failing it. ### Can a comment include a photo? Yes. Each follow-up comment can carry one image. ## Related pages - [Instagram](https://voholabs.com/docs/channels/instagram) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to Threads from Voholabs Studio > Connect your Threads account to post text of up to 500 characters with an image, a video or a carousel, free on every plan. Extra parts are published as replies, forming a thread. Source: https://voholabs.com/docs/channels/threads Last updated: 5 October 2026 ## How do I connect Threads? 1. Choose **Add Channel** and click **Threads**. 2. Sign in with the account behind your Threads profile. 3. Approve the access Threads asks for: your profile, publishing, replies and insights. 4. The channel appears in the calendar, named after your Threads profile. ## What can I post? - **Text** of up to 500 characters, on its own or with media. - **One image or one video.** - **A carousel** of several images and videos. - **Follow-up parts**, added with **Add post**. Each part is published as a reply to the one before it, so together they form a thread. ## How do I post a thread? 1. Write the first post for your Threads channel. 2. Click **Add post** under it and write the next part. Add media to it if you like. 3. Repeat for each part, then schedule as usual. Studio publishes the first post at the scheduled time, then each reply in order. Every part has its own 500-character limit. ## What analytics does Threads report? Open **Analytics** in the menu and choose the channel. Threads reports views, likes, replies, reposts and quotes, both for the account and for each post. Per-post figures are under **Post Statistics** when you hover a published post in the calendar. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## What do Threads errors mean? | Message | What to do | |---|---| | "Threads access token expired" | [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). | | "Post text exceeds 500 characters limit" | Shorten the part, or move text into a reply. | | "One of the media URLs is invalid or inaccessible, make sure it's being uploaded to Voholabs first" | Threads could not fetch a file. Upload it through the composer or the media library rather than linking to it, then schedule again. | | "Error from Meta: We restrict certain activity to protect our community" | Meta limited the account for now. Wait, then try again with different content. | | "User restricted" | Meta has restricted the account. Check the Threads app for details. | ## Frequently asked questions ### Does Threads cost credits? No. Threads is free on every plan, including the free plan. ### Can each part of a thread have its own image? Yes. Every part can carry text, one image or video, or a carousel, the same as the first post. ### Do I need to connect Instagram first? No. Threads signs in on its own. You need a Threads profile, which you create from your Instagram account in the Threads app. ### Why did my Threads channel disconnect? Studio renews the Threads sign-in automatically, but it ends if you remove Studio's access in your Threads or Instagram settings, or Meta ends the session. Reconnect the channel and your posts stay in place. ## Related pages - [Instagram](https://voholabs.com/docs/channels/instagram) - [X](https://voholabs.com/docs/channels/x) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to TikTok from Voholabs Studio > TikTok is free on every Studio plan. Connect your account, attach one video or one or more photos, choose who can see the post, and Studio publishes it straight to your profile or, if you prefer, sends it to your TikTok inbox to finish in the app. Source: https://voholabs.com/docs/channels/tiktok Last updated: 5 October 2026 ## How do I connect TikTok? 1. Choose **Add Channel** and click **TikTok**. 2. Sign in to TikTok and approve Studio. 3. The channel appears in your calendar, named after your TikTok account. ## What can I post to TikTok? - One video, one photo, or several photos. Every TikTok post needs at least one attachment, and you cannot mix video and photos. - A caption of up to 2,000 characters. - For a video, the post text becomes the caption. For photos, you can add a **Title** of up to 90 characters, and the post text becomes the description. ## Which settings does a TikTok post have? The settings panel reads "Posting to TikTok as" your account name, and loads what TikTok allows for your account. - **Who can see this video?** Only the options TikTok allows for your account. There is no default, so you choose one each time. - **Content posting method**: **Post content directly to TikTok** (the default) or **Upload content to TikTok without posting it**, which sends the post to your TikTok inbox to finish in the app. - **Allow User To**: Comments, Duet and Stitch. All are off until you turn them on. Duet and Stitch apply to videos only. - **Auto add music**: photo posts only. - **Video made with AI**: labels AI-generated content. - **Content disclosure setting**: mark the post as promoting **Your brand** or as **Branded content**. Branded content cannot be private. By posting you agree to TikTok's Music Usage Confirmation, and to its Branded Content Policy when you disclose branded content. > [!NOTE] > After a post is published, TikTok may take a few minutes to process it before it shows on your profile. ## What analytics does TikTok report? For the account: followers, following, likes, videos and views, plus recent likes, comments and shares. For each post: views, likes, comments and shares. See [Analytics](https://voholabs.com/docs/workspace/analytics) for where to find them. ## Frequently asked questions ### Does posting to TikTok cost credits? No. TikTok is free on every plan, including the free plan. ### My TikTok channel was disconnected. What do I do? Choose Reconnect channel from the channel's menu in the calendar, or remove it and connect it again. See [Manage your channels](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). Channels that Studio disconnected at the end of September 2026 need to be reconnected once. ### Why can't I choose "Everyone" under Who can see this video? Studio only offers the privacy options TikTok allows for your account at that moment, and it reads them live from TikTok each time. A private account, for example, cannot post publicly. ### Why is my post not on my profile yet? TikTok can take a few minutes to process a post after Studio sends it. If you chose to upload without posting, the post waits in your TikTok inbox instead, until you finish it in the TikTok app. ### Can I post a thread or add a comment? No. TikTok posts take no follow-up parts. ## Related pages - [Channels overview](https://voholabs.com/docs/channels) - [Getting started](https://voholabs.com/docs/getting-started) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) - [Manage your channels](https://voholabs.com/docs/channels/manage) --- # Post to YouTube from Voholabs Studio > Connect your YouTube channel to upload one video per post, free on every plan. Each upload has a title, a privacy setting, tags, the made-for-kids answer and an optional custom thumbnail. Source: https://voholabs.com/docs/channels/youtube Last updated: 5 October 2026 ## How do I connect YouTube? 1. Choose **Add Channel** and click **YouTube**. 2. Sign in to Google. If your channel belongs to a Brand Account, choose the Brand Account when Google asks which account to use. 3. Google lists the access Studio asks for: seeing your YouTube account, uploading videos, and reading YouTube Analytics. Tick every box, then continue. 4. Back in Studio, **Select YouTube Channel:** shows each channel with its handle and subscriber count. Choose one. 5. The channel appears in the calendar, named after your YouTube channel. > [!IMPORTANT] > Google shows each permission as a separate checkbox. If you leave one unticked, Studio stops with "Not enough scopes". Connect again and tick them all. ## What can I post? - **Exactly one video** per post. A post without a video, or with an image, is refused with "You need one media" or "Item must be a video". - **A description** of up to 5,000 characters: the post text. - **No follow-up parts.** YouTube posts take no comments or replies. ## Which settings does a video have? The YouTube settings of the post: - **Title**: required, 2 to 100 characters. - **Type**: **Public** (the default), **Private** or **Unlisted**. - **Made for kids**: **No** (the default) or **Yes**. YouTube requires an honest answer for every video. - **Tags**: as many as you like, up to 500 characters in total. - **Thumbnail**: optional. Use a 1280 by 720 image in JPG or PNG. ## Why can't Studio find my channel? If **Select YouTube Channel:** says "We couldn't find any YouTube channels connected to your account.", the Google account you chose has no YouTube channel. 1. Check that you picked the right Google account. A channel on a Brand Account only appears when you choose that Brand Account at Google's sign-in, not your personal account. 2. If you have no channel yet, create one on YouTube first. 3. Close the dialog, delete the unfinished channel from its menu, and add YouTube again. ## What analytics does YouTube report? Open **Analytics** in the menu, choose the channel and a period of **7 Days**, **30 Days** or **90 Days**. - **For the channel:** minutes watched, average view duration and percentage, subscribers gained and lost, and likes. - **For each video:** views, likes, comments and favourites, under **Post Statistics** when you hover a published post in the calendar. See [Analytics](https://voholabs.com/docs/workspace/analytics#how-do-i-see-one-posts-statistics). ## What do YouTube's errors mean? | Message | What to do | |---|---| | "Token expired or invalid, please reconnect your YouTube account." or "Please re-authenticate your YouTube account" | [Reconnect the channel](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). | | "You have reached your daily upload limit, please try again tomorrow." | YouTube limits uploads per day. Schedule the video for tomorrow. | | "You have to link your youtube account to your google account first." | Create a YouTube channel for that Google account, then reconnect. | | "Your account is not verified, we have uploaded your video but we could not set the thumbnail. Please verify your account and try again." | The video is live. Verify your account in YouTube Studio to use custom thumbnails. | | "We have uploaded your video but the thumbnail format is not supported, please use JPEG or PNG." | Set the thumbnail in YouTube Studio, and use JPG or PNG next time. | | "The maximum allowed is 500 characters in total." | Your tags are too long. Remove some. | | "Your video description is invalid, it may contain disallowed characters such as < or >." | Remove angle brackets from the post text. | | "The video file is missing or could not be read, please re-upload the video." | Upload the video again in the composer and reschedule. | ## Frequently asked questions ### Does YouTube cost credits? No. YouTube is free on every plan, including the free plan. ### Can I post a Short? Upload the vertical video as a normal post. YouTube decides whether a video is treated as a Short from its shape and length, not from anything Studio sends. ### Do my subscribers get notified? Yes. Studio asks YouTube to notify subscribers when the video is uploaded. YouTube still decides who actually sees a notification. ### Why does the video go out but without my thumbnail? Custom thumbnails need a verified YouTube account. Verify your account in YouTube Studio, then set the thumbnail there for this video. The upload itself is not affected. ### Can I connect more than one YouTube channel? Yes. Each YouTube channel is its own Studio channel. Add YouTube again and pick the other channel, or the other Brand Account, when Google asks. ## Related pages - [TikTok](https://voholabs.com/docs/channels/tiktok) - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) - [Analytics](https://voholabs.com/docs/workspace/analytics) --- # Post to Discord from Voholabs Studio > Connecting Discord adds Studio's bot to one server, free on every plan. Each post goes to the channel you pick, including forum channels, where it starts a titled thread. Source: https://voholabs.com/docs/channels/discord Last updated: 5 October 2026 ## What do I need to connect Discord? - A Discord account with the **Manage Server** permission on the server. Discord only lets people with that permission add a bot. - Nothing else. Connecting adds the bot for you, with the permissions it needs to post: send messages, create public and private threads, and send messages in threads. ## How do I connect a server? 1. Choose **Add Channel** and click **Discord**. 2. Sign in to Discord if asked. 3. In Discord's dialog, pick the server to add the bot to, then click **Authorize**. 4. The server appears in the calendar as a channel, named after the server. ## Which channels can I post to? Text, announcement and forum channels. In the Discord settings of the post, pick one under **Select Channel**; you must pick one before you can schedule. - A channel marked **(bot has no access)** is one the bot cannot post in. Give the bot access in Discord, or pick another channel. - In a **forum channel**, each post starts a new thread. Give it a **Post title** of up to 100 characters, or leave it empty to use the first line of the post. ## What can I post? - **Text** of up to 1,980 characters. The Discord editor supports Markdown formatting, such as bold, italics, lists and links. - **Images and videos** as attachments, within Discord's file size limit. - **Follow-up parts**, added with **Add comment**. Studio posts them in a thread started from your message, or inside the forum thread. ## Why does Studio say the bot cannot post? Before scheduling, Studio checks that the bot can post in the channel you picked. If it cannot, you see a message that starts "The bot cannot post in #" followed by the channel's name and the permissions it is missing: **View Channel**, **Send Messages**, or **Attach Files** when the post has media. To fix it: 1. In Discord, open the channel's settings and go to **Permissions**. 2. Add the bot, or a role the bot has, and allow the missing permissions. 3. Go back to Studio and schedule the post again, or pick a different channel. If a forum post has no title and no text to take one from, Studio asks you to add a **Post title** before it schedules. ## Which errors can Discord return? | Message | What to do | |---|---| | "Bot doesn't have access to this channel" | Give the bot access to the channel in Discord. | | "Bot lacks permission to send messages in this channel" | Allow **Send Messages** for the bot in that channel. | | "Channel no longer exists" | The channel was deleted. Edit the post and pick another one. | | "Attachment exceeds Discord's size limit" | Use a smaller file. | | "Rate limited by Discord" | Discord asked Studio to slow down. Studio tries again on its own. | If the bot was removed from the server, connect Discord again to add it back. ## Can I mention roles or everyone? Yes. Type `@` in the post and choose **here**, **everyone** or one of the server's roles from the list. Mentions notify people the same way they would if you posted by hand, so use **everyone** sparingly. ## Frequently asked questions ### Does Discord cost credits? No. Discord is free on every plan, including the free plan. ### Can one Discord channel in Studio post to several servers? No. One connection is one server. Connect Discord again for each extra server; each appears as its own channel, named after the server. ### Can I post to different channels in the same server? Yes. You pick the Discord channel on each post, so one connection covers every channel the bot can post in. ### Can I change the bot's name in my server? Yes. Choose Change Bot Nickname from the channel's menu in the calendar. The new name only applies in that server. ### Are there analytics for Discord? No. Studio does not report analytics for Discord. ## Related pages - [Channels overview](https://voholabs.com/docs/channels) - [Manage your channels](https://voholabs.com/docs/channels/manage) - [Create a post](https://voholabs.com/docs/posts/create) --- # Publish Sanity blog articles from Voholabs Studio > Studio can publish your Sanity blog on a schedule. Connect your project with its project ID, dataset and an Editor API token, write the article in Sanity as usual, then press Schedule on it in Studio, and Studio publishes the draft at the time you pick. Source: https://voholabs.com/docs/channels/sanity Last updated: 5 October 2026 Sanity is a content platform many teams use for their blog. Studio treats a Sanity project as a channel: a scheduled post publishes an article instead of a social post. ## What do I need before I connect? - A Sanity project that holds your blog, and permission to create API tokens in it. - The project's dataset name, usually `production`. ## How do I connect Sanity? 1. Choose **Add Channel** and click **Sanity**. The panel **Connect your Sanity project** opens. 2. Open [sanity.io/manage](https://www.sanity.io/manage) and click the project your blog comes from. 3. Copy the **Project ID** from that page (the short code at the end of the address) and paste it into Studio. Pasting the whole address also works. 4. Enter the **Dataset**. It is usually `production`. 5. In the same Sanity project, open **API › Tokens › Add API token**, give it the **Editor** role, and paste it into **API token** in Studio. Sanity shows the token once, so copy it straight away. 6. Connect. The channel is named after your project and dataset, for example "Blog (production)". > [!WARNING] > A token with the Viewer role connects, but publishing then fails when an article is due. Use the Editor role. ## How do I schedule an article? 1. Write and save the article in Sanity as a draft. 2. In Studio, create a post on the Sanity channel. Studio lists the articles in your project with their state, Draft or Published. 3. Find the article and press **Schedule** on it. There is nothing to fill in, because the content lives in Sanity. 4. Pick the date and time. At that time Studio sets the article's publish date to the moment it goes out and publishes the current draft. The post in Studio then links to the live article on your site. ## What does Studio check before it schedules? Studio stops you if the article no longer exists, has no title, or references a document that was deleted. It warns, without stopping you, when other fields are missing. ## What happens if I change the article after scheduling? Keep editing the draft in Sanity. Studio publishes whatever the draft holds when the time comes. If there is no draft at that moment, nothing changes on your site. ## Which content does the preview show? Studio's preview of an article shows headings, paragraphs, quotes, lists, bold, italic, code and links, images with alt text and captions, code blocks, callouts, and embeds from YouTube, TikTok and LinkedIn. Other links show as link cards, and block types the preview does not know are left out of the preview. ## Frequently asked questions ### Do I write the article in Studio? No. Articles are written in Sanity. Studio lists the articles in your project and schedules their publication, so your blog goes out on the same calendar as your social posts. ### Why does my token need the Editor role? Publishing writes to your dataset. A Viewer token connects, but publishing fails when the article is due. Give the token the Editor role, or another role with write access. ### What happens if I delete the scheduled post in Studio after it published? Studio unpublishes the article in Sanity and keeps it as a draft, so nothing you wrote is lost. ### Which Sanity documents can I schedule? Document types that have a Portable Text body and a publish date field, which is how most blog schemas define an article. ### Can my AI agent work with Sanity? Yes. When a Sanity channel is connected, an agent connected over MCP can query, create, edit and publish documents in that project through Studio. Scheduling stays with Studio, so the agent schedules through Studio rather than through Sanity. ## Related pages - [Channels overview](https://voholabs.com/docs/channels) - [Connect your agent](https://voholabs.com/docs/agents) - [Create a post](https://voholabs.com/docs/posts/create) - [Manage your channels](https://voholabs.com/docs/channels/manage) --- # Connect your AI agent to Voholabs Studio > Studio runs an MCP server, so any AI agent that speaks the Model Context Protocol can use your Studio account. Claude and ChatGPT connect with a private connector link from Settings › Connect Agent, and coding agents connect with your API key in a header. Source: https://voholabs.com/docs/agents Last updated: 5 October 2026 MCP, the Model Context Protocol, is the open standard that lets an AI assistant use an outside tool directly. Studio's MCP server gives your agent the same abilities you have in the app: listing channels, writing and scheduling posts, uploading media and reading analytics. ## Which agents can I connect? | Agent | How it connects | Guide | |---|---|---| | Claude (claude.ai, desktop, mobile, Cowork) | Connector link with your key in it | [Connect Claude](https://voholabs.com/docs/agents/claude) | | ChatGPT (web, developer mode) | Connector link with your key in it | [Connect ChatGPT](https://voholabs.com/docs/agents/chatgpt) | | Claude Code, Cursor, VS Code with Copilot, Windsurf, Amp, Codex, Gemini CLI, Warp | MCP address plus your key in an Authorization header | [Developer tools](https://voholabs.com/docs/agents/developer-tools) | | Scripts, CI jobs and terminal-based agents | The Voholabs CLI and its agent skill | [CLI](https://voholabs.com/docs/cli) | ## Where do I find my connection details? In Studio, open **Settings › Connect Agent**. The **Connect** tab has three tabs of its own: **Claude**, **ChatGPT** and **Developer tools**. Each one shows the steps for that agent and a button that copies exactly what you need. New accounts also see the same panel as the second step of onboarding, **Connect your agent**. ## What can my agent do in Studio? - See which account and channels it is working with. - Read each network's rules and settings before it writes. - Schedule, draft, edit, reschedule and delete posts. - Find the next free time slot for a channel. - Upload images and videos, from your computer or from a link. - Read channel and post analytics. - Work with a connected Sanity project. The full list, tool by tool, is in the [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools). Some tools, such as the brief and the skills library, appear once your wallet is topped up. ## How do I keep my account safe? Your connector link and your API key give full access to post on your channels. Keep them in your own agent settings only. If either leaks, rotate the key in **Settings › Connect Agent** and reconnect your agents with the new one. ## Frequently asked questions ### Do I need to install anything? No. The MCP server runs at studio.voholabs.com. You paste a link or a config into your agent and it connects. ### Does connecting an agent cost anything? No. MCP is free on every plan. The agent's actions are charged the same way as yours, so only pay-per-use features such as posting to X spend credits. ### Can my agent see my password or my social media logins? No. The agent uses your Studio API key. It never sees the logins of your connected networks, and you can cut it off at any time by rotating the key. ### Is there a limit on how much an agent can do? There is a per-minute request limit per workspace, which is higher once you have topped up your wallet. If an agent hits it, Studio answers "Too many requests, slow down and try again in a minute." ## Related pages - [The Voholabs Studio MCP server](https://voholabs.com/docs/agents/mcp) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - [Public API](https://voholabs.com/docs/api) --- # Connect Claude to Voholabs Studio > Copy your connector link from Settings › Connect Agent in Studio, add it in Claude under Settings › Connectors › Add custom connector, switch it on in a chat, and allow Studio's file domains. After that Claude can draft, upload and schedule posts in your account. Source: https://voholabs.com/docs/agents/claude Last updated: 5 October 2026 Claude connects to Studio over MCP, the Model Context Protocol. You add Studio once as a custom connector, and every Claude chat can then use it. ## What do I need before I start? - A Voholabs Studio account with at least one connected channel. See [Getting started](https://voholabs.com/docs/getting-started). - A Claude plan that lets you add custom connectors. - About two minutes. ## How do I add Studio to Claude? 1. In Studio, open **Settings › Connect Agent**, pick the **Claude** tab and press **Copy your connector link**. 2. In Claude, open **Settings › Connectors › Add custom connector**. In Cowork, the same place is **Customize › Connectors › +**. 3. Fill in two fields and click **Add**: Name `Voholabs Studio`, URL the link you copied. 4. In a chat, switch the connector on from **+ › Connectors › Voholabs Studio**. 5. In Claude, open **Settings › Capabilities › Domain allowlist** and add the domains the Studio panel lists in its step 4 (the Studio app domain, and the media storage domain when it differs). > [!IMPORTANT] > Do not skip the domain allowlist. Without it Claude cannot send your images and videos to Studio or open the ones already in your media library, and an upload fails with a blocked request. ## How do I check that it works? Ask Claude something that needs your account, for example: ```text List my Voholabs Studio channels, then schedule a post for tomorrow at 9am about our new feature. ``` Claude lists your connected channels, writes the post and schedules it. The post then appears in your Studio calendar. ## Is the connector link safe to share? No. The link contains your API key, so anyone who has it can read and publish to your channels. Paste it only into your own Claude settings, never into a shared chat or document. > [!WARNING] > If the link leaks, rotate your API key in **Settings › Connect Agent**. Rotating stops every connector, CLI login and API integration that used the old key, so add the connector again with the new link. ## What can Claude do once it is connected? Claude can list your channels, check each network's rules, upload media, schedule or draft posts, edit or delete posts that have not gone out, find the next free time slot, and read analytics. The full list is in the [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools). Some actions spend credits from your wallet, for example publishing to X. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Frequently asked questions ### Do I need to fill in the OAuth Client ID and Secret? No. Leave Advanced settings empty. The connector link already carries your API key, so Claude signs in with it as soon as you click Add. ### Does the connector work in the Claude desktop app and on mobile? Yes. Connectors belong to your Claude account, so adding Voholabs Studio once turns it on everywhere you use Claude, including Cowork, the desktop app, claude.ai and mobile. ### Why does Claude say it cannot upload my image? Claude runs file work in a sandbox that only reaches allowed hosts. Add the domains shown in step 4 of the Studio panel under Settings › Capabilities › Domain allowlist in Claude, then ask again. ### What happens if my connector link leaks? Anyone holding the link can read and publish to your channels. Rotate your API key in Settings › Connect Agent, then add the connector again with the new link. See [API keys](https://voholabs.com/docs/api#how-do-i-rotate-my-api-key). ## Related pages - [Connect ChatGPT](https://voholabs.com/docs/agents/chatgpt) - [Connect Claude Code, Cursor and other developer tools](https://voholabs.com/docs/agents/developer-tools) - [The Voholabs Studio MCP server](https://voholabs.com/docs/agents/mcp) - Anthropic's own guide: [Get started with custom connectors](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) --- # Connect ChatGPT to Voholabs Studio > Turn on developer mode in ChatGPT on the web, add a remote MCP server under Plugins, paste the connector link from Settings › Connect Agent in Studio, and choose No authentication. ChatGPT can then list your channels and schedule posts straight away. Source: https://voholabs.com/docs/agents/chatgpt Last updated: 5 October 2026 ChatGPT connects to Studio over MCP, the Model Context Protocol, as a remote MCP server. It needs developer mode, which ChatGPT offers on the web on Plus, Pro, Business, Enterprise and Edu plans. ## How do I add Studio to ChatGPT? 1. In Studio, open **Settings › Connect Agent**, pick the **ChatGPT** tab and press **Copy your connector link**. 2. In ChatGPT on the web, turn on developer mode under **Settings › Security and login › Developer mode**. 3. Open **Plugins › +** and add a remote MCP server. 4. Fill in the fields and save: Name `Voholabs Studio`, MCP Server URL the link you copied, Authentication **No authentication**. That is all. There is no per-chat switch and nothing to allowlist. ## How do I check that it works? Start a new chat and ask: ```text List my Voholabs Studio channels, then schedule a post for tomorrow at 9am about our new feature. ``` ChatGPT lists your connected channels and schedules the post, which then appears in your Studio calendar. ## Is the connector link safe to share? No. The link contains your API key, so anyone holding it can read and publish to your channels. If it leaks, rotate your API key in **Settings › Connect Agent** and add the connector again with the new link. Rotating stops everything that used the old key. ## Frequently asked questions ### Why choose "No authentication" when the server needs my key? Your connector link already carries the key that signs you in, and ChatGPT has no separate field for one. No authentication is the right choice even though it sounds wrong. Treat the link like a password. ### Can I add the connector from the ChatGPT phone app? No. Developer mode, and with it custom connectors, is only on ChatGPT on the web. Once added, the connector is part of your account. ### The Developer mode switch is missing on my work plan. What do I do? On Business, Enterprise and Edu plans the switch only appears after an admin allows it. Ask your workspace admin to turn it on. ### Do I need to allowlist any domains for ChatGPT? No. ChatGPT reaches Studio from its own servers, so there is nothing to allowlist. The domain step only applies to Claude. ## Related pages - [Connect Claude](https://voholabs.com/docs/agents/claude) - [What the agent can do: MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - OpenAI's own guide: [Developer mode](https://developers.openai.com/api/docs/guides/developer-mode) --- # Connect Claude Code, Cursor, Codex and other developer tools > Coding agents connect to the Voholabs Studio MCP server at https://studio.voholabs.com/api/mcp and send your API key in an Authorization header. Studio's Settings › Connect Agent › Developer tools tab generates the exact config for each client. Source: https://voholabs.com/docs/agents/developer-tools Last updated: 5 October 2026 Developer tools send your API key as a header, so the server address carries no secret. The examples below use `YOUR_API_KEY`; Studio's panel fills in your real key for you. ## How do I connect a developer tool? 1. In Studio, open **Settings › Connect Agent**, pick the **Developer tools** tab and choose your client. 2. Press **Copy** to copy the generated config, which already contains your key. 3. Paste it where your client expects MCP servers, as listed below, and restart or reload the client. 4. Ask the agent to list your Voholabs Studio channels to confirm it is connected. ## What is the config for each client? ### Claude Code Run this in your terminal: ```bash claude mcp add --transport http voholabs https://studio.voholabs.com/api/mcp --header "Authorization: Bearer YOUR_API_KEY" ``` ### Cursor Add to `.cursor/mcp.json` in your project root: ```json { "mcpServers": { "voholabs": { "url": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` ### VS Code with Copilot Add to `.vscode/mcp.json` in your project root: ```json { "servers": { "voholabs": { "type": "http", "url": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` ### Windsurf Add to `~/.codeium/windsurf/mcp_config.json`: ```json { "mcpServers": { "voholabs": { "serverUrl": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` ### Amp Add to your Amp `settings.json`: ```json { "amp.mcpServers": { "voholabs": { "url": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` ### Codex Add to `~/.codex/config.toml`: ```toml [mcp_servers.voholabs] url = "https://studio.voholabs.com/api/mcp" http_headers = { "Authorization" = "Bearer YOUR_API_KEY" } ``` ### Gemini CLI Add to `~/.gemini/settings.json`: ```json { "mcpServers": { "voholabs": { "url": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } } ``` ### Warp Open **Settings › MCP Servers › + Add** and paste: ```json { "voholabs": { "url": "https://studio.voholabs.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } ``` ## Where do I find my API key? In **Settings › Connect Agent**, under **API Key**. The same key powers your connectors, the [CLI](https://voholabs.com/docs/cli) and the [public API](https://voholabs.com/docs/api), so keep it private and rotate it if it leaks. ## Frequently asked questions ### Why do developer tools use a different address from Claude and ChatGPT? Coding agents can send an Authorization header, so the key stays out of the URL. Chat apps cannot set headers, which is why they use the connector link with the key inside it. ### Which server name should I use? Studio's generated config uses `voholabs`, so it does not overwrite another MCP server or CLI you may already have registered under a different name. ## Related pages - [The Voholabs Studio MCP server](https://voholabs.com/docs/agents/mcp) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - [The Voholabs CLI and agent skill](https://voholabs.com/docs/cli) --- # The Voholabs Studio MCP server > The Voholabs Studio MCP server is at https://studio.voholabs.com/api/mcp. Coding agents send your API key as a Bearer token in the Authorization header; chat apps such as Claude and ChatGPT use the connector link https://studio.voholabs.com/api/mcp/YOUR_API_KEY instead. Source: https://voholabs.com/docs/agents/mcp Last updated: 5 October 2026 ## What is the server address? | Use | Address | Authentication | |---|---|---| | Coding agents and anything that can set headers | `https://studio.voholabs.com/api/mcp` | `Authorization: Bearer YOUR_API_KEY` | | Claude, ChatGPT and other chat apps | `https://studio.voholabs.com/api/mcp/YOUR_API_KEY` | The key in the address | Both reach the same server and the same tools. Prefer the header form wherever your client supports it, because it keeps the key out of the address. Your API key is in **Settings › Connect Agent** in Studio. The same key works for the [public API](https://voholabs.com/docs/api) and the [CLI](https://voholabs.com/docs/cli). ## How do I connect a client? - [Claude](https://voholabs.com/docs/agents/claude), including Cowork, the desktop app and mobile - [ChatGPT](https://voholabs.com/docs/agents/chatgpt), in developer mode - [Claude Code, Cursor, VS Code, Windsurf, Amp, Codex, Gemini CLI and Warp](https://voholabs.com/docs/agents/developer-tools) For any other MCP client, give it the address and the header above. Studio registers under the server name `Voholabs MCP`; the generated configs name it `voholabs`. ## Which tools will my agent see? It depends on your plan: - **Free plan**: channels, posts, scheduling, media, analytics, Sanity and wallet tools. - **Free plan after a wallet top-up**: all of the above, plus the brief and the skills library. - **Paid plans**: everything except the wallet tools and the skills library, including AI image and video tools. Each tool is described in the [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools). ## What are the rate limits? Studio counts MCP requests per workspace per minute. The limit is higher once your wallet has been topped up, and on paid plans. Over the limit, the server answers with HTTP 429 and "Too many requests, slow down and try again in a minute." ## Why does my agent fail to upload or open images in Claude? Claude runs file work in a sandbox that blocks hosts you have not allowed. Add the domains shown in step 4 of the Claude tab in **Settings › Connect Agent** under **Settings › Capabilities › Domain allowlist** in Claude. Other clients do not need this. ## What happens to my agents if I rotate my API key? Every connection that used the old key stops working at once: connector links, header configs, the CLI and API integrations. Copy the new link or config from **Settings › Connect Agent** and update each one. ## Frequently asked questions ### Which transport does the server use? Streamable HTTP, without sessions, so a server restart never leaves your client holding an expired session. Point your client at the address over HTTPS; there is no local process to run. ### Can I use an OAuth app token instead of my API key? Yes. A `pos_` token from an [OAuth app](https://voholabs.com/docs/api/oauth) works anywhere your API key does, including the MCP server. ### Do I need an OpenAI or Anthropic key? No. The server only gives your agent access to Studio. The model is whatever your agent already uses. ### Claude says it couldn't register with Voholabs Studio's sign-in service. What now? Use the connector link with your key in it, and leave Claude's Advanced settings (OAuth Client ID and Secret) empty. The link signs Claude in without a separate sign-in step. ## Related pages - [Connect your agent](https://voholabs.com/docs/agents) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - The protocol itself: [modelcontextprotocol.io](https://modelcontextprotocol.io) --- # MCP tools reference > The Voholabs Studio MCP server gives your agent tools for its account and channels, posts and scheduling, analytics, the media library, Sanity, and, depending on plan, the brief, the skills library and the wallet. Your agent picks the tools itself; you ask in plain language. Source: https://voholabs.com/docs/agents/mcp-tools Last updated: 5 October 2026 Tool names below are what your agent sees. Descriptions are summaries; the agent receives the full description from the server. ## Which tools manage the account and channels? | Tool | What it does | |---|---| | `accountInfo` | Says which workspace the connection belongs to. | | `integrationList` | Lists the channels you can post to, optionally only those of one customer. | | `groupList` | Lists your customers, the optional labels that group channels per client. | | `integrationSchema` | Returns a channel's rules: character limits, media rules and the settings a post needs. | | `triggerTool` | Runs a channel helper to fetch details the agent cannot ask you for, such as the list of channels on a Discord server. | ## Which tools create and change posts? | Tool | What it does | |---|---| | `integrationSchedulePostTool` | Schedules a post, saves it as a draft or publishes it now, on one or more channels, with media, follow-up parts and per-channel settings. On the free plan it reports what an X post costs and warns when credits are short. | | `postsList` | Lists posts on the calendar between two dates, with any error, optionally filtered by state. | | `editPostTool` | Changes a post that is already on the calendar, in place. | | `replacePostAsset` | Swaps one image or video on a post for another and leaves everything else as it is. | | `deletePostTool` | Deletes a post from the calendar. It refuses while other posts reference it, and on the free plan gives back credits for parts that never went out. | | `postStatusTool` | Moves a post between draft and the schedule. On the free plan, scheduling an X post charges it and moving it back to draft gives the credits back. | | `findSlotTool` | Finds the next free time slot for a channel, from the posting times set for it. | | `postHistory` | Compares a post as it was first drafted with the version that went out, so the agent can learn from your edits. | ## Which tools read analytics? | Tool | What it does | |---|---| | `channelAnalyticsTool` | How a channel is doing: followers, impressions, engagement and whatever else the network reports. | | `postAnalyticsTool` | How one published post performed: likes, comments, shares, impressions and the rest. | On the free plan, reading X analytics spends credits. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Which tools handle media? | Tool | What it does | |---|---| | `mediaList` | Lists images and videos in the media library, newest first. | | `mediaPreview` | Returns loadable references to media in the library or on a post, so the agent can look at it. | | `uploadMediaTool` | Uploads a small local image or video by sending its contents. | | `createUploadLinkTool` | Creates a temporary, single-use upload link for larger local files. | | `uploadFromUrlTool` | Imports an image or video from a public address. | | `deleteMediaTool` | Deletes an image or video from the library. | > [!NOTE] > In Claude, uploads and previews need Studio's domains in your domain allowlist. See [Connect Claude](https://voholabs.com/docs/agents/claude). ## Which tools work with Sanity? | Tool | What it does | |---|---| | `sanityMcpList` | Lists the Sanity tools available for your connected Sanity project. | | `sanityMcpCall` | Runs one of them: query, read a document or the schema, and create, edit or publish documents. | Scheduling stays with Studio: to publish an article at a set time, the agent schedules it on the Sanity channel. See [Sanity](https://voholabs.com/docs/channels/sanity). ## Which tools work with the brief? Available on paid plans, and on the free plan after a wallet top-up. | Tool | What it does | |---|---| | `briefListTool` | Reads the brief: what you have written about your business, audience, voice and offers. | | `briefSaveTool` | Writes to the brief. | | `briefDeleteTool` | Deletes a document from the brief. | | `briefLearnTool` | Records a lesson about what works for your brand in the brief's Experience section. | | `briefAssetTool` | Registers a brand file, such as a logo or product shot, in Branding and assets. | | `briefHistory` | Shows what changed in the brief since it was last reviewed. | | `markLearned` | Marks edits as learned from, so they stop showing in the history tools. | | `briefOnboardingStatus` | Says whether the guided onboarding is available, open or finished, whether a new run is charged, and gives the link to start it in Studio. The agent cannot start the onboarding itself. Free plan after a top-up only; paid plans do not see it. | See [Brief and guided onboarding](https://voholabs.com/docs/getting-started/brief). ## Which tools read the skills library? Free plan, after a wallet top-up. Paid plans do not see these tools. See [Skills library](https://voholabs.com/docs/agents/skills). | Tool | What it does | |---|---| | `skillsList` | Lists the skills: step-by-step methods for content jobs such as hooks, writing in your voice and shaping a post for each channel. | | `skillGet` | Reads one skill so the agent can follow it. | ## Which tools read the wallet? Free plan only, before and after a top-up. Paid plans do not use credits, so they do not see these tools. See [Credits and wallet](https://voholabs.com/docs/billing/credits). | Tool | What it does | |---|---| | `walletBalance` | Your balance, auto top-up settings and whether posts scheduled in the coming hours are covered. | | `walletTransactions` | Top-ups, charges and refunds, newest first. | | `walletPrices` | The price list: what costs credits, what is included free, and the price of each. | ## Which tools are on paid plans only? `mediaMcpList` and `mediaMcpCall` give paid plans AI image and video generation and editing. ## Frequently asked questions ### Do I need to call these tools by name? No. Ask your agent for the outcome, for example "schedule this for Tuesday at 10am on LinkedIn". The agent chooses and calls the tools. ### Why does my agent not see the brief or skills tools? On the free plan they appear after your first wallet top-up. Paid plans see the brief tools but not the skills library or wallet tools. ### Can the agent publish without me checking? It can schedule and publish, the same as you can. If you want to review first, ask it to save posts as drafts, then check them in the calendar. ## Related pages - [The Voholabs Studio MCP server](https://voholabs.com/docs/agents/mcp) - [Connect your agent](https://voholabs.com/docs/agents) - [Agent examples](https://voholabs.com/docs/agents/examples) - [Public API](https://voholabs.com/docs/api) --- # Agent examples > These are prompts to paste into Claude or ChatGPT once the Voholabs Studio connector is on, with what the agent does and which Studio tools it calls. Ask in plain language; the agent picks the tools itself. Source: https://voholabs.com/docs/agents/examples Last updated: 5 October 2026 Every prompt below works in Claude or ChatGPT with the Voholabs Studio connector switched on. To set it up, see [Connect Claude](https://voholabs.com/docs/agents/claude) or [Connect ChatGPT](https://voholabs.com/docs/agents/chatgpt). Coding agents connected through [developer tools](https://voholabs.com/docs/agents/developer-tools) take the same prompts. The prompts get better results once your [brief](https://voholabs.com/docs/getting-started/brief) is filled in, because the agent reads it before it writes. Where a prompt uses a [skill](https://voholabs.com/docs/agents/skills), that is noted; skills are available on the free plan after a wallet top-up. ## How do I plan a week of posts? ```text Plan next week's posts for LinkedIn and X. Three posts each, no more than one a day per channel. Base them on our launch notes below and what we posted in the last two weeks. Show me the plan first, then write the posts and save them as drafts. [paste your notes] ``` What the agent does: 1. Reads your brief (`briefListTool`) and lists your channels (`integrationList`). 2. Looks at what is already on the calendar and what went out recently (`postsList`), so it does not repeat itself. 3. Shows you a plan: which post goes where, when, and why. Nothing is written until you agree. 4. Reads each channel's rules (`integrationSchema`), finds free slots (`findSlotTool`) and saves the posts as drafts (`integrationSchedulePostTool`). With skills open, the agent follows **Plan a content week**, which also checks the whole batch for repeated points and openers. Review the drafts in the calendar, then ask the agent to schedule them, or do it yourself. ## How do I clean up a draft? ```text Clean up this LinkedIn draft so it doesn't read as AI-written. Keep my meaning and length. Tell me what you changed. [paste your draft] ``` For a post that is already on the calendar: ```text Find my LinkedIn post scheduled for Thursday and clean up the wording. Don't touch the image or the time. ``` What the agent does: 1. For a scheduled post, finds it on the calendar (`postsList`). 2. Rewrites the text in plain language and lists what it changed. 3. Saves only the new text back to the same post (`editPostTool`), so media, settings and the time stay as they were. With skills open, the agent follows **Anti-slop editor**. It works without a brief, though it also respects any banned words in your brief's **Boundaries**. ## How do I repurpose a post for other channels? ```text Take my LinkedIn post from Monday and turn it into an X thread and a Threads post. Make each one native to its network, not a copy. Space them out over the next three days and schedule them. ``` What the agent does: 1. Finds the original post (`postsList`). 2. Reads each target channel's limits and settings (`integrationSchema`), and your **Channel Preferences** in the brief (`briefListTool`). 3. Writes a separate version for each channel, with a different opening and shape. 4. Finds free slots on different days (`findSlotTool`) and schedules each version (`integrationSchedulePostTool`). With skills open, the agent follows **One idea, every channel**. On the free plan, an X post is paid from your wallet when it is scheduled; the agent tells you the cost it reports. See [X](https://voholabs.com/docs/channels/x). ## How do I check how my posts are doing? ```text How did my LinkedIn and Instagram do over the last 30 days? Which three posts did best, and what do they have in common? Keep it short. ``` What the agent does: 1. Lists your channels (`integrationList`) and reads each channel's numbers for the period (`channelAnalyticsTool`). 2. Lists the posts that went out (`postsList`) and reads each one's results (`postAnalyticsTool`). 3. Compares them and answers in a few lines. To turn the answer into lessons for next time, follow up with "Save what you learned to my brief". The agent then records each lesson in **Experience** (`briefLearnTool`). With skills open, it follows **Learn from results and edits**. > [!NOTE] > Channel figures may be up to an hour old; the agent can ask for fresh numbers. On the free plan, reading X analytics spends credits. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## How do I fill in my brief? ```text Help me set up my Voholabs Studio brief. ``` What the agent does: 1. Reads the brief (`briefListTool`). If it is empty, checks the guided onboarding (`briefOnboardingStatus`). 2. If the onboarding is available, gives you the link to the Brief page in Studio, where you start it yourself. The agent cannot start it for you, because it is an interview you take part in. It also tells you whether a new run is free or costs credits. 3. If you would rather stay in the chat, it asks you questions and writes each document itself (`briefSaveTool`). To add a brand file: ```text Here's our logo. Upload it and add it to the brief's branding. ``` The agent uploads the file (`uploadMediaTool` or `createUploadLinkTool` for larger files) and registers it in **Branding & assets** (`briefAssetTool`). ## How do I schedule a thread on X? ```text Turn these notes into a five-part X thread and schedule it for tomorrow at 9am. Replies off for everyone except people I follow. ``` What the agent does: 1. Finds your X channel (`integrationList`) and reads X's rules, including the 280-character limit and the reply setting (`integrationSchema`). 2. Writes the thread as one post with four follow-up parts, and sets **Who can reply to this post?** to accounts you follow. 3. Schedules it (`integrationSchedulePostTool`) and reports the cost on the free plan. ## Frequently asked questions ### Do I need to name the tools in my prompt? No. The tool names on this page are there so you can follow what the agent is doing. Ask for the outcome and the agent chooses the tools. ### Will the agent publish without asking me? Only if you ask it to. Saying "as drafts" or "for my review" keeps everything off the live schedule until you approve it in the calendar. ### Why does my agent not use a skill? Skills appear on the free plan after your first wallet top-up. Without them, the prompts still work; the agent just follows its own method. ## Related pages - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) - [Skills library](https://voholabs.com/docs/agents/skills) - [Brief and guided onboarding](https://voholabs.com/docs/getting-started/brief) - [Connect your agent](https://voholabs.com/docs/agents) --- # Skills library > The skills library is a set of ready-made, step-by-step methods your agent finds over MCP and follows for content jobs, such as writing hooks or shaping a post for each channel. It unlocks with your first wallet top-up and is then free to use. Source: https://voholabs.com/docs/agents/skills Last updated: 5 October 2026 A skill is a written method, the kind an experienced social media editor would follow, turned into instructions an agent can act on. Each one also tells the agent which Studio tools to use, so the work ends up on your calendar rather than in a chat window. ## What is the skills library? The skills library is the set of skills Studio gives your agent. You find it under **Skills** in the Studio menu: "Ready-made skills your agent can use. Using them is free." Each skill has: - A one-line summary, and a longer **What it does**. - **When your agent uses it**: the requests and situations it is meant for. - **What it uses in Studio**: the MCP tools it calls. - **The skill**: the full text the agent reads and follows. You can search the library and filter it by tag: **Editing**, **Hooks**, **Writing**, **Channels**, **Learning** and **Planning**. ## How do I unlock it? On the free plan, the skills library opens with your first wallet top-up, of any amount. After that, using skills costs nothing. See [Credits and wallet](https://voholabs.com/docs/billing/credits). The skills library is for the free plan with a top-up. Paid plans do not see it in the menu or over MCP. ## Which skills are there? | Skill | What it does | When your agent uses it | |---|---|---| | **Anti-slop editor** | Strips the words, structures and tone that make a post read as AI-written. | As the last step before a draft is shown or scheduled, or when you say a post sounds generic or salesy. | | **Hooks and first lines** | Writes first lines that state the payoff, so a skimming reader stops and keeps going. | When writing any post, thread, caption or title, or when you ask for a stronger opening. | | **Write in your voice** | Writes posts that sound like you, using your brief and your own past posts. | Whenever it writes on your behalf, or when you say a draft does not sound like you. | | **Shape a post for each channel** | Turns one message into a post that fits the channel it goes to, then schedules it. | When drafting or scheduling for a specific channel, or moving a post from one network to another. | | **One idea, every channel** | Spreads one idea across several channels without posting the same thing twice. | When you have one idea, article or announcement and want it on several channels. | | **Learn from results and edits** | Turns how your posts were edited and how they performed into lessons in your brief. | Weekly, after a batch of posts goes out, or when you ask what is working. | | **Plan a content week** | Plans a week (or any period) of posts as one batch, checks it for repetition, and schedules it as drafts for your review. | When you ask for next week's posts, a month of content or a campaign over several days. | | **Write a search-ready article** | Writes a blog article that AI assistants can quote, answer boxes can lift and search engines can rank, then delivers it to your blog channel. | When you ask for a blog post, guide or "what is" page, or want an article reviewed. | The library grows over time. Studio's **Skills** page always shows the current list. ## How does my agent use a skill? Your agent discovers skills itself, over MCP: 1. At the start of a content task, the agent calls `skillsList`. It gets a short catalogue: each skill's slug, name, summary, when to use it, tags, and whether it uses your brief. 2. It picks the one or two skills whose "when to use" matches your request. 3. It calls `skillGet` with the skill's slug to read the full method. 4. It follows the steps, using the Studio tools the skill names. `skillsList` never returns the methods themselves, so the agent only reads the skills it needs. You can also ask for a skill by name, for example "use the anti-slop editor on this draft". Scripts can read the same library with your API key: `GET /skills` and `GET /skills/{slug}` on the [public API](https://voholabs.com/docs/api#what-can-the-api-do). ## Do skills need my brief? Two skills work on their own: **Anti-slop editor** and **Hooks and first lines**. Studio marks them "Works on its own. No brief needed." The rest read your brief and are marked "Uses your brief. The more of it you fill in, the better it works." When the brief is missing what it needs, **Write in your voice** tells you which section to fill in. The quickest way to fill the brief is the [guided onboarding](https://voholabs.com/docs/getting-started/brief#how-does-the-guided-onboarding-work). ## Frequently asked questions ### Do I have to tell my agent which skill to use? No. Ask for the outcome, such as "plan next week's posts". The agent lists the skills, picks the one that matches and follows it. You can name a skill if you want a particular one. ### Can I read a skill before my agent uses it? Yes. Open Skills in Studio and choose a skill. The drawer shows what it does, when your agent uses it, which Studio tools it calls, and the full text the agent follows. ### Do skills work with ChatGPT and coding agents too? Yes. Skills are served over MCP, so any connected agent can read them. They are also on the public API at /skills. ### Why is Skills locked, or missing from my menu? On the free plan, Skills shows a lock until your first wallet top-up. Paid plans do not have the skills library, so it is not in their menu. ## Related pages - [Brief and guided onboarding](https://voholabs.com/docs/getting-started/brief) - [Agent examples](https://voholabs.com/docs/agents/examples) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) --- # Voholabs Studio public API > The Voholabs Studio public API is a REST API at https://studio.voholabs.com/api/public/v1, described in OpenAPI at /api/public/v1/openapi.json. Send your API key from Settings › Connect Agent in the Authorization header, with no "Bearer" prefix, to manage channels, media, posts, analytics, the brief, skills and your wallet. Source: https://voholabs.com/docs/api Last updated: 5 October 2026 ## How do I authenticate? Every request carries your API key in the `Authorization` header: ```bash curl https://studio.voholabs.com/api/public/v1/is-connected \ -H "Authorization: YOUR_API_KEY" ``` Find the key in **Settings › Connect Agent**, under **API Key**. The same key powers your agent connectors and the [CLI](https://voholabs.com/docs/cli). If you are building a product that posts for other Studio users, use an [OAuth app](https://voholabs.com/docs/api/oauth) instead: its `pos_` tokens go in the same header. A missing or wrong key returns HTTP 401 with "No API Key found", "Invalid API key" or "Invalid OAuth token". ## How do I rotate my API key? In **Settings › Connect Agent**, under **API Key**, choose **Rotate Key**. The old key stops working at once, including for agents you connected with a connector link, so update every integration with the new key. ## What can the API do? All paths are relative to `https://studio.voholabs.com/api/public/v1`. | Area | Endpoint | What it does | |---|---|---| | Account | `GET /is-connected` | Checks that your key works. | | Channels | `GET /integrations` | Lists connected channels. Add `?group=` to list one customer's channels. | | Channels | `GET /groups` | Lists customers, the labels that group channels per client. | | Channels | `GET /integration-settings/:id` | A channel's rules, maximum length and settings schema. | | Channels | `POST /integration-trigger/:id` | Runs a channel helper, such as listing a Discord server's channels. | | Channels | `GET /social/:integration` | Returns the address that starts connecting a new channel. | | Channels | `DELETE /integrations/:id` | Removes a channel. | | Scheduling | `GET /find-slot/:id` | The next free time slot for a channel. | | Posts | `GET /posts` | Posts between `startDate` and `endDate`, optionally for one `customer`. | | Posts | `POST /posts` | Creates, schedules or publishes posts. | | Posts | `PUT /posts/:id/status` | Moves a post between `draft` and `schedule`. | | Posts | `DELETE /posts/:id` | Deletes a post and the rest of its group. | | Posts | `DELETE /posts/group/:group` | Deletes every post in a group. | | Posts | `GET /posts/:id/missing` | Recent content from the network, to match a post Studio lost track of. | | Posts | `PUT /posts/:id/release-id` | Links a post to its published version on the network. | | Media | `POST /upload` | Uploads a file as multipart form data, field `file`. | | Media | `POST /upload-from-url` | Imports a file from a public address. | | Media | `GET /media` | Lists the media library, with `page` and `search`. | | Media | `DELETE /media/:id` | Deletes a file from the library. | | Media | `POST /upload-ticket` | Creates a single-use upload address, valid for 15 minutes, that needs no key. | | Analytics | `GET /analytics/:integration` | A channel's analytics for a `date` range. Add `fresh=true` to read the network again instead of the cache; the `X-Cached-At` header says when the numbers were read. | | Analytics | `GET /analytics/post/:postId` | One post's analytics. | | Notifications | `GET /notifications` | Your workspace's notifications, by `page`. | | Brief | `GET /brief/schema` | The brief's sections and the documents you can write to. | | Brief | `GET /brief` | Every document in the brief. | | Brief | `GET /brief/:category/:key` | One brief document. | | Brief | `PATCH /brief/:category/:key` | Writes one brief document. | | Brief | `DELETE /brief/:category/:key` | Deletes a brief document. Add `keepHistory=true` to keep its revisions. | | Brief | `GET /brief/onboarding` | The guided onboarding's status: whether it is available, open or finished, whether a new run is charged, and the Studio address where you start it. | | Brief | `POST /brief-upload/:token` | Uploads a brand file to the brief, with a ticket from `POST /upload-ticket` and `"purpose": "brief"`. | | Skills | `GET /skills` | The skills library catalogue, with optional `tag` and `search`. Returns summaries, not the methods. | | Skills | `GET /skills/:slug` | One skill in full, with the steps an agent follows. | | Wallet | `GET /wallet` | Your credit balance, pay-as-you-go state, auto top-up settings and whether upcoming scheduled posts are covered. | | Wallet | `GET /wallet/prices` | The price list: what costs credits and what is included free. Add `provider` to see one network. | | Wallet | `GET /wallet/transactions` | Top-ups, charges, refunds and grants, newest first, with `page`, `size` and `type`. | | Wallet | `POST /wallet/estimate` | What a post would cost on a channel before you schedule it. Send `provider` and `contents`, the post and each reply. Nothing is charged. | Uploads accept JPEG, PNG, GIF, WebP, AVIF, BMP and TIFF images up to 10 MB, and MP4 video up to 1 GB. The brief and skills endpoints are open on paid plans, and on the free plan after your first wallet top-up; before that they return HTTP 402. The wallet endpoints are read-only: topping up stays in the app. On a paid plan they answer with `"usesWallet": false`, because paid plans do not use credits. ## Is there an OpenAPI description? Yes. The API is described in OpenAPI 3.1 at: ```text https://studio.voholabs.com/api/public/v1/openapi.json ``` It needs no key. Load it into Postman, Insomnia or a code generator, or give it to an AI agent so it can call the API correctly. It covers every endpoint on this page, with request bodies, responses and error shapes. The per-network `settings` for posts are listed in [Channel settings in the API](https://voholabs.com/docs/api/channel-settings). ## How do I schedule a post? Send `POST /posts` with the channel ID from `GET /integrations`: ```bash curl https://studio.voholabs.com/api/public/v1/posts \ -H "Authorization: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "schedule", "date": "2026-11-02T09:00:00.000Z", "shortLink": false, "tags": [], "posts": [ { "integration": { "id": "YOUR_CHANNEL_ID" }, "value": [{ "content": "Hello from the Voholabs Studio API", "image": [] }], "settings": { "__type": "linkedin" } } ] }' ``` - `type` is `schedule`, `draft`, `now` or `update`. - `date` is an ISO 8601 time, required even for drafts. - `value` holds the parts of the post. Extra entries become follow-up parts, such as a thread or comments. - `image` takes media you uploaded first, as `{ "id": "...", "path": "..." }`. - `settings` holds the channel's own options. `GET /integration-settings/:id` returns the schema for each channel, and [Channel settings in the API](https://voholabs.com/docs/api/channel-settings) lists the fields for every network. A post with no text and no media returns "Your post should have at least one character or one image." Text over the channel's limit returns "post is too long, please fix it". ## Are there rate limits? Creating posts with `POST /posts` is limited per workspace per hour. Over the limit, the API returns HTTP 429; wait and retry. Other endpoints are covered by fair use. ## What happens when an X post needs credits? On the free plan, X posts are charged when they are scheduled. To check the cost first, send the post's text to `POST /wallet/estimate`. If your balance is short and auto top-up cannot cover it, `POST /posts` returns HTTP 402 with `"wallet": true` and a `url` pointing at the wallet in the Studio app. Top up, then retry. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Can Studio call my server when a post is published? Yes, with a webhook. Add one in **Settings › Webhooks** and Studio sends a `POST` with the published post's details to your address each time a post goes out. See [Webhooks](https://voholabs.com/docs/api/webhooks) for the payload. ## Frequently asked questions ### Is the API free? Yes. The public API is part of the free plan. Actions that are pay-per-use in the app, such as posting to X on the free plan, are charged the same way through the API. ### Should I send "Bearer" before my key? Not for the REST API. Send the key on its own, `Authorization: YOUR_API_KEY`. The MCP server is different and expects `Bearer`. ### Is there a quicker way to build the body for POST /posts? Yes. In Settings › Connect Agent, choose Open Wizard, build the post in the normal composer, and copy the JSON payload it generates. ## Related pages - [Webhooks](https://voholabs.com/docs/api/webhooks) - [Channel settings in the API](https://voholabs.com/docs/api/channel-settings) - [OAuth apps](https://voholabs.com/docs/api/oauth) - [The Voholabs CLI](https://voholabs.com/docs/cli) - [The MCP server](https://voholabs.com/docs/agents/mcp) --- # Channel settings in the API > Each channel takes its own settings object in POST /posts, identified by __type. Call GET /integration-settings/:id for a channel's exact schema; this page lists the fields for every network Studio supports. Source: https://voholabs.com/docs/api/channel-settings Last updated: 5 October 2026 Every entry in the `posts` array of `POST /posts` has a `settings` object. Its `__type` names the network, and the other fields are that network's options: privacy, titles, reply rules and so on. The composer in Studio sets the same fields when you post by hand. ## How do settings work? 1. List your channels with `GET /integrations`. Each one has an `id` and an `identifier`, such as `x` or `linkedin-page`. 2. Call `GET /integration-settings/:id` for the channel. It returns the network's rules, maximum length and settings schema. 3. If a field needs an ID that only the network knows, such as a Discord channel, call `POST /integration-trigger/:id` with the helper's `methodName` and any `data` it takes. 4. Put the fields in `settings`, with `__type` set to the channel's identifier, and send `POST /posts`. ```json { "integration": { "id": "YOUR_CHANNEL_ID" }, "value": [{ "content": "Our new release is out.", "image": [] }], "settings": { "__type": "x", "who_can_reply_post": "everyone" } } ``` A field marked required must be present, or a scheduled post is refused with HTTP 400. Drafts are saved without the check. The full request and response shapes are in the OpenAPI description at `https://studio.voholabs.com/api/public/v1/openapi.json`. See [the public API](https://voholabs.com/docs/api) for authentication and the other endpoints. ## X `__type`: `x` | Field | Type | Notes | |---|---|---| | `who_can_reply_post` | string, required | `everyone`, `following`, `mentionedUsers`, `subscribers` or `verified`. | | `community` | string | An X community address, in the form `https://x.com/i/communities/1493446837214187523`. | | `made_with_ai` | boolean | Adds X's "made with AI" label. | | `paid_partnership` | boolean | Adds X's paid partnership label. | On the free plan, X posts are paid from the wallet when they are scheduled. See [X](https://voholabs.com/docs/channels/x). ## LinkedIn and LinkedIn Page `__type`: `linkedin` for a personal profile, `linkedin-page` for a company page. Both take the same fields. | Field | Type | Notes | |---|---|---| | `post_as_images_carousel` | boolean | Posts the attached images as a swipeable carousel document instead of an image post. | | `carousel_name` | string | The carousel document's title. Defaults to `slides`. | ## Instagram `__type`: `instagram` for Instagram (Facebook Business), `instagram-standalone` for Instagram (Standalone). Both take the same fields. | Field | Type | Notes | |---|---|---| | `post_type` | string, required | `post` or `story`. A video posted as `post` goes out as a Reel. | | `collaborators` | array | Accounts to invite as collaborators, as `[{ "label": "username" }]`. Not used on stories. | | `is_trial_reel` | boolean | Shares a Reel as a trial, to non-followers first. | | `graduation_strategy` | string | For trial Reels: `MANUAL` (you decide) or `SS_PERFORMANCE` (Instagram shares it with followers if it performs well). Defaults to `MANUAL`. | | `audio` | object | Music or an original sound for a Reel: `{ "id": "...", "audio_volume": 0-100, "video_volume": 0-100 }`, plus optional `title`, `artist` and `image`. | To find audio, call the `audioSearch` helper on an Instagram (Facebook Business) channel, with `q` for a search term (empty for trending audio) and `type` set to `music` or `original_sound`. ## Facebook Page `__type`: `facebook` | Field | Type | Notes | |---|---|---| | `post_type` | string | `post` (the default) or `story`. A story needs at least one photo or video, and each one is published as its own story. | | `url` | string | A link to attach to the post. | | `text_format_preset_id` | string | A Facebook background for a text-only post. It only applies when the post has no media and is no longer than 130 characters. | ## Threads `__type`: `threads` Threads has no extra settings. Send `{ "__type": "threads" }`. Extra entries in `value` are posted as replies, forming a thread. ## TikTok `__type`: `tiktok` | Field | Type | Notes | |---|---|---| | `content_posting_method` | string, required | `DIRECT_POST` to publish, or `UPLOAD` to send the post to your TikTok inbox to finish in the app. | | `privacy_level` | string | Required for `DIRECT_POST`. `PUBLIC_TO_EVERYONE`, `MUTUAL_FOLLOW_FRIENDS`, `FOLLOWER_OF_CREATOR` or `SELF_ONLY`, limited to what TikTok allows for the account. | | `title` | string | Up to 90 characters. | | `duet` | boolean, required | Allow Duets. | | `stitch` | boolean, required | Allow Stitches. | | `comment` | boolean, required | Allow comments. | | `autoAddMusic` | string, required | `yes` or `no`. | | `brand_organic_toggle` | boolean, required | The post promotes your own brand. | | `brand_content_toggle` | boolean, required | The post is branded content for a third party. Cannot be combined with `SELF_ONLY`. | | `disclose` | boolean | Turns on content disclosure. When `true`, at least one of the two brand toggles must be `true`. | | `video_made_with_ai` | boolean | Labels the video as AI-generated. | The `creatorInfo` helper returns what TikTok allows for the account right now, including its privacy options. See [TikTok](https://voholabs.com/docs/channels/tiktok). ## YouTube `__type`: `youtube` | Field | Type | Notes | |---|---|---| | `title` | string, required | 2 to 100 characters. | | `type` | string, required | `public`, `private` or `unlisted`. | | `selfDeclaredMadeForKids` | string | `yes` or `no`. | | `thumbnail` | object | An image you uploaded first, as `{ "id": "...", "path": "..." }`. | | `tags` | array | `[{ "value": "launch", "label": "launch" }]`. All tags together may use up to 500 characters, and a tag with a space counts two more. | ## Discord `__type`: `discord` | Field | Type | Notes | |---|---|---| | `channel` | string, required | The Discord channel ID. Get the list with the `channels` helper. | | `title` | string | Forum channels only: the thread title, up to 100 characters. Left empty, the first line of the post is used. | ## Sanity `__type`: `sanity` | Field | Type | Notes | |---|---|---| | `documentId` | string, required | The published ID of the Sanity document, without the `drafts.` prefix. | Studio does not copy the article. At the scheduled time it publishes the document's current draft in Sanity. The `documents` helper lists the documents in the connected dataset, and `validateDocument` checks one before you schedule it. See [Sanity](https://voholabs.com/docs/channels/sanity). ## Frequently asked questions ### What happens if a setting is wrong? Studio checks the settings object against the rules for its __type before it accepts a scheduled or immediate post. A missing required field or a value outside the allowed list returns HTTP 400 naming the channel and the problem, and nothing is scheduled. Drafts are saved without this check. ### Where do the IDs for Discord channels or Instagram audio come from? From the channel's helper tools. Call POST /integration-trigger/:id with the helper's methodName, such as channels for Discord or audioSearch for Instagram. ### Is there a machine-readable description of the API? Yes. The OpenAPI 3.1 description is at https://studio.voholabs.com/api/public/v1/openapi.json and needs no key. ## Related pages - [Voholabs Studio public API](https://voholabs.com/docs/api) - [OAuth apps](https://voholabs.com/docs/api/oauth) - [MCP tools reference](https://voholabs.com/docs/agents/mcp-tools) --- # OAuth apps for the Voholabs Studio API > An OAuth app lets your product act for other Studio users without asking for their API keys. Create the app in Settings › Connect Agent › Apps, send users to studio.voholabs.com/oauth/authorize, then exchange the returned code at /api/oauth/token for a pos_ token that works with the API, MCP and CLI. Source: https://voholabs.com/docs/api/oauth Last updated: 5 October 2026 Use an OAuth app when your product needs to post for people who have their own Studio accounts. To automate your own workspace, your [API key](https://voholabs.com/docs/api) is simpler. ## How do I create an OAuth app? 1. In Studio, open **Settings › Connect Agent** and choose the **Apps** tab. 2. Fill in **App Name** (up to 100 characters), an optional **Description** (up to 500) and **Profile Picture**, and the **Redirect URL** your users return to. 3. Create the app. Studio shows your client ID, which starts with `pca_`, and your client secret, which starts with `pcs_`. 4. Copy the client secret straight away. Studio only shows it once. ## How does a user authorise my app? 1. Send the user to the consent page: ```text https://studio.voholabs.com/oauth/authorize?client_id=YOUR_CLIENT_ID&response_type=code&state=RANDOM_STATE ``` `response_type` must be `code`. Use `state` to tie the answer to the user's session. 2. The user signs in to Studio if needed, sees your app's name, description and picture, and approves or denies. 3. Studio sends the user back to your redirect URL. On approval it carries `?code=...&state=...`; on denial `?error=access_denied&state=...`. 4. Exchange the code within 10 minutes, from your server: ```bash curl https://studio.voholabs.com/api/oauth/token \ -H "Content-Type: application/json" \ -d '{ "grant_type": "authorization_code", "code": "THE_CODE", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET" }' ``` 5. Store the `access_token` from the response. It starts with `pos_`. The response also returns the workspace ID as `id`, and `token_type` is `bearer`. > [!WARNING] > Keep the client secret and the user tokens on your server. Never put them in a browser app or a mobile app bundle. ## How do I call the API with a token? Use the token exactly where an API key would go. - **Public API**: send it on its own in the header, `Authorization: pos_...`. See [the public API](https://voholabs.com/docs/api). - **MCP server**: send `Authorization: Bearer pos_...`. See [the MCP server](https://voholabs.com/docs/agents/mcp). - **CLI**: set `VOHOLABS_API_KEY` to the token. See [the CLI](https://voholabs.com/docs/cli). ## How does a user disconnect my app? In **Settings › Approved Apps**, which lists the applications they have authorised. Revoking stops the token immediately, so handle HTTP 401 "Invalid OAuth token" by asking the user to authorise again. ## Frequently asked questions ### Do OAuth tokens expire? No. A `pos_` token stays valid until the user revokes your app in Settings › Approved Apps. There is no refresh token to manage. ### Can I ask for limited permissions? No. The flow has no scopes. A token can do whatever the user's API key can do in the workspace they chose. ### How many OAuth apps can a workspace have? One. Only admins of the workspace can create, edit or delete it. ### I lost my client secret. What now? The secret is only shown when you create or rotate it. Rotate it in Settings › Connect Agent › Apps and update your server with the new one. ## Related pages - [Public API](https://voholabs.com/docs/api) - [Connect your agent](https://voholabs.com/docs/agents) --- # Webhooks > A webhook sends an HTTP POST with the post's details to your address each time a post is published. Add them in Settings › Webhooks, choose all channels or specific ones, and use Send Test to check your endpoint. Source: https://voholabs.com/docs/api/webhooks Last updated: 5 October 2026 Webhooks let another system react when Studio publishes something: post the link in a team chat, log it in a spreadsheet, or start an automation in a tool such as Zapier, Make or n8n. ## What does a webhook send? When a post is published on a channel, Studio sends one `POST` request to each webhook that covers that channel. The body is JSON with the post's text, publish time, live address and channel. Webhooks fire only for published posts. Scheduling, editing, deleting or a failed publish sends nothing. ## How do I add a webhook? 1. In Studio, open **Settings › Webhooks** and choose **Add a webhook**. 2. Enter a **Name** you will recognise. 3. Enter the **URL** that should receive the request. It must be a public HTTPS address; private and internal network addresses are refused. 4. Under **Integrations**, choose **All integrations**, or **Specific integrations** and pick the channels. 5. Choose **Send Test** to check your endpoint, then **Save**. To change or remove a webhook, use **Edit** or **Delete** next to it in the list. ## What does the payload look like? The body is a JSON array. A real delivery holds one object, for the published post: ```json [ { "id": "cm6tcts4f0005qcwit25cis26", "content": "

Our new release is out.

", "publishDate": "2026-11-02T09:00:00.000Z", "releaseURL": "https://www.linkedin.com/feed/update/urn:li:share:7000000000000000000", "state": "PUBLISHED", "integration": { "id": "cm6s4uyou0001i2r47pxix6z1", "name": "Voholabs", "providerIdentifier": "linkedin-page", "picture": "https://example.com/avatar.jpg", "type": "social" } } ] ``` | Field | What it holds | |---|---| | `id` | The post's ID in Studio, the same one the API and MCP tools use. | | `content` | The post's text as Studio stores it, which can include HTML formatting. | | `publishDate` | The post's publish date and time on the calendar, in ISO 8601. | | `releaseURL` | The address of the live post on the network. | | `state` | The post's state, `PUBLISHED` for a delivered post. | | `integration` | The channel: its ID, display name, network (`providerIdentifier`), avatar and type (`social` or `article`). | The request has the header `Content-Type: application/json`. Read the array rather than a single object, so your code also accepts the test payload. ## How do I test it? In the webhook form, choose **Send Test**. Studio sends a sample array with two example posts, one for Instagram and one for Facebook, to the URL in the form. It uses the same shape as a real delivery, so your endpoint should accept both. The test does not report your endpoint's answer. Check your endpoint's own logs, or point the URL at a request inspector while you build. ## Are webhooks retried or signed? No to both: - **No retries.** Studio sends each request once. If your endpoint is down, or answers with an error, the delivery is lost. To catch up, list recent posts with `GET /posts` on the [public API](https://voholabs.com/docs/api). - **No signature.** Requests carry no signing header. Use a long, hard-to-guess URL, and treat the payload as a hint: fetch the post through the API if you need to trust the details. ## Frequently asked questions ### Do webhooks fire for drafts, edits or failed posts? No. The only event is a post being published. A post that fails to publish sends nothing, and you can find failures in your notifications or through the API. ### How many webhooks can I have? The free plan allows 30. The Webhooks tab shows how many you have next to your limit. ### Does a thread send one request or one per reply? One. The request describes the first post in the group, sent once the whole thread or comment chain is out. ## Related pages - [Voholabs Studio public API](https://voholabs.com/docs/api) - [Channel settings in the API](https://voholabs.com/docs/api/channel-settings) - [The Voholabs CLI](https://voholabs.com/docs/cli) - [Settings](https://voholabs.com/docs/workspace/settings) --- # The Voholabs CLI and agent skill > The Voholabs CLI lets you and your agents manage Voholabs Studio from a terminal. Install it with npm install -g github:voholabs/voholabs-studio-cli, sign in with voholabs auth:login or set VOHOLABS_API_KEY, and then create posts, upload media and read analytics with commands such as voholabs posts:create. Source: https://voholabs.com/docs/cli Last updated: 5 October 2026 ## How do I install the CLI? 1. Install it from GitHub with npm (or pnpm): ```bash npm install -g github:voholabs/voholabs-studio-cli ``` 2. Sign in. On your own computer, use your browser: ```bash voholabs auth:login ``` The CLI shows a one-time code and a Studio address. Open it, sign in and approve the code. Credentials are saved in `~/.voholabs/credentials.json`. 3. Give your AI agent the Voholabs skill, so it knows how to use the CLI: ```bash npx skills add voholabs/voholabs-studio-cli ``` Check the sign-in at any time with `voholabs auth:status`, and remove it with `voholabs auth:logout`. ## How do I use the CLI in CI or on a server? Skip the browser sign-in and set your API key as an environment variable instead: ```bash npm install -g github:voholabs/voholabs-studio-cli export VOHOLABS_API_KEY="YOUR_API_KEY" ``` Your key is in **Settings › Connect Agent** in Studio, where the **CLI & AI Skills** card also shows these steps with your key filled in. Keep it in your CI's secret store, never in the repository. If both are present, a browser sign-in takes priority over the key. ## How do I schedule a post? Find the channel ID, then create the post: ```bash voholabs integrations:list voholabs posts:create -c "Launching today" -s "2026-11-02T09:00:00Z" -i "YOUR_CHANNEL_ID" ``` Useful options for `posts:create`: - `-c` the text. Repeat it for follow-up parts such as a thread or comments. - `-m` media for the `-c` part it follows, as comma-separated addresses of files already online. Use `voholabs upload` first for a local file. - `-i` one or more channel IDs, comma-separated. - `-s` the date and time, in ISO 8601. Required. - `-t` `schedule` (the default) or `draft`. - `-d` the delay in minutes between follow-up parts. - `--settings` the channel's own options as JSON, and `-j` to read the whole post from a JSON file. `voholabs integrations:settings YOUR_CHANNEL_ID` shows each channel's limits and the settings it accepts. ## Which commands are there? | Area | Commands | |---|---| | Sign-in | `auth:login`, `auth:status`, `auth:logout` | | Channels | `integrations:list`, `integrations:groups`, `integrations:settings`, `integrations:trigger` | | Posts | `posts:create`, `posts:list`, `posts:status`, `posts:delete`, `posts:missing`, `posts:connect` | | Scheduling | `slots:next` finds the next free slot for a channel | | Media | `upload`, `media:list`, `media:delete` | | Analytics | `analytics:platform`, `analytics:post` | | Brief | `brief:schema`, `brief:list`, `brief:get`, `brief:set`, `brief:delete`, `brief:onboarding` | | Skills | `skills:list`, `skills:get` | | Wallet | `wallet:balance`, `wallet:prices`, `wallet:transactions`, `wallet:estimate` | Run `voholabs --help`, or add `--help` to any command, for its options. If a command on this page is missing, run the install command again to update the CLI. Some options worth knowing: - `analytics:platform YOUR_CHANNEL_ID --fresh` skips the one-hour cache and reads the network again. On the free plan, fresh X reads are charged. - `brief:delete CATEGORY KEY --keep-history` deletes a brief document but keeps its history, with the removal recorded in it. - `brief:onboarding` shows the guided onboarding's status and the Studio link to start it. - `skills:list` takes `--tag` and `--search`; `skills:get SLUG` reads one skill in full. The brief and skills commands need a paid plan or a topped-up wallet. ## How do I check credits from the CLI? The wallet commands are for the free plan, where some actions are paid from your wallet. They only read: topping up stays in Studio. ```bash voholabs wallet:balance voholabs wallet:prices --provider x voholabs wallet:estimate --provider x -c "First post" -c "Reply" voholabs wallet:transactions --type SPEND,REFUND ``` - `wallet:balance` shows your credits, auto top-up and whether scheduled posts are covered. - `wallet:prices` lists what costs credits. Channels not listed are free. - `wallet:estimate` prices a post before you schedule it, one `-c` for the post and one for each reply. Nothing is charged. - `wallet:transactions` lists top-ups, charges and refunds, with `--page`, `--size` and `--type`. If your credits do not cover an X post, `posts:create` fails with the reason and the top-up link. See [Credits and wallet](https://voholabs.com/docs/billing/credits) and the live [prices page](https://studio.voholabs.com/pricing). ## Which environment variables does it read? | Variable | Use | |---|---| | `VOHOLABS_API_KEY` | Your API key, or an OAuth app's `pos_` token. | | `VOHOLABS_API_URL` | The API address. Defaults to `https://studio.voholabs.com/api`; you only change it for testing. | ## Frequently asked questions ### Which one should my agent use, the CLI or MCP? Either works. Chat apps such as Claude and ChatGPT use [MCP](https://voholabs.com/docs/agents/mcp). Agents that run in a terminal, and scripts or CI jobs, often find the CLI simpler, especially with the Voholabs skill installed. ### Can I create a draft without a date? Not yet. `posts:create` needs `-s` with a date even for drafts. Pick any date; a draft never publishes. ### Can I edit a post from the CLI? There is no `posts:update` command yet. Delete the post and create it again, or ask an agent connected over MCP to edit it in place. ### Does deleting a published post remove it from the network? No. `posts:delete` removes the post from Studio only. Delete it on the network as well if you need it gone. ## Related pages - [Public API](https://voholabs.com/docs/api) - [Connect your agent](https://voholabs.com/docs/agents) - [Credits and wallet](https://voholabs.com/docs/billing/credits) - Source: [voholabs/voholabs-studio-cli](https://github.com/voholabs/voholabs-studio-cli) on GitHub --- # Media library and storage > The media library holds every image and video your workspace uploads, from the app, the API or an agent. The free plan includes 2 GB of storage, and after a wallet top-up you can go past it, paying for each extra GB from your wallet. Source: https://voholabs.com/docs/workspace/media Last updated: 5 October 2026 Every file you attach to a post goes into the media library, so you can reuse it in later posts. Open it from **Media** in the menu, or from **Insert Media** in the composer. ## How do I upload media? 1. Choose **Media** in the menu. 2. Choose **Upload** and pick one or more files, or drag them onto the page. 3. The files appear in the library, newest first. In the composer, choose **Insert Media**, then **Upload** in the **Media Library** window, or drop files onto the editor. Use **Search by file name** to find an older file. ## Which files and sizes are accepted? | Type | Formats | Largest file in the app | |---|---|---| | Images | JPEG, PNG, GIF, WebP and other common formats | 30 MB | | Video | MP4 | 1 GB | Uploads through the [public API](https://voholabs.com/docs/api) or an agent accept images up to 10 MB and MP4 video up to 1 GB. Each network has its own limits on top of these, for example Facebook Page photos must be under 4 MB. See the [channels overview](https://voholabs.com/docs/channels#what-does-each-network-accept). ## How much storage do I have? Storage belongs to the workspace and is the total size of the files in its media library. - **Free plan**: 2 GB, with no card needed. - **Free plan after a wallet top-up**: the first 2 GB stay free. Beyond that there is no fixed limit. Each started GB above the free amount is charged once from your wallet, when an upload first needs it. - **Paid plans**: the storage that comes with the plan. The current price per GB is on the live [prices page](https://studio.voholabs.com/pricing), under **Storage**. ## What happens when storage is full? On the free plan without a top-up, an upload that would go over 2 GB is refused with: "Your media library is full. Delete files you no longer need, or upgrade for more storage." To make room, either: 1. Delete files you no longer need, or 2. [Top up your wallet](https://voholabs.com/docs/billing/credits#how-do-i-top-up), so uploads past 2 GB are paid per GB. After a top-up, an upload that needs a new GB is paid for before the file is stored. If your balance cannot cover it and auto top-up cannot refill it, the upload is refused with "Not enough credits to store this file. Top up to upload it." and nothing is charged. ## How do I delete media? 1. Choose **Media** in the menu. 2. Hover the file and click the delete mark in its corner. 3. Confirm when Studio asks. Agents can delete media with the `deleteMediaTool`. ## Frequently asked questions ### Does deleting files give me credits back? No. Deleting frees space, but a GB you have paid for stays paid for. New uploads fill that space again before another GB is charged. ### Is storage shared by my team? Yes. Storage belongs to the workspace, so every member's uploads count towards the same total. ### What happens to my files if a paid plan ends? The workspace returns to the free plan and its 2 GB limit. Files above it stay, but you cannot upload more until you are under the limit or have topped up your wallet. ### Can my agent upload files? Yes. Agents upload through the MCP tools, from a file, a link or a public URL, into the same library. In Claude you need to allow Studio's file domains first. See [Connect Claude](https://voholabs.com/docs/agents/claude). ## Related pages - [Create a post](https://voholabs.com/docs/posts/create) - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [Plans and billing](https://voholabs.com/docs/billing) - [Troubleshooting](https://voholabs.com/docs/help/troubleshooting) --- # Analytics > The Analytics page shows how each channel is doing over the last 7, 30 or 90 days, and every published post has its own statistics. X, Instagram, Facebook Pages, LinkedIn Pages, Threads, TikTok and YouTube report analytics; LinkedIn profiles, Discord and Sanity do not. Source: https://voholabs.com/docs/workspace/analytics Last updated: 5 October 2026 Analytics come from each network. Studio reads them for you and shows them as charts, so the numbers and their names differ from network to network. ## Which channels report analytics? | Channel | Channel analytics | Post statistics | |---|---|---| | X | Yes | Yes | | Instagram (both connections) | Yes | Yes | | Facebook Page | Yes | Yes | | LinkedIn Page | Yes | Yes | | Threads | Yes | Yes | | TikTok | Yes | Yes | | YouTube | Yes | Yes | | LinkedIn (profile) | No | No | | Discord | No | No | | Sanity | No | No | ## What metrics does each network report? | Network | Channel metrics | Post metrics | |---|---|---| | X | Impressions, bookmarks, likes, quotes, replies, retweets | Impressions, Likes, Retweets, Replies, Quotes, Bookmarks | | Instagram | Followers, reach, views, likes, comments, shares, saves, replies | Views, Reach, Saves, Likes, Comments, Shares | | Facebook Page | Page Impressions, Posts Engagement, Page followers, Media views | Impressions, Clicks, Clicks by Type, Reactions | | LinkedIn Page | Page Views, Clicks, Shares, Engagement, Comments, Organic and Paid Followers | Impressions, Unique Impressions, Clicks, Likes, Comments, Shares, Engagement | | Threads | Views, likes, replies, reposts, quotes | Views, likes, replies, reposts, quotes | | TikTok | Followers, following, likes, videos, views, recent likes, comments and shares | Views, Likes, Comments, Shares | | YouTube | Minutes watched, average view duration and percentage, subscribers gained and lost, likes | Views, Likes, Comments, Favorites | Networks change what they report from time to time, so a chart can appear or disappear. ## How do I see a channel's analytics? 1. Choose **Analytics** in the menu. 2. Pick the channel on the left. 3. Pick **7 Days**, **30 Days** or **90 Days**. Each card shows a total for the period, a chart and, where the network gives one, the change against the previous period. ## How do I see one post's statistics? 1. In the **Calendar**, hover a published post. 2. Choose **Post Statistics**. 3. Pick **7 Days**, **30 Days** or **90 Days** under **Post Analytics**. If Studio could not match a TikTok post to the video on TikTok, the window asks you to **Select the content that matches this post:**. Pick it and choose **Connect Post**, and the statistics load. ## How fresh are the numbers? Studio keeps a channel's numbers for up to an hour after reading them, so opening the page again within the hour is instant. On the free plan, the top of each channel's analytics says when the numbers were read, for example **Updated just now**, with a **Refresh** button that reads them from the network again straight away. ## Why does loading X analytics need credits? X charges for every read of its API. On the free plan Studio passes that cost on: after your first top-up, reading X analytics is charged in reads for each post X returns, listed as "X post read" on the [prices page](https://studio.voholabs.com/pricing). - A post is charged at most once a day, whichever period or refresh reads it first. - Opening the page again within the hour uses the stored numbers and costs nothing. - On X channels, the **Refresh** button carries a coins icon, its tooltip explains the charge, and a line shows what analytics reads have cost over the last 30 days. - Your balance must be above zero to load X analytics, unless auto top-up can refill it. Otherwise you see "Not enough credits to load analytics for this channel." with **Top up** and **See prices**. - The reads that do happen are charged even if they take the balance below zero. Other networks' analytics are free. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Frequently asked questions ### Why is a channel missing from the Analytics page? Only channels whose network reports analytics are listed. LinkedIn profiles, Discord and Sanity never appear. ### Why does a channel say it needs to be refreshed? Studio could not read its numbers, usually because the network's access has expired. Choose Refresh Channel and approve Studio again. ### Do paid plans pay for X analytics? No. Paid plans include X, and reading its analytics never costs credits. ### Can my agent read analytics? Yes. Connected agents use the channelAnalyticsTool and postAnalyticsTool, and on the free plan the same X rules apply. See [MCP tools](https://voholabs.com/docs/agents/mcp-tools#which-tools-read-analytics). ## Related pages - [The calendar](https://voholabs.com/docs/posts/calendar) - [Post to X](https://voholabs.com/docs/channels/x) - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [Channels overview](https://voholabs.com/docs/channels) --- # Team members and roles > Every plan can add team members. Invite colleagues in Settings › Teams as a User or an Admin; admins can also manage the team, see the API key, top up the wallet and manage OAuth apps. Source: https://voholabs.com/docs/workspace/teams Last updated: 5 October 2026 A workspace can have as many members as you need. Everyone works on the same channels and calendar; the role decides who can manage the workspace itself. ## How do I invite someone? 1. Go to **Settings › Teams**. The section is called **Team Members**. 2. Choose **Add another member**. 3. Enter their email and pick a **Role**: **User** or **Admin**. 4. Leave **Send invitation via email?** ticked to email them the link, then choose **Send Invitation Link**. Untick it to choose **Copy Link** and send the link yourself. 5. They open the link, sign in or sign up, and join your workspace. ## What can each role do? | | User | Admin | Super Admin | |---|---|---|---| | Write, schedule and delete posts | Yes | Yes | Yes | | Connect and manage channels | Yes | Yes | Yes | | See the API key and connector link | No | Yes | Yes | | Rotate the API key | No | Yes | Yes | | Invite and remove members | No | Yes | Yes | | Top up the wallet (free plan) | No | Yes | Yes | | Create and manage the OAuth app | No | Yes | Yes | The person who created the workspace is its **Super Admin**. You can invite people as **User** or **Admin** only. ## How do I remove someone? 1. Go to **Settings › Teams**. 2. Choose **Remove** next to the person and confirm. You can only remove someone whose role is below yours. An Admin can remove Users, and only the Super Admin can remove an Admin. ## Can a team member use their own agent? Yes, but the connection belongs to the workspace, not the person. Studio has one API key per workspace, so every agent connected with it acts for the whole workspace. Members with the **User** role cannot see the key or the connector link. An Admin connects the agent, or connects it for them. Treat the link like a password: anyone who has it can post to every channel. If it is shared further than it should be, an Admin can rotate the key in **Settings › Connect Agent**, which disconnects every agent using it. See [Connect your agent](https://voholabs.com/docs/agents). ## Frequently asked questions ### Is there a limit on team members? The free plan includes team members and sets no limit on how many. ### How long does an invitation link last? Two days. After that, send a new one. ### Can someone be in more than one workspace? Yes. They switch between workspaces with Select Organization in the top bar. ### Do team members share channels and posts? Yes. Everyone in the workspace sees and can post to the same channels, calendar, media library and settings. ## Related pages - [Settings](https://voholabs.com/docs/workspace/settings) - [Connect your agent](https://voholabs.com/docs/agents) - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [OAuth apps](https://voholabs.com/docs/api/oauth) --- # Settings > Settings has a tab for each part of your workspace: Global Settings, Teams, Webhooks, Sets, Signatures, Connect Agent and Approved Apps. Some tabs only appear on certain plans, and some actions inside them need the Admin role. Source: https://voholabs.com/docs/workspace/settings Last updated: 5 October 2026 Open **Settings** at the bottom of the menu. The tabs are on the left, and the sign-out button is under them. ## Which tabs are there? | Tab | What it holds | |---|---| | **Global Settings** | **Date Metrics** (an AM:PM or 24-hour clock, saved in this browser) and **Email Notifications**: **Success Emails**, **Failure Emails** and **Streak Reminder Emails**. All three are off until you turn them on. | | **Teams** | Invite and remove members. See [Team members and roles](https://voholabs.com/docs/workspace/teams). | | **Webhooks** | Send an HTTP request to your own URL each time a post is published. The free plan allows up to 30. See [Webhooks](https://voholabs.com/docs/api/webhooks). | | **Sets** | Saved starting points for new posts. See [Sets and signatures](https://voholabs.com/docs/posts/sets-and-signatures). | | **Signatures** | Reusable sign-offs, one of which can be added automatically. See [Sets and signatures](https://voholabs.com/docs/posts/sets-and-signatures). | | **Connect Agent** | Your connector link, API key and agent setup steps under **Connect**, and your OAuth app under **Apps**. See [Connect your agent](https://voholabs.com/docs/agents) and [OAuth apps](https://voholabs.com/docs/api/oauth). | | **Approved Apps** | Apps you have allowed to act on your account, with a way to revoke each one. | ## Why is a tab missing? - **Auto Post** and **Usage** only appear on paid plans. They cover features that are not part of the free plan. - Some tabs open for everyone but need the Admin role to change: members with the User role cannot manage the team, see or rotate the API key, or manage the OAuth app. See [What can each role do?](https://voholabs.com/docs/workspace/teams#what-can-each-role-do) ## What are Approved Apps? When another product asks to act on your Studio account through an [OAuth app](https://voholabs.com/docs/api/oauth) and you approve it, the product is listed under **Approved Apps**. The tab reads "Applications you have authorized to access your Voholabs account." Choose **Revoke** next to an app to cut off its access. ## Where are billing and prices? Not in Settings. On the free plan, the wallet chip in the top bar opens your balance with **View billing** and **View prices**. Paid plans come with Apex and have no wallet. See [Plans and billing](https://voholabs.com/docs/billing). ## Frequently asked questions ### Where do I change my password? Sign out, choose Forgot password on the sign-in page and follow the email. Accounts that sign in with Google use their Google password. ### Where do I see my plan and credits? On the free plan, open the wallet chip in the top bar and choose View billing. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ### Where do I sign out? At the bottom of the tab list in Settings. ## Related pages - [Team members and roles](https://voholabs.com/docs/workspace/teams) - [Connect your agent](https://voholabs.com/docs/agents) - [Sets and signatures](https://voholabs.com/docs/posts/sets-and-signatures) - [Plans and billing](https://voholabs.com/docs/billing) - [Webhooks](https://voholabs.com/docs/api/webhooks) --- # Plans and billing > Voholabs Studio has a free plan with no card and no trial, which includes unlimited channels and scheduled posts, team members, webhooks, the public API, MCP and 2 GB of media storage. A few features are pay-per-use from a prepaid wallet, and paid plans come with Apex, the managed content agent from Voholabs. Source: https://voholabs.com/docs/billing Last updated: 5 October 2026 ## What does the free plan include? - Unlimited channels and unlimited scheduled posts. - The calendar, previews and comments. - Team members, with User and Admin roles. - Up to 30 webhooks. - The public API, the MCP server for AI agents, and the CLI. - 2 GB of media storage. - Sets and signatures. No card is needed, and there is no trial that ends. ## What is pay-per-use? On the free plan, these are paid in credits from your wallet: - **X**: posting, connecting an account and reading analytics, because X charges for its API. - **Storage above 2 GB**. - **Brief onboarding** after your first, free, run. Your first top-up also unlocks the brief and the skills library, which are then free to use. See [Credits and wallet](https://voholabs.com/docs/billing/credits) for how charging, auto top-up, refunds and expiry work. ## What is not on the free plan? AI writing and AI image and video generation, Auto Post from RSS feeds, and the in-app agent are part of Apex, the managed content agent sold on [voholabs.com](https://voholabs.com/). Paid plans also include X with no credits. ## Where are the current prices? On the live [prices page](https://studio.voholabs.com/pricing). Signed-in users also find them in Studio under **View prices** in the wallet chip. ## Frequently asked questions ### Is there a free trial? There is no trial, because there is nothing to run out. The free plan has no time limit. ### Where are the prices? On the live [prices page](https://studio.voholabs.com/pricing). The docs never quote prices, so the prices page is always the one to trust. ### What happens to my account if a paid plan ends? The workspace returns to the free plan and its 2 GB storage allowance. X then works as pay-per-use from the wallet. ### What support comes with the free plan? Studio's free plan is community hosted, with no service level or support commitment. Use Support in the app to reach the community, or write to hello@voholabs.com. ## Related pages - [Credits and wallet](https://voholabs.com/docs/billing/credits) - [Post to X](https://voholabs.com/docs/channels/x) - [Studio terms](https://studio.voholabs.com/terms) --- # Credits and wallet > On the free plan, a few pay-per-use features are paid from a prepaid wallet of credits: posting to X and X plugs, media storage above the free amount, and repeat runs of the guided brief onboarding. You top up by card, credits are spent as you use those features, and everything else in Studio stays free. Source: https://voholabs.com/docs/billing/credits Last updated: 5 October 2026 ## Who has a wallet? Every workspace on the free plan. The wallet chip in the top bar shows your balance; open it for recent transactions, **View billing** and **View prices**. Paid plans have no wallet: everything they include is already paid for. ## What do credits pay for? | Feature | How it is charged | |---|---| | X | Per post when it is scheduled, per account lookup when you connect, and per read when you load X analytics. See [X](https://voholabs.com/docs/channels/x). | | X plugs and reposts | Per action when a plug runs: a post read for each likes check (once per post per day), an X post for each follow-up, and a repost for each repost. See [Plugs](https://voholabs.com/docs/posts/plugs). | | Media storage | The first 2 GB are free. Each further GB is charged once, when an upload starts using it. Deleting files frees space but gives no credits back. | | Brief onboarding | Your first guided onboarding is free. Later runs cost credits, refunded if the onboarding is not finished. | | Skills library | Free to use. It unlocks with your first top-up. | Everything else is free: every other channel, LinkedIn Page and Threads plugs, scheduling, the calendar, team members, webhooks, the public API, MCP and the CLI. The current price of each item is on the live [prices page](https://studio.voholabs.com/pricing). ## How do I top up? 1. Choose **Top up** in the wallet chip, on the **Billing** page or on the **Prices** page. A locked feature, such as X, also opens it. 2. Pick or enter an **Amount**. Top-ups are whole amounts, without cents, above the minimum shown in the dialog. The dialog shows how many credits you get. 3. Optionally tick **Save card and enable auto top-up**. 4. Choose **Continue to checkout** and pay with Stripe. Credits arrive as soon as the payment clears. Only an admin of the workspace can top up. Your first top-up also unlocks X, the brief and the skills library. ## How do auto top-up and the monthly spending limit work? Auto top-up keeps pay-per-use features running when your balance runs low. On the **Billing** page, in the **Auto top-up** card, set: - **When balance falls below** a number of credits, **add** an amount, charged to your saved card. - **Monthly spending limit**: the most auto top-up may charge in a month. When auto top-up reaches the limit, it pauses until you top up by hand, and the card shows when the limit resets. Auto top-up is available after your first top-up and needs a saved card, which you can change from the same card. ## What happens when my balance runs low? - **Scheduling**: a charge that your balance cannot cover is refused, unless auto top-up can cover it. Save the post as a draft, or top up. - **A post that is due**: if an X post comes due and the balance cannot cover it, it is not published and not retried. Top up and reschedule it. - **A plug that runs**: if an X plug cannot be paid for, it does not call X, stops for that post and sends one notification. It is not retried for that post. - **Warning ahead of time**: Studio tells you when posts scheduled in the next 48 hours need more credits than you have. - **Below zero**: storage and X analytics can take the balance below zero. Top up to cover it before using paid features again. ## Where do I see what I have spent? On the **Billing** page. The **Usage** tab shows what you spent, the number of paid actions, a daily chart and a breakdown by action. The **Transactions** tab lists every top-up, charge and refund, with receipts for top-ups. ## What do the Studio terms say about credits? Credits are prepaid and not refunded, except where the law requires it. They have no cash value, cannot be transferred and can only be used in Studio by the workspace that bought them. A balance expires after 12 months with no top-up and no spending. Prices can change, and a change only applies to use after it. The full wording is in section 4 of the [Studio terms](https://studio.voholabs.com/terms). ## Frequently asked questions ### How much is a credit worth? The rate is shown in your wallet and on the [prices page](https://studio.voholabs.com/pricing), next to every top-up amount. Prices for channels follow the network's own price and update automatically. ### Do credits expire? Under the Studio terms, a balance expires after 12 months with no top-up and no spending. Any top-up or any paid use resets that. ### Can I get a refund for unused credits? No. Credits are prepaid and are not refunded, except where the law requires it. Charges for X posts that never went out are given back to your wallet automatically. ### Can I move credits to another workspace? No. Credits have no cash value and can only be used by the workspace that bought them. ### Why is my wallet on hold? A card payment for a top-up was refunded or disputed, so the credits it bought were removed and the wallet was paused. Write to hello@voholabs.com to restore it. ### I am on a paid plan. Do I need credits? No. Paid plans include X and never see the wallet, its prices or its locks. ## Related pages - [Plans and billing](https://voholabs.com/docs/billing) - [Post to X](https://voholabs.com/docs/channels/x) - [Plugs](https://voholabs.com/docs/posts/plugs) - [Prices](https://studio.voholabs.com/pricing) --- # Voholabs Studio FAQ > Voholabs Studio is a free, hosted social media scheduler with a public API and an MCP server for AI agents. The questions below cover what is free, how X and credits work, connecting agents, and what to do when something goes wrong. Source: https://voholabs.com/docs/help/faq Last updated: 5 October 2026 These are the questions people ask most. Each section of the docs has its own questions at the bottom of its pages too. ## Where can I find more detail? - Setting up: [Getting started](https://voholabs.com/docs/getting-started) and [How Voholabs Studio works](https://voholabs.com/docs/getting-started/concepts) - Posting: [Create a post](https://voholabs.com/docs/posts/create), [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling), [The calendar](https://voholabs.com/docs/posts/calendar) and [Review and share posts](https://voholabs.com/docs/posts/approvals) - Networks: [Channels overview](https://voholabs.com/docs/channels) and [Manage your channels](https://voholabs.com/docs/channels/manage) - Workspace: [Media library and storage](https://voholabs.com/docs/workspace/media), [Analytics](https://voholabs.com/docs/workspace/analytics), [Team members and roles](https://voholabs.com/docs/workspace/teams) and [Settings](https://voholabs.com/docs/workspace/settings) - Agents: [Connect your agent](https://voholabs.com/docs/agents), [MCP tools](https://voholabs.com/docs/agents/mcp-tools), [Brief and guided onboarding](https://voholabs.com/docs/getting-started/brief) and [Skills library](https://voholabs.com/docs/agents/skills) - Developers: [Public API](https://voholabs.com/docs/api), [Channel settings in the API](https://voholabs.com/docs/api/channel-settings), [OAuth apps](https://voholabs.com/docs/api/oauth) and [CLI](https://voholabs.com/docs/cli) - Money: [Plans and billing](https://voholabs.com/docs/billing) and [Credits and wallet](https://voholabs.com/docs/billing/credits) - Problems: [Troubleshooting](https://voholabs.com/docs/help/troubleshooting) ## Frequently asked questions ### What is Voholabs Studio? A hosted social media scheduler. You connect your accounts, write or import posts, and Studio publishes them on schedule. You can use the app yourself or let an AI agent such as Claude or ChatGPT do it through Studio's MCP server. ### Is Voholabs Studio really free? Yes. The free plan has no card, no trial and no limit on channels or scheduled posts, and includes team members, webhooks, the API, MCP and 2 GB of storage. A few features are pay-per-use. See [Plans and billing](https://voholabs.com/docs/billing). ### Is Studio open source? Yes. Studio's code is public at [github.com/voholabs/voholabs-studio](https://github.com/voholabs/voholabs-studio). These docs describe the hosted service at studio.voholabs.com. ### Which networks can I post to? X, LinkedIn profiles and pages, Instagram, Facebook Pages, Threads, TikTok, YouTube, Discord and Sanity. See the [channels overview](https://voholabs.com/docs/channels). ### Why does X cost credits when other channels are free? X charges for every post sent through its API. On the free plan Studio passes that cost on, per post, from your wallet. See [Post to X](https://voholabs.com/docs/channels/x). ### Where can I see prices? On the live [prices page](https://studio.voholabs.com/pricing). These docs never quote prices. ### Can I get my credits refunded? No. Credits are prepaid and not refunded except where the law requires it. Charges for X posts that never went out go back to your wallet automatically. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ### Which AI agents work with Studio? Any MCP client. There are step-by-step guides for [Claude](https://voholabs.com/docs/agents/claude), [ChatGPT](https://voholabs.com/docs/agents/chatgpt) and [Claude Code, Cursor, Codex and other developer tools](https://voholabs.com/docs/agents/developer-tools). ### Claude cannot upload my images. How do I fix it? Add the domains shown in step 4 of the Claude tab in Settings › Connect Agent to Claude's Settings › Capabilities › Domain allowlist. Claude's sandbox blocks hosts that are not on that list. See [Connect Claude](https://voholabs.com/docs/agents/claude). ### Does Studio need my social media passwords? No. Each network asks you to approve Studio on its own sign-in page, and Studio receives access from the network, never your password. Sanity is connected with an API token you create. ### My connector link or API key leaked. What do I do? Rotate the key straight away in Settings › Connect Agent. The old key stops working everywhere, then reconnect your agents and integrations with the new one. See [How do I rotate my API key?](https://voholabs.com/docs/api#how-do-i-rotate-my-api-key) ### A post failed. How do I find out why? The network's error message tells you most of the time. If you have an agent connected, ask it to list your recent posts: the list includes each post's error. [Troubleshooting](https://voholabs.com/docs/help/troubleshooting#why-did-my-post-fail-to-publish) lists the common reasons. ### A channel says it needs reconnecting. Why? Networks expire or revoke access from time to time, for example when you change your password. Choose Reconnect channel from the channel's menu in the calendar and approve Studio again. See [Manage your channels](https://voholabs.com/docs/channels/manage#how-do-i-reconnect-a-channel). ### Can I add my team? Yes, on every plan. Invite colleagues in Settings › Teams as a User or an Admin. Only admins can see the API key, top up the wallet, manage OAuth apps and manage the team. See [Team members and roles](https://voholabs.com/docs/workspace/teams). ### How do I delete my account? Email hello@voholabs.com from the address on your account with the subject "Delete my account". We confirm within one month and remove the account, its posts, media and connected channels within 30 days of confirming. To remove one channel only, choose Delete from its menu in the calendar; see [Manage your channels](https://voholabs.com/docs/channels/manage#how-do-i-disable-or-delete-a-channel). The [Studio privacy policy](https://studio.voholabs.com/privacy) has the details. ### How do I get help? Choose Support in the app to reach the Studio community, or write to hello@voholabs.com. The free plan is community hosted, with no support commitment. [Troubleshooting](https://voholabs.com/docs/help/troubleshooting) covers the common problems. --- # Troubleshooting > Most problems come from the network refusing a post, a channel's access expiring, a file that is too large, or an agent that cannot reach Studio. This page lists the symptoms and the fix for each. Source: https://voholabs.com/docs/help/troubleshooting Last updated: 5 October 2026 Start with the message Studio shows you. Most messages come straight from the network and name the problem. ## Why did my post fail to publish? A failed post has a red outline and an exclamation mark in the calendar. Hover the mark to read the reason, then match it here: | Reason | What to do | |---|---| | A message from the network, for example about duplicate content or a video that is too long | Open the post, change what the network objects to, and choose **Update**. The channel pages list the common messages, for example [X](https://voholabs.com/docs/channels/x#what-do-xs-error-messages-mean). | | Refresh channel needed | The channel's access expired. Reconnect it (see below), then reschedule the post. | | Channel disabled | Choose **Enable Channel** in the channel's menu, then reschedule. | | This post links to a post that hasn't published yet | A `(post:)` reference points to a post that did not go out within an hour. Publish that post first, or remove the reference. | | This post links to a post that will never publish | The referenced post was deleted or failed. Remove the reference. | | Not published: there weren't enough credits when it was due. | On the free plan, the wallet could not pay for an X post. [Top up](https://voholabs.com/docs/billing/credits#how-do-i-top-up), then reschedule it. | ## Why does a channel need reconnecting? Networks end Studio's access from time to time, for example when you change your password, remove the app in the network's settings or the access simply expires. The channel's avatar then shows a warning and "Channel disconnected, click to reconnect." 1. In the calendar, open the channel's menu. 2. Choose **Reconnect channel**. 3. Sign in to the network as the same account and approve Studio again. 4. Reschedule any posts that failed while it was disconnected. ## Why does connecting a channel fail? - **You are signed in to the wrong account.** Networks such as X use whichever account your browser is signed in to. Sign out on the network first, or switch account there. - **No page or account to pick.** LinkedIn Pages, Facebook Pages and Instagram (Facebook Business) need you to be an admin of the page. Instagram (Facebook Business) also needs an Instagram Business account linked to a Facebook Page; use Instagram (Standalone) if you have none. See the [channels overview](https://voholabs.com/docs/channels#what-is-the-difference-between-the-two-instagram-connections). - **X opens the top-up.** On the free plan, X is locked until your first wallet top-up. See [Post to X](https://voholabs.com/docs/channels/x). - **A network is greyed out.** Networks marked **Coming soon** cannot be connected yet. - **Sanity refuses the token.** The token needs the Editor role. See [Sanity](https://voholabs.com/docs/channels/sanity). ## Why does an upload fail? | Message | What to do | |---|---| | Image file is too large. Maximum size allowed is 30MB. | Resize or compress the image. | | Video file is too large. Maximum size allowed is 1GB. | Shorten or compress the video. | | File type "..." is not allowed | Use JPEG, PNG, GIF or WebP for images and MP4 for video. | | Your media library is full. Delete files you no longer need, or upgrade for more storage. | The free plan's 2 GB is used up. Delete files, or top up your wallet to go past it. | | Not enough credits to store this file. Top up to upload it. | After a top-up, a new GB of storage is paid from your wallet, and your balance cannot cover it. Top up. | Through the API or an agent, images are limited to 10 MB. See [Media library and storage](https://voholabs.com/docs/workspace/media). ## Why can my agent not connect? - **The link or key is old.** Rotating the API key disconnects every agent that used the old one. Copy the new link from **Settings › Connect Agent** and add the connector again. - **The key is missing or wrong.** Coding agents need the header `Authorization: Bearer `; the server answers "Invalid API Key or OAuth token" otherwise. See [Developer tools](https://voholabs.com/docs/agents/developer-tools). - **ChatGPT has no option to add a server.** Developer mode is needed, it is on the web only, and on work plans an admin may have to allow it. See [Connect ChatGPT](https://voholabs.com/docs/agents/chatgpt). - **"Too many requests, slow down and try again in a minute."** The agent hit the rate limit. Wait a minute. See [What are the rate limits?](https://voholabs.com/docs/agents/mcp#what-are-the-rate-limits) - **You cannot see the connector link.** Only Admins can. See [Team members and roles](https://voholabs.com/docs/workspace/teams#can-a-team-member-use-their-own-agent). ## Why can my agent not upload or open files? In Claude, the sandbox only lets the agent reach domains you allow. Add the domains listed in step 4 of the Claude tab in **Settings › Connect Agent** to **Settings › Capabilities › Domain allowlist** in Claude, then try again. See [Connect Claude](https://voholabs.com/docs/agents/claude). ChatGPT and coding agents need no allowlist. If they still fail, check the file against the upload limits above. ## Why is my wallet on hold? A card payment for a top-up was refunded or disputed, so the credits it bought were removed and the wallet was paused. Studio shows "This wallet is on hold. Contact support to restore it." Write to hello@voholabs.com from the address on your account to sort it out. See [Credits and wallet](https://voholabs.com/docs/billing/credits). ## Why can I not sign in? - **"Your account is not activated yet."** Email sign-ups need to click the link in the activation email first. Choose **Resend Activation Email** if it did not arrive, and check your spam folder. - **Forgotten password.** Choose **Forgot password** on the sign-in page and follow the link in the email. Reset links expire, so use it soon. - **Signed up with Google.** Use **Continue With** Google rather than a password. - **An invitation link does not work.** Invitation links last two days. Ask an admin of the workspace to send a new one. ## Frequently asked questions ### Where do I see why a post failed? Hover the red exclamation mark on the post in the calendar. The bell in the top bar also lists failed posts, and an agent can read each post's error with the postsList tool. ### Will Studio retry a failed post by itself? Studio retries a few times when the network has a passing problem. Once a post is marked as failed, it stays failed until you fix it and schedule it again. ### How do I get help if this page does not cover my problem? Choose Support in the app to reach the Studio community, or write to hello@voholabs.com with the channel, the time of the post and the message you saw. ## Related pages - [Frequently asked questions](https://voholabs.com/docs/help/faq) - [Schedule and publish posts](https://voholabs.com/docs/posts/scheduling) - [Connect your agent](https://voholabs.com/docs/agents) - [Credits and wallet](https://voholabs.com/docs/billing/credits)