# Choosing the Salesforce API for a requirement

*Integration Architect Study Guide · Design Integration Solutions · Last updated October 16, 2026 · https://www.certifyforce.com/study-guide/integration-architect/design-integration-solutions/choosing-the-salesforce-api-for-a-requirement*

How to pick the Salesforce API from volume, timing, payload and audience: REST vs SOAP and the two WSDLs, the Composite family, Bulk API 2.0 vs the original Bulk API (Serial mode, automatic PK chunking, queryAll), Pub/Sub API vs Streaming API, Metadata and Tooling API, UI, Connect, GraphQL and Analytics APIs, the Limits resource, and when custom Apex REST is justified.

- Certification: Salesforce Integration Architect
- Exam section: Design Integration Solutions
- Study guide: https://www.certifyforce.com/study-guide/integration-architect

**Official exam objective:**

> Given a use case that includes technical requirements, constraints, or drivers, specify the appropriate Salesforce application programming interface(s) (API) for the proposed solution.

## What the exam expects

- Choose between REST and SOAP, and between the Enterprise and Partner WSDLs, from the client's skills and how many orgs it serves.
- Pick the Composite family member from transaction, reference and size needs, and switch to Bulk API 2.0 above about 2,000 records.
- Know when the original Bulk API still wins (Serial mode) and what Bulk API 2.0 does automatically (PK chunking), plus queryAll for deleted records.
- Specify Pub/Sub API for new event subscribers and name the APIs that can publish events.
- Match specialist APIs to audiences: Metadata, Tooling, User Interface, Connect REST, GraphQL, Analytics REST, and the REST Limits resource.
- Justify a custom Apex REST or SOAP service only when standard APIs can't express the logic.

Key terms: **Composite** (up to 25 dependent subrequests in one call, optionally all-or-nothing); **reference ID** (passes one subrequest's output to a later one); **PK chunking** (splitting a large query by record ID ranges); **Serial mode** (original Bulk API concurrency mode that processes batches one at a time); **Partner WSDL** (loosely typed WSDL not tied to one org).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Bulk threshold | Over 2,000 records: a good Bulk API 2.0 candidate; fewer: bulkified REST or SOAP | [Introduction to Bulk API 2.0 and Bulk API](https://developer.salesforce.com/docs/platform/api-asynch/guide/asynch-api-intro.html) |
| PK chunking | Automatic in Bulk API 2.0 query jobs; manual in original Bulk API | [Bulk API 2.0 vs Bulk API](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_diff_two_versions.htm) |
| Serial mode | Original Bulk API only; Bulk API 2.0 is always parallel | [JobInfo](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_reference_jobinfo.htm), [Integration Patterns Overview](https://architect.salesforce.com/docs/architect/fundamentals/guide/integration-patterns.html) |
| queryAll | Adds merged/deleted records and archived Tasks and Events | [Create a Query Job](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/query_create_job.htm) |
| Composite | 25 subrequests, one API call, reference IDs | [Composite](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm) |
| Composite Batch | Independent subrequests; no rollback of earlier commits | [Composite Batch](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_batch.htm) |
| Composite Graph | 500 nodes; all-or-nothing per graph | [Using Composite Graphs](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_graph_introduction.htm) |
| Event publishing APIs | SOAP, REST, Bulk API 2.0, or Pub/Sub API | [Publish Event Messages](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_publish_api.htm) |
| Limits resource | Max and remaining allocations, accurate within five minutes | [Limits (REST API)](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_limits.htm) |

## Check yourself

- Why does a three-record atomic create with a shared Account Id use Composite instead of Composite Batch?
- When is the original Bulk API still the right choice over Bulk API 2.0?
- Why would a native mobile app use User Interface API instead of sObject resources?
- Which operation makes a bulk extract include deleted records?

## Sources

- [Which API Do I Use?](https://help.salesforce.com/s/articleView?id=platform.integrate_what_is_api.htm&type=5)
- [Integration Patterns Overview](https://architect.salesforce.com/docs/architect/fundamentals/guide/integration-patterns.html)
- [Introduction to Bulk API 2.0 and Bulk API](https://developer.salesforce.com/docs/platform/api-asynch/guide/asynch-api-intro.html)
- [What's the Difference Between Bulk API 2.0 and Bulk API?](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/bulk_common_diff_two_versions.htm)
- [JobInfo](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_reference_jobinfo.htm)
- [Create a Query Job](https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/query_create_job.htm)
- [Send Multiple Requests Using Composite](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_composite_post.htm)
- [Composite Batch](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_batch.htm)
- [Using Composite Graphs](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_graph_introduction.htm)
- [Update Records Using sObject Collections](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_composite_sobjects_collections_update.htm)
- [Getting Started with Streaming API](https://developer.salesforce.com/docs/platform/api-streaming/guide/intro-stream.html)
- [Publish Event Messages with Salesforce APIs](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_publish_api.htm)
- [Limits (REST API)](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_limits.htm)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 16 linked practice questions, and unlimited timed mock exams are included with the Integration Architect pack (USD $19): https://www.certifyforce.com/practice-exams
