Why do I keep having [400] Invalid photo format error when trying to update a contact to add a photo in Google People API?

Viewed 52

When trying to update a contact in Google People API to add a profile image (/v1/people/{{RessourceName}}/:updateContactPhoto PATCH), I keep having a 400 error: Invalid photo format. Do you have any idea what am I doing wrong or what exactly this error message could mean ?

Here is an example of the request body:

{
    "photoBytes": "aHR0cHM6Ly9zMy51cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9zZWN1cmUubm90aW9uLXN0YXRpYy5jb20vN2ZkNmY2YzMtZDM1Yi00YTUzLTkyMTItYjA5Y2JmMWE1NjBjL3RsY2hhcmdlbWVudC5qcGc/WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ29udGVudC1TaGEyNTY9VU5TSUdORUQtUEFZTE9BRCZYLUFtei1DcmVkZW50aWFsPUFLSUFUNzNMMkc0NUVJUFQzWDQ1JTJGMjAyMjAzMjIlMkZ1cy13ZXN0LTIlMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjIwMzIyVDE4MTIxMlomWC1BbXotRXhwaXJlcz0zNjAwJlgtQW16LVNpZ25hdHVyZT04ZGU4OGI2ZTU0NGQ2NTRjNGE0ODhhOTljMTljZjcxNDEyOTk5OWQ2NGQ3YzgwYmZkY2Y1ODYyNDcwMmQxNzFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZ4LWlkPUdldE9iamVjdA==",
    "personFields": "addresses,ageRanges,biographies,birthdays,calendarUrls,clientData,coverPhotos,emailAddresses,events,externalIds,genders,imClients,interests,locales,locations,memberships,metadata,miscKeywords,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,sipAddresses,skills,urls,userDefined,fileAses"
}

I have tried both with content-type "multipart/form-data" and "application/json" but I does not change anything.

This is a typical response body I keep having but I do not know how to interpret it:

{
    "error": {
        "code": 400,
        "message": "Invalid photo format",
        "status": "INVALID_ARGUMENT"
    }
}

Can you please help me into solving this issue, please ?

1 Answers

Decoding your photoBytes base64 value results in a url that starts with: https://s3.us-west-2.amazonaws.com/ (and that url returns "AccessDenied" but that's not the issue)

You should not be sending a url to a photo but the actual raw photo bytes as the documentation states.

Try sending this as an example:

{
    "photoBytes": "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",
    "personFields": "addresses,ageRanges,biographies,birthdays,calendarUrls,clientData,coverPhotos,emailAddresses,events,externalIds,genders,imClients,interests,locales,locations,memberships,metadata,miscKeywords,names,nicknames,occupations,organizations,phoneNumbers,photos,relations,sipAddresses,skills,urls,userDefined,fileAses"
}
Related