### TL; DR Salesforce offers three main APIs: REST for instant CRUD, Bulk v2 for large backfills, and Streaming/CDC for near-instant event notifications. Each fits a different traffic pattern. Picking the wrong one can waste quota, delay updates, or miss events entirely. With [**Ampersand**](https://www.withampersand.com?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide), you don't have to worry about which API is right for you. Now, developers can focus on building, not babysitting integrations. ## Integrations in the agentic age As AI agents drive more interactions with [Salesforce](https://www.withampersand.com/integrations/salesforce?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide), the performance of your integration depends on more than just endpoint coverage. It hinges on choosing the right API rail for each job. REST, Bulk v2, and CDC were built for different workflows, and mixing them up can lead to silent failures, quota overruns, or hours of backlogged retries. When users click save or copilots sync records mid-meeting, your system needs to make the right call in milliseconds. Building a realtime bidirectional integration with Salesforce is hard, **Ampersand now makes it a breeze.** [Read more about Salesforce under scale in the age of AI → ](https://www.withampersand.com/blog/salesforce-vs-hub-spot-under-scale-what-developers-need-to-know-in-the-age-of-ai?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) ## REST: Instant CRUD with tight quota ceilings Salesforce’s [REST API](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_what_is_rest_api.htm?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) is the default choice for most teams. It handles synchronous operations well and delivers quick feedback. It is ideal when a user updates a record and expects to see the change immediately. But REST comes with strict limits. Onboarding 10,000 records with unbatched REST calls can consume a significant portion of your daily quota, especially in orgs with lower ceilings or competing jobs. It also hits bottlenecks quickly under load. ### Common failure modes for REST APIs: - [REST API requests over 6 MB fail with 413 errors](https://help.salesforce.com/s/articleView?id=001122438&type=1?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) -[ Row-lock errors appear during concurrent writes](https://help.salesforce.com/s/articleView?id=000387767&type=1?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide), especially when multiple records share the same parent. Group updates by parent ID to reduce contention. - [Quota burns fast if you skip /limits checks before large jobs](https://help.salesforce.com/s/articleView?id=sales.cpq_large_quote_performance.htm&type=5) ## Bulk v2: Built for volume, not speed [Bulk v2](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_intro.htm?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) is optimized for high-throughput operations. It accepts files up to 150 MB, slices them into 10,000-record batches, and processes them asynchronously. This rail is ideal for large backfills, periodic usage syncs, or ETL jobs. But the async nature introduces lag, and monitoring is more complex than with REST. ### Common gotchas for Bulk v2: - Job size limits of 150 MB compressed - Partial failures logged silently; always review job results - Retries require smart deduplication logic to avoid creating duplicates When Bulk v2 jobs fail, the errors often go unnoticed because the job can complete with a “Success” status even if thousands of records fail silently. Without careful monitoring and deduplication logic, retries can easily insert duplicates or leave data gaps. ## CDC: Real-time updates without polling [Change Data Capture](https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/intro_stream.htm) (CDC) is Salesforce’s event-driven API. It sends updates within seconds of a record change and does not consume traditional API limits. This makes it a strong fit for workflows driven by AI agents or product logic that must respond in real time. Unlike REST or Bulk, CDC works by subscription. You connect to channels like `/data/OpportunityChangeEvent` and receive compact payloads on every update. ### Key risks for CDC APIs: - CDC events are only retained for 72 hours - Replay IDs must be persisted in durable storage - Gaps in CDC delivery must be recovered using REST queries ## Matching APIs to your integration patterns | **Use Case** | **Best API** | **Reason** | | --- | --- | --- | | User clicks “Save” to update a record | REST | Provides synchronous, low-latency feedback suitable for interactive actions | | Nightly updates of all Leads in Salesforce | Bulk v2 | Handles high volume asynchronously without burning through REST quota | | Real-time updates for AI agents | CDC | Delivers event-driven updates within seconds, without polling or quota cost | Each API works well for the scenario it was built for. Problems appear when engineers try to force a one-size-fits-all solution. **Ampersand monitors job type, quota headroom, and latency sensitivity to choose the right rail automatically, saving developers time and eliminating the need for custom routing logic.** [Learn more in our documentation → ](https://docs.withampersand.com/overview?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) ## Ampersand automates rail selection Manually managing API rail decisions across environments is brittle and error-prone. [Ampersand eliminates that burden by selecting the correct rail for each integration job and analyzing:](https://docs.withampersand.com/customer-guides/salesforce#1-verify-your-salesforce-edition-supports-api-access?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) - [Record volume and payload size](https://docs.withampersand.com/subscribe-actions#specify-fields-to-watch?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) - [Expected delivery schedule](https://docs.withampersand.com/read-actions#defining-reads?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) - [Current API usage and quota trends](https://docs.withampersand.com/customer-guides/salesforce#3-check-api-access-control-settings?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) - [Failure history and retry state](https://docs.withampersand.com/proxy-actions#use-ampersand-to-manage-api-rate-limits?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) For example: If quota falls below safe thresholds, Ampersand can be set to throttle or reschedule non-critical jobs. This happens without redeploys, manual rewrites, or emergency triage. Ampersand monitors job type, quota headroom, and latency sensitivity to choose the right rail automatically. This saves developers time and eliminates the need for custom routing logic. ## Take-aways & next steps Salesforce’s APIs were not built with AI agents in mind. They assume batch workflows and occasional updates. Today’s integrations demand faster reactions, higher concurrency, and smarter decisions. Ampersand is a smart integration layer that uses the right API for the job. That means fewer quota overruns, better user experience, and less time spent fixing broken syncs. Build your product logic. Let Ampersand handle the APIs. [**Explore more in the docs →**](https://docs.withampersand.com/quickstart?utm_source=blog&utm_medium=dev_post&utm_campaign=salesforce_integration_guide) **Fix quota overruns, reduce latency, and ship faster with Ampersand.**