Product updates

What changed at PostLake

Product updates for the social media API built for AI agents. Built in public for the people and agents who rely on it.

Fixed

Signed-in public pricing checkout

Fixed a cross-domain billing request that prevented signed-in customers from continuing from public pricing to checkout.

  • Public pricing now reads billing and starts checkout on the dashboard host. Legacy dashboard links still redirect, while authenticated JSON requests retain browser access controls.
  • Support guidance now explains per-channel publishing results and safe recovery when a request has an uncertain outcome.

Improved

Choose what disconnecting means for schedules

Preview affected schedules before disconnecting a channel, then remove its future destinations or keep them for reconnection.

  • Other destinations keep their schedules. Posts with no destinations left become drafts with their content preserved. Published posts stay untouched.
  • Confirmation checks for changed or publishing posts. Requests are bounded to 100 affected schedules; larger selections use bulk destination edits first. The same choices are available through the API and MCP.

Improved

Confirmed incident alerts

An operator-controlled switch keeps a confirmed outage banner visible until recovery is verified.

  • The dashboard and public service-updates page share one incident switch. The banner cannot be dismissed, and open visible tabs check for updates without database reads.
  • A failed status check preserves the last confirmed alert. Turning the alert off does not erase uncertain publishing or payment results.

Improved

Clearer service recovery guidance

Service failures now explain what to do next without exposing internal diagnostics or claiming an uncertain action was unchanged.

  • Dashboard notices include service updates, support references and waiting guidance when available. Publishing and payment actions are not automatically replayed.
  • Full-page app failures offer a standalone recovery page. Confirmed incidents and recovery instructions are available on the public service-updates page.

Improved

Freshness-aware analytics updates

Opening Analytics shows saved readings immediately and requests an overdue collection in the background.

  • Concurrent visits share the same active update. Recent collections are reused for fifteen minutes, and changing filters does not start more jobs.
  • The dashboard reloads the report when collection finishes. Production reads check the saved report generation directly, without an extra edge-cache delay.
  • Refresh data remains available. Content-age eligibility, network reporting delays and provider cooldowns still apply; metrics are not claimed to be real-time.

Improved

Saved analytics reports

Normal visits now read private saved reports instead of repeating aggregation queries against the main database.

  • Reports are isolated by workspace, filters and dates. A controlled global builder limits new preparation work; cached visits do not compete with publishing through report aggregation.
  • Completed collection invalidates reports. If preparation fails, an existing same-filter report stays available with an explicit stale label and its original collection timestamp.
  • Derived reports have bounded storage, seven-day expiry and account-erasure protection. Published posts, media, billing and source metric history are not changed.

Improved

Analytics load protection

Stored analytics reports use bounded caching and backpressure. Background collection can be paused independently during reliability incidents.

  • Reports may reuse a snapshot for up to sixty seconds. Their collection timestamp remains visible rather than claiming the page load is a new measurement.
  • The dashboard explains paused collection and stops checking a paused job. Failed collection requests do not hide a valid stored report.
  • Temporary database failures back off analytics report work without replaying writes or changing scheduled posts. These safeguards do not constitute a claim that the database availability incident is resolved.

Improved

Clearer analytics metrics

Views lead the analytics overview. Select Likes, Comments or Engagement Rate to change the chart, rankings and breakdowns together.

  • Top posts ranks the full matching population by the selected metric before the 20-destination limit. REST sort and MCP get_analytics expose the same selection. Rate bars compare actual percentages, not additive shares. Content performance shows average lifetime views per explicitly measured publishing destination, including measured zeros.
  • Top-content, Profiles and Networks rows share compact icon-labelled audience counts, likes and engagement rates. Profiles and Networks show labelled contribution bars that follow the selected metric, with counts and percentage shares. Unsupported measurements are excluded, not shown as measured zero. Post Detail keeps impressions network-specific and labels unavailable readings N/A.
  • Metric information controls and documentation explain engagement, the blended ratio-of-sums rate, and the difference between views, impressions and unique people. The same methodology is available to API clients and agents.

Fixed

Scheduled publishing recovery

Interrupted publishing jobs no longer disappear from the recovery checks after being claimed.

  • Fast delivery retries preserve a pending job until its claim lease expires. Bounded background checks also discover overdue claims.
  • Atomic recovery and credit guards prevent competing workers from charging or publishing the same recovered attempt twice. Provider receipts are saved per destination.
  • A charged attempt without a confirmed provider outcome is held for reconciliation rather than resent. Dashboard warnings and Admin Health make overdue jobs visible.

Fixed

Reliable free-credit renewal

Free allowances renew at the start of their renewal day, without requiring a publishing attempt.

  • The existing 30-day cycle resets to 20 credits at midnight in your saved timezone, or UTC if none is saved. Unused free credits do not roll over.
  • Dashboard, API and MCP balance checks apply due renewals immediately. Background renewal also covers inactive accounts.
  • Transactional cycle guards prevent duplicate grants. Purchased credits and subscription billing are unchanged.

Improved

MCP compatibility and permission hardening

Modern MCP requests and existing connector handshakes share the same agent identity and publishing safeguards.

  • Added MCP 2026-07-28 discovery and request-header validation while retaining three legacy protocol revisions.
  • Both endpoints preserve agent attribution and approval guardrails. Malformed messages, hostile browser origins and oversized bodies are rejected before tool execution.
  • Token refresh rejects supplied mismatched client or resource identifiers without consuming a valid token. Conservative tool hints explain read-only and destructive operations.

Improved

Separate upload erasure from social-post removal

Uploads now provides guarded file deletion, while Post details previews network-specific removal before confirmation.

  • Dashboard, REST and MCP share upload-erasure previews and snapshot checks. Drafts, approval requests, schedules and in-flight publication stay protected.
  • Deleting an upload removes the original and previews, not published social posts. Storage failures remain retryable; publishing credits are not refunded.
  • Published removal reports acceptance separately from confirmed absence. Partial retries remember accepted destinations. Instagram and TikTok removal must be done in their apps.

Improved

Clearer media retention and safer account erasure

Media retention, public source access and publishing storage terms now align across the API, docs and legal policies.

  • The 90-day minimum applies on every plan while the account remains open, with longer protection for scheduled references. No automatic expiry is enabled.
  • Policies distinguish public source uploads from private destination posts and explain erasure, reuse and acceptable storage use.
  • Account erasure removes original media and previews before discarding their manifest. Database erasure is transactional, including analytics and approval aliases. Failures remain retryable.

Improved

Durable publishing notifications and delivery recovery

Post lifecycle changes and webhook notifications now commit together, with recovery controls in Integrations.

  • Approvals, rejections and publishing outcomes retain queued notifications when a worker stops after saving the post.
  • Delivery leases fence overlapping attempts. Recovery resends the same event ID without publishing again or charging credits.
  • Integrations lists pending and exhausted deliveries with refresh and replay controls. Bounded, indexed processing keeps retry work controlled.

Improved

Clearer approval reviews and webhook testing

Review destination-specific captions, media and publishing options before approving a post, and test integration webhooks from the dashboard.

  • Approval details expose per-network content and visibility settings, preserve requested times in the scheduling control, and offer reload-and-review recovery for changed drafts.
  • Malformed approval and rejection requests are rejected before publication rather than being treated as empty requests.
  • Webhook delivery uses a ten-second timeout and does not follow redirects. Dashboard test results distinguish receiver acknowledgement from successful application processing.

Improved

Safer customer integration handoffs

Hosted connection routes enforce network restrictions and bind Page selections to the exact customer flow.

  • Integration setup includes approval, rejection and processing webhook events. Configured webhooks are no longer described as verified delivery.
  • Callback examples validate customer-bound state and use stored profile ownership instead of trusting browser query parameters.
  • Guides clarify workspace key authority, owner approval handoffs and read-only receipt recovery. Customer permissions, schedules and billing are unchanged.

Improved

Durable approval identity and read-only receipt recovery

Approval and publication now keep the original post ID, with full-state review checks and protection against concurrent approvals.

  • Drafts and approval-required submissions support creation idempotency. GET /v1/idempotency/{key} returns the original response and current canonical post without replaying a write.
  • Campaign, asset metadata, media and platform options survive approval. Approval and rejection webhook events connect human decisions to the original request.
  • Historical rekeyed approvals resolve their original IDs where explicit audit evidence exists. Cancellation retains creation receipts and does not make the same key reusable.

Updated

Updated X publishing credit rates

X text posts and text replies use 8 credits. Posts and replies containing a link use 90 credits.

  • The same rates apply through the dashboard, REST API and MCP. Each thread part and first comment is priced separately using its own text.
  • Subscription prices, monthly credit allowances, PAYG packs and non-X publishing rates are unchanged. X reads, direct messages and other action rates are unchanged.
  • X access remains separately gated. Buying a subscription or credit pack does not automatically enable the connection.

Improved

Safer integration scheduling and shared-app X spending

Scheduled cancellation supports full-post preview fencing, uploaded media has explicit retention terms, and X requests reserve funds before provider calls.

  • Use POST /v1/posts/{id}/cancel for scheduled-only cancellation. Single and atomic bulk cancellation accept preview snapshots covering all stored fields, including media and platform options. Neither retracts published posts.
  • Uploaded media is retained for at least 90 days while the account remains active. Scheduled references remain protected through completion plus 30 days, subject to account deletion and legal or security removal. GET /v1/media/policy exposes the policy.
  • X customer traffic always uses PostLake's shared developer app. Read rates account for provider resource and author/sender costs. Concurrent requests cannot spend the same credits. Daily customer and shared-app safety budgets bound attempts, including failed attempts.
  • X thread parts, link posts, first comments and alt-text metadata have explicit credit costs. Free monthly credits cannot fund X operations. Buying credits or a subscription does not unlock gated connections.

Improved

Clearer public connection availability

Homepage platform pills label X and Meta networks as coming soon for public access.

  • The homepage explains that buying a plan or credit pack does not unlock restricted platform connections. Early access is separate from purchasing credits.

Fixed

Safer channel reconnection and Stories through both Instagram login routes

Connecting a selected channel no longer removes other channels, and Instagram Login can publish Stories without a Facebook Page.

  • The connection picker adds or reconnects selected channels. Unselected channels are retained, including when a new connection fails. Disconnect remains an explicit action.
  • Story validation, publishing, composer guidance and MCP descriptions support both login routes. Facebook Login Stories require a Business account; Meta enforces publishing eligibility.
  • Stories remain explicit, use one image or video, and never silently fall back to a feed post. PNG images are converted automatically.

Fixed

Instagram connection through Facebook

Fixed a connection failure caused by requesting an unsupported account field from Facebook Graph.

  • The Instagram account picker and connection confirmation no longer request account_type from the Facebook Login endpoint.
  • Unknown account types remain unknown. Meta enforces account eligibility when publishing instead of an unsupported field blocking connection.

Improved

Clearer metric coverage and refreshed channel avatars

Analytics now distinguishes measured zero from a missing field, and refreshes channel identity in the background.

  • Destination readings expose reported fields. Incomplete responses preserve previous valid lifetime counters, and late first-field measurements establish a baseline instead of inventing activity.
  • Channel field coverage describes latest observations, with legacy evidence explicitly marked unknown.
  • Background metadata work refreshes cached avatar bytes with versioned analytics image URLs. Failed image requests preserve the previous valid avatar.
  • Unavailable account-wide insights are cached for the UTC day to prevent repeated requests across continuation pages.

Improved

Analytics without waiting for social networks

A clearer performance workspace backed by stored destination analytics, coherent date windows and background collection.

  • Period mode shows observed activity, including older content. Content mode shows lifetime results for destinations published during the selected dates.
  • Totals no longer sample the most recent 50 posts. Shared posts are attributed to the selected channels, and top-content rankings cover the complete matching population.
  • Refresh queues bounded collection with progress, workspace leases, provider timeouts and cooldowns. Stored reports remain available when a provider is slow.
  • Highlights, social avatars, visual content rankings and channel/network contributions make the main drivers easier to identify.
  • REST, MCP and SDK expose matching filters and refresh controls, with public methodology explaining baselines, corrections, missing history and native metrics.

New

Instagram Stories with explicit placement

Publish a Story from the composer or API without risking an unintended feed post.

  • Choose Story in the composer or set platformOptions.instagram.placement to story in REST, MCP or the SDK.
  • PostLake checks the Facebook connection, Instagram Business account, and single-image or single-video requirement before publishing.
  • Channel tiles and connection choices now show which Instagram route is in use and explain the features available on each route.

Improved

Post performance beside the content

Published posts now show their own network-reported metrics in Post Detail, with a refresh control and a clearer text-post layout.

  • The post view checks its own metrics while visible, without repeatedly fetching the whole account's analytics history.
  • Per-destination reports and unavailable states distinguish a genuine zero from a metric the network did not return.
  • The REST and SDK post-analytics contracts now include measurement time and the metrics each network reports.

Improved

Atomic calendars and campaign edits

Preview, create, edit, or cancel up to 200 scheduled posts with guarded batch workflows.

  • Update captions, per-platform text, exact destinations, campaign tags and asset facts in one guarded storage operation.
  • Shift every selected scheduled UTC time by elapsed minutes, and inspect the before-and-after preview before applying.
  • Filter post history by campaign and single or shared destination composition through REST, SDK and MCP.
  • Create a validated calendar in one transaction with a preview snapshot and idempotency key. Exact scheduled batch cancellation is atomic too.
  • A create and a separate cancellation are not one replacement transaction. Create and verify the new calendar before retiring the old one.

Improved

Safer large scheduled calendars

Scheduled posts can be listed in publishing order, cancelled in a bounded batch, and planned as a timezone-aware cadence.

  • Scheduled-time pagination keeps its place when earlier posts are cancelled.
  • Bulk cancellation can be previewed and checks every selected post before execution. Each cancellation is reported separately if publishing begins during the request.
  • Uploaded media remains reusable after a scheduled post is cancelled. Campaign replacement is not yet atomic.
  • REST, SDK and MCP can preview deterministic local-time cadence slots without creating posts. Daylight-saving gaps and repeated hours are rejected.

Improved

Meta advertising features deferred

Meta connections no longer request advertising permissions. Ad account discovery, branded-partner lookup, and Facebook Partnership Ads workflows are deferred.

  • The Partnerships page now redirects to Channels, and the affected MCP tools are unavailable.
  • Existing SDK methods remain compatible, but their REST endpoints return HTTP 501 with code meta_ads_deferred. Reconnecting cannot enable these features.
  • Organic publishing, analytics, ordinary tagged posts, and non-ad branded-content publishing are unchanged.

Improved

Add more accounts from connection links

Hosted connection links now keep a consistent Manage your connections heading and allow adding another account on an already-connected platform.

  • Add another TikTok or other supported account without leaving the hosted page.
  • Reconnect warnings and actions stay beside the affected channels, rather than changing the whole page's purpose.
  • Profile switching and signed profile and platform restrictions remain unchanged.

Improved

Focused profile switching on connection links

Agent connection links now show one profile at a time, with clear reconnect actions for channels that need reauthorization.

  • Unscoped links still manage every profile. A switcher starts on the first profile with a channel needing reconnection within the link's platform filter.
  • Profile-scoped links keep their single-profile view. Working channels and fresh connections keep their existing flow.
  • Agents should include profile when the target is known, and platforms when only one network is needed.

New

Facebook Partnership Ads controls

Connected Facebook Pages can inspect brand-tagged posts and manage account-level creator permission requests from PostLake.

  • The Partnerships page separates posts tagging your brand from permission to run an ad with a creator.
  • The API, SDK and MCP expose permission status and explicit request actions. A partner must approve a request in Facebook before ad permission becomes active.
  • Availability still depends on Meta granting the app and Page the required access. PostLake does not create or spend on ads through this workflow.

Improved

Safer agent connection approvals

OAuth approval now makes self-declared app names clearer and shows the return destination before you grant access.

  • A prominent notice identifies unverified application names during agent connection approval.
  • Dynamic client registration remains available for compatible MCP clients, with tighter registration validation and abuse limits.
  • The approval screen now describes only the setup actions the OAuth connection can actually perform.

Improved

Clearer destinations and safer scheduled edits

Posts now show the exact social accounts they target, while scheduled posts can gain or lose destinations before publishing.

  • Grid, List, Calendar, Day Queue and Post Detail distinguish social-account identity from the person or agent who created a post and the interface they used.
  • Use Manage destinations, PATCH /v1/posts/{id}, the SDK or MCP edit_post to change the exact account list. New accounts inherit the existing scheduled time and must pass content validation.
  • Concurrent edits and edits after publishing starts are rejected. Approval-required agents must ask the owner to change destinations. Profile Group membership changes do not alter existing schedules.

Improved

One agent name across the dashboard and API

An agent's display name now carries through Agent Control, post attribution, REST identity and MCP.

  • Agents can set their own display name with PATCH /v1/me/agent, the set_my_name MCP tool or the SDK. This does not rename their credential.
  • The account owner can set and lock the name in Agent Control. A locked name cannot be changed by the agent.
  • Name changes are recorded in the account audit trail.

Improved

A week-first publishing calendar

Work through a seven-day schedule without leaving the Posts workspace, or switch to a compact month overview.

  • Week shows compact post cards with time, destination, caption, status and creator context. The calendar uses one scrollable body rather than separate day-column scrollbars.
  • Month shows distribution at a glance. Open any date to inspect its full, filtered queue in a side panel.
  • Calendar range, date and Posts filters stay in the URL for handoffs. Only the visible date range is queried, including weeks that cross month boundaries.

Improved

Lighter previews and searchable agent history

Post history stays bounded for API clients and agents, and the dashboard uses cached image previews and video posters.

  • REST GET /v1/posts and MCP list_posts share indexed cursor pagination. Existing post-ID cursors, exact status filters and inclusive date boundaries remain supported.
  • Search captions with q through REST or MCP. It is a case-insensitive literal search applied before pagination.
  • Dashboard previews use fixed-size derivatives stored in R2. Videos get a still frame without downloading the video into every card. Original publishing media is unchanged.

Improved

A more focused Posts workspace

Keep publishing controls in reach, open a complete Calendar day, and review carousel posts one slide at a time.

  • Search, origin, profile and network filters work across Grid, List and Calendar, with shareable URLs and a toolbar that stays in place while results scroll.
  • Calendar colours indicate publishing status. Day counts include all matching posts, and opening a date loads its queue independently of the month previews.
  • Post Detail pairs a single-slide media viewer with a desktop details and actions rail. Comments load when requested, not every time a post is opened.
  • Dashboard post reads are paginated, preview lookups are batched, and Calendar reads use an indexed month range. Video cards reuse saved covers where available without preloading the video.

Fixed

Scheduled posts now keep the right channel after a reconnect

PostLake records the native destination behind a scheduled target, so it never guesses between several accounts or Pinterest boards when a connection changes.

  • New scheduled posts retain the platform identity selected at scheduling time. Pinterest targets also retain the selected board.
  • When a reconnect is provably the same destination, PostLake repairs the scheduled target automatically. If it is not provable, the post waits for its owner to choose the exact replacement instead of publishing to the wrong account.
  • The post detail screen, REST API, TypeScript SDK, and MCP edit_post tool can repair one disconnected target in place with a precise channel choice.

Improved

Safer multi-network publishing before anything goes live

Integrations can now require every selected destination to pass PostLake's preflight before any network receives a post.

  • Set requireAllTargets: true on a publish request when partial delivery is not acceptable. PostLake then refuses an incompatible target set before it spends a credit or contacts a network.
  • The default remains partial delivery. A compatible destination can still publish while PostLake reports a clear, per-target error for another network.
  • The dashboard now warns while a scheduled post is waiting for a channel that is no longer connected, so the owner can reconnect it before publish time.

Improved

Pay-as-you-go is clearer from purchase to confirmation

Credit packs are now a first-class way to start with PostLake, with direct purchase choices and a branded confirmation after a successful one-off purchase.

  • The homepage and pricing page now show direct credit-pack choices before subscriptions, so people can buy credits without a contract and buy another pack whenever they need more.
  • Starter now includes 2,200 monthly credits for $13 and Standard includes 6,500 for $33. Those recurring plans now offer a clearer unit-value step above the permanent packs.
  • A paid pack adds credits only after Stripe confirms payment. PostLake then sends a branded confirmation with the exact purchased balance.
  • Stripe webhook retries remain safe: the same payment event cannot add credits or send a second confirmation twice.

Improved

Pay-as-you-go credit packs are now clearly identified

People who purchase a one-off credit pack remain on the Free product tier, and PostLake now explicitly identifies that billing state as Pay as you go.

  • The dashboard and billing page distinguish a non-renewing pack purchase from a subscription, without changing the account's Free-tier entitlements.
  • REST, MCP, and the TypeScript SDK expose billing.mode so an integration can tell Free, Pay as you go, and subscription states apart without guessing from a credit balance.
  • Purchased pack credits never expire, do not create an automatic renewal, and continue to spend after monthly credits where a subscription is active.

New

Facebook Page live broadcasts for people and agents

Prepare, start, inspect, and end a Facebook Page live broadcast from PostLake. Send Facebook's one-time ingest details directly to compatible streaming software.

  • The dashboard, REST API, TypeScript SDK, and MCP server use the same lifecycle: prepare a private broadcast, start it when video is flowing, then inspect or end it.
  • Facebook no longer supports API-scheduled live broadcasts. PostLake therefore lets the person or agent decide exactly when to go live instead of presenting a retired scheduling option.
  • PostLake never stores the secure ingest URL or a stream key. They are returned once when the broadcast is created and never appear in later reads.
  • Creating a broadcast is free. One publishing credit is charged once Facebook confirms that the broadcast is live. PostLake reconciles this state in the background.

Improved

Creator discovery now uses Meta's Facebook and Instagram APIs

Creator discovery is now available in PostLake Discover, REST, MCP, and the SDK through Facebook Creator Discovery or Instagram Creator Marketplace.

  • A connected Facebook Page searches Facebook Creator Discovery directly. An Instagram account connected through Facebook searches Instagram Creator Marketplace. The two Meta products use different permissions and endpoints.
  • Results contain only creator fields documented by the selected Meta API. PostLake does not invent follower counts or other unavailable data.
  • Until Meta grants PostLake Advanced Access, every result is labelled as test data in every surface and cannot be used for outreach.

Improved

Pinterest video Pins now receive an automatic cover

Video-only Pinterest posts now receive a JPEG cover generated from the video before publishing, so people and agents can publish without a separate cover-upload step.

  • Provide platformOptions.pinterest.thumbnail when you want to choose a JPEG or PNG cover yourself. That explicit cover always wins.
  • The dashboard, REST API, scheduled posts, and MCP publishing now use the same server-side media path.
  • Validation reports the automatic-cover behavior before publishing, and generated covers are stored as normal PostLake media assets.

Fixed

Plan choices now lead to the right billing action

Signed-in people now move from public plan cards into secure Checkout or subscription management instead of being sent back to sign-up.

  • Homepage annual selections now carry the matching annual Stripe product into checkout.
  • Free accounts continue to secure Checkout. Active subscribers open Stripe subscription management, where they can change plans, update payment details, cancel, or resume.
  • The dashboard refreshes its billing state after a Stripe return and clearly confirms a cancelled checkout or a scheduled cancellation.

Improved

A guided integration workspace for multi-customer products

The dashboard now shows the complete path for embedding PostLake: a server key, isolated customer profiles, short-lived connection links, return handling, and signed webhooks.

  • Integration readiness makes missing setup visible before a customer is sent through OAuth.
  • Webhook setup can now be completed from the dashboard. The signing secret is shown once and remains redacted from every later view.
  • The TypeScript SDK adds connectCustomerLink for the tenant-scoped connection flow. REST and MCP continue to use the same signed connect-link contract.
  • Guidance now clearly distinguishes customer isolation from billing: profiles isolate operations, while the workspace that owns the server key pays for successful publish targets.

Improved

Safer retries and inspectable webhook recovery for integrations

A publish Idempotency-Key is now bound to its original request, and webhook operators can inspect, test, and replay the durable retry queue.

  • The same key and the same request safely return the original post. Reusing that key for different content now returns a conflict instead of silently replaying the wrong result.
  • Publish responses expose Idempotency-Replayed and PostLake-Receipt headers so an integration can record exactly what happened.
  • Webhook delivery controls list pending and dead-lettered work, test a single endpoint, and replay the original signed event without changing its event id.
  • Agents can read this release feed with GET /v1/changelog or the get_changelog MCP tool.

Fix

LinkedIn connect now uses member scopes that LinkedIn actually grants

Connecting a personal LinkedIn profile no longer asks for Company Page scopes. Those scopes require Community Management API approval, and LinkedIn rejects the whole consent screen if they are requested before that product is granted.

  • The authorize URL now requests openid, profile, email, and w_member_social.
  • Organization scopes stay in the adapter behind a flag and return when Community Management is approved.
  • Public capabilities, docs, and posting pages now say the same thing: member-profile text and images are live. Company Pages, video, comment reading, and member-post analytics are not.

Correction

Network availability now matches the connection gate

We incorrectly described every implemented network as publicly connectable. Facebook, Instagram, and Threads are still limited to approved testers while Meta App Review is in progress.

  • Public connections are currently open for LinkedIn, TikTok, Bluesky, YouTube, and Pinterest.
  • Facebook, Instagram, and Threads are implemented and used for review testing, but are not open to every account yet.
  • X is not publicly connectable. The posting pages and agent-readable availability reference now state the same thing as the API gate.

New

A complete integration workspace for SaaS products

Developers can now create customer profiles, generate scoped social connection links, and manage optional customer-owned OAuth credentials from one workspace.

  • Managed PostLake OAuth remains the default. One server-side API key can safely operate many customer profiles without exposing the key in a browser.
  • Connection links can return each customer to the integrating product after OAuth and can be limited to selected networks.
  • Customer-owned OAuth credentials are optional and encrypted. They only change the app identity shown during network consent.
  • REST, MCP, and the TypeScript SDK now support agent, source, approval, network, and date filters when listing posts. The SDK also documents the multi-user integration pattern.

Improved

Agent docs describe all nine network capabilities

The capability reference now covers all nine implemented adapters. Public connection availability remains separate and follows each provider's approval status.

  • The registry describes X, LinkedIn, Instagram, TikTok, Facebook, Threads, Bluesky, YouTube, and Pinterest.
  • Feature depth and public connection availability vary by network. Read the live capability and availability fields before planning work.
  • Public connections are open for LinkedIn, TikTok, Bluesky, YouTube, and Pinterest. Meta remains limited to approved testers during App Review, and X is not publicly connectable.

New

Connect links that return to your app after OAuth

Mint a hosted connect link that sends the browser back to your app after OAuth, scoped to one profile so one customer's channels cannot leak into another's.

  • POST /v1/connect-link now accepts returnUrl and platforms. After OAuth the browser lands on your origin with connect_status, platform, and profile.
  • A profile-scoped connect link keeps that profile after OAuth. Disconnect, analytics, and GET /v1/social-accounts?profile= stay in the same bucket.
  • DELETE /v1/social-accounts/{id} and the account.disconnected webhook cover teardown. GET /v1/me/limits reports per-profile and workspace rate envelopes. Paid plans raise both.

Improved

Rate limits are per profile, with a workspace ceiling

A product with many end users no longer shares one publish bucket across every customer. Each Channels profile gets its own API and publish cap, and the workspace ceiling rises with the plan so many users can burst at once.

  • Free and credit packs: 120 API calls and 12 publishes per minute per profile, 2,400 / 180 across the workspace. Standard, Pro and Business raise both layers.
  • Pass profile on reads, or publish with that profile's acc_ ids, so one customer cannot spend another's headroom. MCP create_post uses the same buckets as REST.
  • Network caps stay separate. TikTok's own 6 requests a minute per account still return rate_limited on that target. Scheduled fires still use one Durable Object alarm per post.

New

Every API key is now an agent identity

Named API keys now appear in Agent Control with their own attribution and enforceable publishing authority, bringing unattended agents into the same control plane as OAuth agents.

  • Owners can restrict each key to selected profiles and networks, set a daily cap, require approval, and control purchased-credit use.
  • Posts and drafts created with a key retain that key's identity in activity history.
  • Existing keys keep their current publishing access unless an owner adds restrictions, so working integrations continue without interruption.

Improved

Homepage now names the social infrastructure

The homepage keeps Stop posting. Let your agents do it. Underneath it now says PostLake is the social infrastructure for AI agents, not only a posting API.

  • Hero, FAQ and llms.txt now describe observe, publish, engage and measure as one layer.
  • Code samples on the homepage match the live contract: profile plus platforms, Idempotency-Key, published state, post.published webhooks, and the postlake TypeScript SDK.

New

Owners can require approval from an agent

A PostLake owner can now require human approval on an OAuth-connected agent. Publish requests from that agent become drafts automatically, and the same agent cannot approve its own work.

  • The rule is enforced by the API, not left to a prompt.
  • Drafts retain the agent identity and appear as awaiting approval in agent activity.
  • OAuth agents can no longer mint unrestricted API keys that bypass their limits.

Improved

A faster, clearer Inbox

Switching between conversations now reuses a preloaded thread instead of waiting for a second request. The Inbox also keeps conversation context visible, including the connected profile that receives and sends each message.

  • Threads preload when a person points, focuses, or presses a conversation.
  • Rich Instagram collaboration requests are preserved instead of collapsing to no text.
  • The message workspace keeps its own scroll areas, so the rest of the page stays fixed.

New

Agents can run more of the social workflow

The hosted MCP server now documents the full operational surface: connection handoff, publishing, asynchronous post confirmation, unified Inbox actions, discovery, moderation, and analytics.

  • Agents can confirm an asynchronous publish before a final public URL is available.
  • Direct-message threads can be explicitly marked read after they are handled.
  • Every tool is documented in the MCP guide and the agent-readable llms.txt reference.

Improved

A safer path from agent to channel connection

An agent can now give the account owner a signed connection link when a social network requires a human to approve access. The owner completes the social sign-in, while the agent stays out of passwords and consent screens.

  • Connection links are scoped, signed, and short-lived.
  • The same workflow works from the dashboard, REST API, and hosted MCP server.

For implementation detail, integration changes, and planned work, see the documentation or contact support.