Accepts an array of custom objects to be created or updated, up to a maximum of 100 per call, and returns the outcome (status) of the operation (CREATED, UPDATED, FAILED, UNCHANGED, SKIPPED) and the custom object(s) that were processed. The API can be called in one of three operation modes:

  1. INSERT – only insert new objects, skip existing objects
  2. UPDATE – only update existing objects, skip new objects
  3. UPSERT – insert new objects and update existing objects

In a single API call some updates may succeed and some may fail. An error message will be returned for each failure.

For Custom Objects provisioned with the new Custom Object UI, only fields which are designated as dedupe fields in the UI may be passed as attributes in CustomObjKeyList. Link fields which are not dedupe fields must be passed as an attribute in customObjAttributeList.


Field Name



operation Required “INSERT”, “UPDATE” or “UPSERT”
objectTypeName Required Name of the Custom Object
customObjectList->customObject->customObjKeyList->attribute Required The attribute is a key/value pair that is used to identify the custom object. You can have multiple attributes in the customObjKeyList
customObjectList->customObject->customObjAttributeList->attribute Required Key/value pairs, where the name is the field name and value is the value that you want to insert into the customObject

Request XML

Response XML

Sample Code – PHP

Sample Code – Java

Sample Code – Ruby