Use Connect REST API when your product needs to put something in front of people inside Salesforce, such as a post on a record's feed, an @mention, a file or an Experience Cloud page. Use REST API when it needs to read or write records. Connect REST API returns data "structured for rendering on websites and mobile devices" and localized to each user, per When to Use Connect REST API, and Salesforce says plainly "Do not use Connect REST API to extract data."
For a SaaS company the question is narrower than which API is newer. Your product posts into hundreds of customer orgs, each with its own rate limits, its own Chatter setting and its own integration user. Code you ship in a managed package runs in all of them. Appnigma works with B2B SaaS teams on the customer-facing Salesforce integrations their enterprise customers ask for. Our done for you delivery builds and maintains those integrations with a named engineer, and marketplace apps covers the native app and listing when the logic has to live inside Salesforce. If you were looking for Salesforce Connect, the product that shows outside data as external objects, that is a different feature, covered in the Apex Developer Guide.
Updated October 2026. Checked against the Connect REST API Developer Guide and the Apex Developer Guide at API version 68.0 (Winter '27). The earlier version called Chatter REST API a legacy API, used a request path and HTTP method that Salesforce doesn't accept for posting, and said Connect API shares limits with other APIs. This update corrects those and adds the Summer '26 change that turns Chatter off in new orgs, Connect in Apex, the managed package rules and the multi-org rate limit design.
What Connect REST API covers in 2026
Connect REST API is no longer only Chatter. The Connect REST API Developer Guide lists Commerce, CMS managed content, Experience Cloud sites and files. It adds notifications and topics, "and more." It is available in all editions except Personal, and "some features require Chatter to be enabled for the organization."
The reference is now split into API families, listed on About the API Families. The ones a SaaS integration usually touches are below.
| Family | What it covers | Needs Chatter |
|---|---|---|
| Chatter Feeds | Feeds, feed elements (posts) and comments | Yes |
| Chatter | Groups, users, topics, recommendations | Yes |
| Files and Folders | Files, folders, Files Connect repositories | No |
| Experience Cloud | Sites, audiences, moderation | No |
| Core | Org and user settings, named credentials, notifications | No |
| CMS, Commerce, Personalization, Agentforce | Managed content, B2B and B2C Commerce, prompt templates | No |
The Needs Chatter column follows Salesforce's rule that "the documentation for every Chatter resource specifies that Chatter is required." Check the resource page for each call you use, because that one flag decides which rate limit applies and whether the call works in a customer org at all.
Is Chatter REST API deprecated?
No. A common claim, repeated in the earlier version of this post, is that Connect API replaced an older Chatter REST API. Salesforce's docs describe Chatter REST API resources as "a subset of Connect REST API resources," per Connect REST API Limits. They are current, versioned with the rest of the API at v68.0, and the feed endpoints most integrations call are among them.
The distinction matters for one reason, which is limits. Chatter REST API resources have "a per user, per application, per hour rate limit." When you exceed it they "return a 503 Service Unavailable error code." Every other Connect REST API resource counts toward the org's total API request allocation, which is per org over 24 hours. An Enterprise org gets 100,000 calls plus 1,000 per Salesforce licence. Those calls are shared with every other tool the customer runs.
What did change in 2026 is the default, not the API. Chatter starts switched off in Enterprise, Unlimited and Developer orgs created in Summer '26 and later. Chatter APIs are among the features listed as unavailable until an admin enables it, per the release note Chatter Is Turned Off by Default in New Orgs. Salesforce states "this change doesn't affect orgs created before Summer '26." For a SaaS vendor that splits your customer base in two. Older orgs almost always have Chatter on, and every new customer org may not.
How to post to a record feed
Post to the feed-elements resource and name the record as the subjectId. Some guides post to /chatter/feeds/record/{recordId}/feed-elements. That resource only reads feeds, per the Record Feed Resource page, so a POST there fails. The posting resource is /chatter/feed-elements, which Salesforce lists as "Post a feed element" on Salesforce Files. Its subjectId can be a user, a group or a record.
POST https://{instanceName}/services/data/v68.0/chatter/feed-elements
Authorization: Bearer {access_token}
Content-Type: application/json
{
"feedElementType": "FeedItem",
"subjectId": "006XXXXXXXXXXXXXXX",
"body": {
"messageSegments": [
{ "type": "Text", "text": "Contract signed in YourApp. Owner " },
{ "type": "Mention", "id": "005XXXXXXXXXXXXXXX" }
]
}
}The IDs are placeholders. Three documented limits shape what you send. "The body can contain up to 10,000 characters and 25 mentions," per ConnectApi.FeedItemInput. A batch request through /chatter/feed-elements/batch takes up to 500 feed elements, per Feed Elements, Batch Post. For an Experience Cloud site, insert /connect/communities/{communityId} after the version, per Build the Resource URL. The /connect prefix belongs only there, not on every Chatter path.
Connect in Apex when your logic runs inside Salesforce
If your product ships a managed package, you don't call Connect REST API over HTTP from Apex. "Many Connect REST API resource actions are exposed as static methods on Apex classes in the ConnectApi namespace," called Connect in Apex, so you can build "without using HTTP callouts from Apex," per When to Use Connect REST API. The same post looks like this, from Post a Feed Element.
ConnectApi.FeedElement post = ConnectApi.ChatterFeeds.postFeedElement(
Network.getNetworkId(), recordId,
ConnectApi.FeedElementType.FeedItem, 'Contract signed in YourApp.');Connect in Apex behaves differently from the rest of your Apex, and four of the differences show up in customer orgs. All four are documented in Differences Between ConnectApi Classes and Other Apex Classes and Understanding Limits for ConnectApi Classes.
First, it runs as the context user and "ignores the with sharing and without sharing keywords." A post to a private group fails if the running user isn't a member. Second, "Connect in Apex isn't available to Automated Process users by default." A platform event trigger "runs as the Automated Process system user" by default, so a package that posts from one fails unless it sets a running user with PlatformEventSubscriberConfig. Third, "every write operation costs one DML statement against the Apex governor limit." Chatter methods also have "a per user, per namespace, per hour rate limit" that throws ConnectApi.RateLimitException. Your code has to catch it. Fourth, some operations are asynchronous. A new feed item "isn't immediately available in the news feed," so don't read it back in the same transaction to confirm it.
What changes when ConnectApi code ships in a managed package
A package that uses Chatter methods installs cleanly in an org with Chatter off and then fails when it runs. Since Summer '26 that is the default state of a new Enterprise, Unlimited or Developer org, including the Developer org a prospect uses to trial your listing. Salesforce states the code "can be compiled and installed in orgs that don't have Chatter enabled. However, if Chatter isn't enabled, the code throws an error at run time," per Packaging ConnectApi Classes. The error is System.NoAccessException. Your package can check first, because ConnectApi.Organization.getSettings() reports "which features are enabled" and doesn't itself require Chatter. When Chatter is off, fall back to something that doesn't need Chatter, such as a task or a custom notification, and tell the admin in your setup page why posts aren't appearing.
Tests need planning before you submit for security review. "Most Connect in Apex methods require access to real org data, and fail unless used in test methods marked @IsTest(SeeAllData=true)," per Testing ConnectApi Code. Some read methods, such as getFeedElementsFromFeed, need the matching setTest method instead, which registers the output the call returns. Tests that depend on org data are brittle in a packaging org, so wrap ConnectApi calls in one class and keep the rest of your logic testable without them.
The namespace limit is the one that scales with your customer base. Because the hourly Chatter limit is per user and per namespace, your package's posts in each customer org draw from one bucket per user, shared by everything your namespace does. A design that posts once per synced record from a single integration user puts all of that org's volume on one user. Batching into one post per job, or posting as the user who triggered the change, spreads it out. For the other limits a certified package gets, see our guide to governor limits in managed packages.
Rate limits for a product connected to many customer orgs
An external app calling Chatter resources gets its own hourly bucket per user only if it authenticates with OAuth. With a session ID, every app the user runs shares one hourly bucket, per Connect REST API Limits. Salesforce's advice is to "use OAuth tokens" to get the per application limit. The current setup docs create that OAuth entry point as an external client app, and our post on connected apps vs external client apps covers the switch. Each customer authorizes your app in their own org, which our post on OAuth for a SaaS app connecting to many orgs walks through. Appnigma's integration infrastructure is built for that model, letting "each customer authorize their own account from your product, with their connection managed separately."
Salesforce doesn't publish the hourly number, and it says "limits can change without notice." Design for the 503 instead of a figure. Here is worked arithmetic from the documented limits, not a measured customer. A sync job closes 400 opportunities in one hour in one org and posts a confirmation on each. Sent one by one, that is 400 Chatter requests from your integration user in that hour. Sent through the batch resource, it is one request, because a batch holds up to 500 feed elements. In Connect in Apex a batch post also costs one DML statement instead of 400. Reading is where vendors overspend. Salesforce's guidance is "when polling for feed updates, don't exceed 1 poll per minute (60 polls per hour)." Ten users your product polls for once a minute is 600 requests an hour in that org, and 14,400 a day.
Salesforce also asks for "a unique client app for the production environment" and separate client apps for automated tests and manual development. For a vendor that means one production external client app for customer orgs, never shared with your CI. Requests outside the Chatter families, such as Files and Folders or Experience Cloud resources, draw on the customer's daily org allocation instead. For how that allocation is shared, see our post on Salesforce API rate limits.
When Connect API is the wrong tool
Don't use it to sync data. Salesforce lists three jobs where REST API "rate limits and query language work better." These are migrating or synchronizing user profiles, building analytic applications, and writing queries that return records and fields. If your product mirrors records, read them with REST API or Bulk API 2.0 and subscribe to changes with Change Data Capture instead of polling feeds.
Connect API earns its place on the other side of the integration, where your product reports back. A post on the opportunity when a contract is signed, a file on the account when a document is generated, or an @mention when a support case needs the owner. Those are the moments a customer's sales team sees your product inside Salesforce, which is where the renewal conversation happens. Our post on Salesforce integration patterns covers where this fits next to request and reply calls and event-driven sync.
Mistakes that show up after customers install
- Posting to /connect/feeds/record/{id}/feed-elements, which isn't a resource, or POSTing to the record feed resource, which only reads.
- Pinning an old API version. Salesforce supports each version "for a minimum of three years," and versions 21.0 to 30.0 were retired in Summer '25, per the API End-of-Life Policy.
- Assuming Chatter is on. New orgs created in Summer '26 and later start with it off, so a trial in a fresh Developer org fails on the first post.
- Shipping Chatter methods without catching System.NoAccessException for orgs with Chatter off.
- Posting from a platform event trigger that runs as the Automated Process user.
- Treating a 503 from a feed endpoint as an outage instead of the hourly rate limit, then retrying immediately.
- Polling every user's feed once a minute when one batch post or one change event would do.
- Using a session ID instead of OAuth, so your product shares one hourly bucket with every other app the user runs.
Frequently Asked Questions
What is Connect API in Salesforce?
Connect REST API is Salesforce's API for feeds, files and Experience Cloud sites, plus CMS and Commerce. Its responses are formatted for display. Its Apex version is the ConnectApi namespace, called Connect in Apex.
Is Chatter REST API deprecated?
No. Chatter REST API resources are a current subset of Connect REST API at v68.0. What changed is that orgs created in Summer '26 and later start with Chatter turned off, so the Chatter APIs work only after an admin enables it.
What are the Connect REST API rate limits?
Chatter resources are limited per user, per application, per hour, and Salesforce doesn't publish the number. Other Connect resources count toward the org's 24-hour API allocation, which is 100,000 plus 1,000 per Salesforce licence on Enterprise Edition.
Can a managed package use ConnectApi without Chatter enabled?
It installs, but Chatter methods throw System.NoAccessException at run time. Check ConnectApi.Organization.getSettings() first and fall back to a feature that doesn't need Chatter.
Can Appnigma build a Salesforce integration that posts into customer orgs?
Yes. Appnigma's done for you delivery builds and maintains customer-facing Salesforce integrations with a named integration engineer. Marketplace apps covers the native app, listing preparation and review support when the posting logic ships in a managed package.
Related Articles
- Salesforce API Rate Limits
- Governor Limits in Verified Managed Packages
- Platform Events vs Change Data Capture in Salesforce
- Salesforce Integration Patterns and Best Practices
- Salesforce Bulk API 2.0 Guide
- Secure Salesforce Connector OAuth
- Connected App vs External Client App
- Salesforce Composite and GraphQL API
Sources
- Salesforce Developers, Connect REST API Developer Guide
- Salesforce Developers, About the API Families
- Salesforce Developers, When to Use Connect REST API
- Salesforce Developers, Connect REST API Limits
- Salesforce Developers, Build the Resource URL
- Salesforce Developers, Chatter Feeds Reference, Record Feed Resources
- Salesforce Developers, Salesforce Files
- Salesforce Developers, Chatter Feeds Reference, Feed Elements Batch Post
- Salesforce Developers, Apex Reference, ConnectApi.FeedItemInput
- Salesforce Developers, OAuth and Connect REST API
- Salesforce Developers, API End-of-Life Policy
- Salesforce Developers, API Request Limits and Allocations
- Salesforce Developers, Apex Developer Guide, Post a Feed Element
- Salesforce Developers, Apex Developer Guide, Understanding Limits for ConnectApi Classes
- Salesforce Developers, Apex Developer Guide, Packaging ConnectApi Classes
- Salesforce Developers, Apex Developer Guide, Testing ConnectApi Code
- Salesforce Developers, Apex Developer Guide, Differences Between ConnectApi Classes and Other Apex Classes
- Salesforce Developers, Apex Reference, ConnectApi Organization Class
- Salesforce Help, Summer '26 Release Notes, Chatter Is Turned Off by Default in New Orgs
- Salesforce Developers, Apex Developer Guide, Salesforce Connect



