Salesforce Integration – API Usage & Call Counts
1. Objects We Pull
Category | Object Details |
|---|---|
Core CRM Objects | Account, Contact, Lead, Opportunity, Campaign, CampaignMember, User, Product2, RecordType |
Pipeline Objects | OpportunityLineItem, OpportunityStage, OpportunityPartner, OpportunityContactRole, Period, ForecastingFact, ForecastingItem, ForecastingType |
History Objects | LeadHistory, OpportunityHistory, OpportunityFieldHistory, AccountHistory, CampaignHistory, ContactHistory |
Other Objects | Task, Event, EmailMessage, EmailMessageRelation, LeadStatus, CampaignInfluence, UserRole |
Custom Objects | <Any custom object required for reporting> |
2. APIs Used
2.1 Metadata API (per object)
Endpoint:
GET /services/data/vXX.X/sobjects/<ObjectName>/describe
Purpose:
Fetch fields and data types
Determine allowable filters
Build export query dynamically
Calls per Object:
1 call per object per day
2.2 Bulk API 2.0 – Create Query Job
Endpoint:
POST /services/data/vXX.X/jobs/query
Purpose:
Creates the bulk job with a SOQL query
Returns the jobId
Calls per Object:
1 call per object per sync
2.3 Bulk API 2.0 – Poll Job Status
Endpoint:
GET /services/data/vXX.X/jobs/query/<jobId>
Purpose:
Check job state (Queued → InProgress → Completed → Failed)
Calls per Object:
Typically 5–12 polls per job
2.4 Bulk API 2.0 – Get Results Locator
Endpoint:
GET /services/data/vXX.X/jobs/query/<jobId>/results
or
GET /services/data/vXX.X/jobs/query/<jobId>/results?locator=<locator>
Purpose:
Retrieve result locators for the completed job
Calls per Object:
1 call per job
1 call per locator
2.5 Bulk API 2.0 – Download Result Chunks
Endpoint:
GET /services/data/vXX.X/jobs/query/<jobId>/results?locator=<locator>
Purpose:
Download the actual CSV data chunks
Calls per Object:
1–6 calls depending on number of locators
3. Call Volume Summary (Per Object Per Day)
Metadata Describe Call: 1
Create Job: 1
Polling: 5–12
Get Locators: 1
Download Chunks: 1–6
Total Estimated Calls per Object:
~9 to ~21 calls per object per day