Our Salesforce environment has several API users to connect with various system. We didn't set them up with Streaming APIs (I would like to..), so they run at regular intervals. Because we want to ensure they run synchronously we need to have them on different users. This results in 5 or 6 different API users.

We currently have them setup with normal Salesforce licenses that the rest of our users use - this can get costly and isn't scale-able. Is there a best practice and what is it for having multiple API Users? Should I leave them as normal salesforce licensed users? Should I/Can I give them Force.com platform licenses instead? Is there any other solution that I'm missing?

We are on an Enterprise Edition with Service Cloud and Sales Cloud.

  • 1
    What do you mean by "Because we want to ensure they run synchronously we need to have them on different users."? A single user can be logged in multiple times - there's no technical reason that multiple API processes can't share a single user. While there can be good reasons to use separate users in order to see what process modified a record, if it's not sustainable from a cost perspective, you could consolidate your API users onto a single (or at least fewer) licenses. Jan 31, 2014 at 4:40
  • Really? Maybe I'm missing something then. We've had multiple syncs on a single user and, although I don't remember the exact error, we receive an error stating invalid session or something to the effect of process being incomplete due to it already being in use. It does make sense that a single user can log in multiple times, we can do it on the UI so makes sense for API... might be the way our code is written then - any idea about the invalid session while not using streaming APIs?
    – zainogj
    Jan 31, 2014 at 12:22
  • @ThomasTaylor, Found it - here is an error provided from one of our vendors we connect with: 'Log into na*-api.salesforce.com as *****@mbopartners.com (); log.Exception Message: INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session. Session not found, missing session key:... ' Asterisks added for privacy.
    – zainogj
    Jan 31, 2014 at 12:30
  • 2
    Per [this answer from SF Help]( help.salesforce.com/apex/…) they do recommend separate users for separate integrations. But [per this discussion]( developer.salesforce.com/forums/…), if your integrations refrain from calling logout(), you reduce or eliminate the issue of cancelled sessions. Jan 31, 2014 at 14:29

1 Answer 1


It really depends on what the API users are doing to interact with the salesforce system. The enterprise platform licenses have API access, but, if you need to interact with the Opportunity record, for example, they won't work. If they are connecting with the remote system to copy custom object data, then the platform license might work for you.

Here is a link to the Salesforce Licensing page Just look at the platform tab. Also, there are more detailed downloadable PDFs at the bottom of each section.

  • Thanks @JimRae - so it sounds like I what would expect, what ever access can be granted to the Platform User is what permissions the API user would have. Does Salesforce have any documentation on what those licenses don't have access to? Do you happen to have a link to it if it does exist?
    – zainogj
    Jan 31, 2014 at 12:35
  • I added more details and a link to my response.
    – JimRae
    Jan 31, 2014 at 12:50
  • 1
    Thanks again - and for anyone else, I also found this question which seems to provide exactly what is not available in Platform Licenses.
    – zainogj
    Jan 31, 2014 at 13:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .