What changed in Spaces, newest first. Nothing here breaks a working setup. Agents can read the same list at GET https://api.spacesos.com/v1/changelog, no key needed.
ImprovedUsage and billing
Usage export keeps disconnected accounts
The usage export now has rows for accounts that were disconnected or deleted during the range, so totals match what was sent. An account that is gone shows as channel unknown, named Disconnected account. No message text is included.
NewPosting
Mention people in LinkedIn posts by their profile link
create_post and scheduled LinkedIn posts now turn @ and a profile link, or @[Name](link), into real mentions, the same way comments do. Company pages use @[Name](https://www.linkedin.com/company/12345).
NewPosting
Post analytics across accounts
GET /v1/messaging/analytics/posts and the get_post_analytics tool add up your LinkedIn and Instagram posts over up to 90 days: totals, a daily series, the five best posts and the change against the previous period.
NewTeam
Hand over workspace ownership
The owner can make another member the owner from Team members in the dashboard, or with POST /v1/workspace/owner and member_id. The previous owner becomes an admin, and the change is kept in the audit log.
ImprovedPosting
Images are fitted to each platform before publishing
Instagram images are padded, never cropped, to between 4:5 and 1.91:1, at most 1440 px wide and 8 MB, and stories to 9:16; LinkedIn images over 6012 px are scaled down. Scheduled posts get the same treatment, and the answer lists every change in media_adjustments.
ImprovedAccounts
Last inbound message in account health
Account health and the accounts list now show last_inbound_at, when a customer last wrote to the account, so you can tell a quiet account from one that stopped receiving.
ImprovedApprovals
Held items show awaiting approval
A scheduled message, scheduled post or routine run held for approval now shows status awaiting_approval with its approval_id, instead of sent or done. It becomes sent (a post: published, a run: done) when approved, or rejected. An approved scheduled post gets its first comment once it is published.
NewAccounts
Your own ids on accounts
PATCH /v1/messaging/accounts/{id} with external_id, or the set_account_external_id tool, tags an account with your own id, such as the client it belongs to. Find it again with ?external_id= on the accounts list.
NewComments
Mention people in LinkedIn comments by their profile link
Write @ and a LinkedIn profile link in a comment, or @[Name](link) to choose the name shown, and Spaces turns it into a real mention. Company pages use @[Name](https://www.linkedin.com/company/12345).
NewConversations
Hand a chat to a person, and the agent stays out of it
PUT /v1/messaging/accounts/{account_id}/chats/{chat_id}/handover (hand_to_person) hands a chat to a person on your team, and DELETE on the same path (hand_back_to_agent) hands it back. Until then every agent reply, chat action, scheduled message, routine and approval for that chat is refused with HANDED_OVER; the person it was handed to can still reply with their own key. The chat list shows handed_over and handed_to and filters on handed_over, and webhooks get chat.handed_over and chat.handed_back.
NewMessages
Tags and owners on chats (early access)
Tag a chat and give it an owner from your workspace with GET and PUT /v1/messaging/accounts/{id}/chats/{chat_id}/tags and PUT .../owner, or the get_chat_tags, set_chat_tags and set_chat_owner tools. The chat list shows tags and owner and filters by tag, owner, unread and unanswered. Only the labels and ids are stored, never message text.
NewComments
Comment-to-DM routines (early access)
A comment routine can send the commenter a private message where the platform allows it (Instagram today) with the private_reply action. Keywords match whole words by default, or anywhere with match: contains. Replies rotate per comment from a list you give. One routine messages each person once, unless repeat_for_new_comments is true. Every message uses the usual account limits.
NewAPI
Export usage by day
GET /v1/messaging/usage/export returns one row per account per day as CSV or JSON: messages sent, new chats and other actions by type. No message text. The export_messaging_usage tool returns the same.
ImprovedAccounts
When each account last had activity
GET /v1/messaging/accounts and list_messaging_accounts return last_event_at, so an account that has gone quiet is easy to spot.
NewWebhooks
Delivery log and redelivery
GET /v1/messaging/webhooks/{id}/deliveries lists the past week of deliveries with their status code and attempts, never the message text. POST .../deliveries/{delivery_id}/redeliver sends one again now.
ImprovedWebhooks
Webhooks for one account
POST /v1/messaging/webhooks takes an optional account_id, so a webhook only gets that account's events.
NewWebhooks
account.disconnected and account.reconnected events
Webhooks can tell you when an account stops working, with the reason (such as CREDENTIALS, RESTRICTED or CHECKPOINT), and when it works again.
NewAPI
Send feedback from your agent
POST /v1/feedback and the send_feedback tool let an agent report a bug, a missing feature or a docs gap, with the request it was making.
NewAPI
Changelog in the API
GET /v1/changelog returns these entries, newest first, without a key. Filter with area and before.
ImprovedErrors
Every error links to its explanation
Refusals now include doc_url, a page that explains the code and what to do. MCP tools add the same link to their error text.
NewWebhooks
Send a test event to a webhook
POST /v1/messaging/webhooks/{id}/test sends one signed example of any event type to that webhook straight away and returns the status your server answered with.
NewWebhooks
message.sent and post.published events
Webhooks can now tell you when a message sent through Spaces is confirmed and when a post is published.
ImprovedAccounts
Search, filter, sort and page the accounts list
GET /v1/messaging/accounts takes q, channel, status (including needs_attention), sort, limit and cursor, and returns total, next_cursor and status_since. With no query it returns every account, as before.
NewAccounts
Check any account's health
GET /v1/messaging/accounts/{id}/health and the get_account_health tool say whether an account is working, what to do if not, when its status changed, its warm-up, and how many messages and new chats are left today.
NewSafety
Sending limits and account safety pages
/limits lists each channel's limits and warm-up and explains every refusal; /safety explains how accounts connect and stay safe.
NewAgents
Setup pages for each AI client
Step-by-step pages for Claude Code, Claude, Cursor, Codex, ChatGPT, Grok, OpenClaw and Hermes, and a setup prompt your agent can follow.
NewDocs
Every tool, documented
The site lists every tool by channel at /channels and in full at /docs/reference, and llms-full.txt carries the same list.
ImprovedPosting
Post numbers
Posts include reactions or likes, comments, reposts, impressions and, on LinkedIn, clicks, engagement, reach and followers gained.
NewPosting
Publish to Instagram
create_post publishes Instagram feed posts and stories with images or video, a caption and a location, as well as LinkedIn posts with media and a link preview.
NewChannels
Email as a channel
Connect Gmail, Outlook or IMAP mailboxes and read, send and reply through the same API and MCP server, one email at a time.
NewMessages
Every attachment
Download images, files, voice notes, video and GIFs from any message.
ImprovedSafety
account_safety on every send
Each send returns how many messages are left today and this week, and whether the account is paused.
NewAPI
Every provider endpoint
Profiles, followers, invitations, reactions, edits, forwards, LinkedIn search, companies, jobs and Recruiter actions are available under the same key and limits.
NewComments
Comments on LinkedIn and Instagram
Read, reply to, react to and delete comments, and answer an Instagram comment with a private message.
NewAutomation
Scheduled messages and routines
Send a message at a set local time inside working hours, or run routines that answer from your notes, tag chats, call a webhook or email a summary.
NewMCP
Sign in with OAuth
Claude, ChatGPT, Cursor, Grok and other MCP clients can sign in to Spaces in the browser instead of pasting a key.
NewMCP
One MCP server per channel
Use https://api.spacesos.com/mcp/whatsapp, /instagram, /linkedin, /messenger or /x for a server with only that channel's accounts and tools.