Spaces

Changelog

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.