Using the API to update contacts in my contact lists when I started receiving this error. Most of my users have source ACTION_BY_OWNER, but a few stragglers that existed in the system are ACTION_BY_VISITOR.
What does this mean exactly? All I'm doing is modifying contact information programmatically (name, address, etc). I've tried sending an empty array of list_id's as well as sending a valid one.
I was able to get past this message -- it turns out I was sending action_by=ACTION_BY_VISITOR as a querystring parameter to the updateContact call. I removed this parameter (effectively setting it to ACTION_BY_OWNER) and the call succeeded.
To be clear, I was still submitting a Contact object with the "origin" field set to ACTION_BY_VISITOR. I just changed the action_by parameter in the call.
So what exactly is happening? Under what circumstances do you get this error message?
Action by visitor indicates that the contact themself is making the change. Action by owner indicates that the accountholder is. Some internal logic on our side makes it so that if a contact is updated by visitor (themselves) to be on 0 lists, the action fails. That's fine for an accountholder to do, though.
Our contacts team decided that it didn't make sense for a contact to update themselves to be on no lists. That would be equivalent to saying "I want to unsubscribe." In that case, you should make a DELETE call to unsubscribe the contact from the account.
Sorry for the confusion!
Partner API Support Engineer