Failing to change avatar using Discourse API

AI-generated summary

The user EGreg is having trouble changing a user’s avatar using the Discourse API. The request is returning a {"failed":"FAILED"} response, despite following the API documentation and having a global API key.

EGreg also mentions that links in user descriptions and websites are not clickable after setting them via the API. Moin suggests this might be due to the user not having reached trust level 1, which prevents spam.

EGreg asks if it’s possible to set a user’s trust level via API, and Moin provides some resources indicating it is possible.

EGreg eventually solves the original problem by turning off “SSO overrides avatar” and successfully upgrades the user’s trust level via the API, causing the full summary box to appear.

I have an API key that has “Global” access, for “All Users”.

I do this:

$updateAvatarUrl = sprintf("%s/u/%s/preferences/avatar/pick.json", $this->apiHost, $username);
$headers = array(
    "Api-Key: ".$this->apiKey,
    "Api-Username: ".$this->apiUsername
);
$data = array(
    'upload_id' => $uploadId,
    'type' => 'uploaded'
);
$response = Q_Utils::put($updateAvatarUrl, $data, null, null, $headers);

But the result I get back is:

{"failed":"FAILED"}

I tried also sending it as application/json. Here is the full CURL info:

$url = 'https://community.intercoin.app/u/fdhsjkgfs_dghjkl';

Headers:
0:
"Host: community.intercoin.app"
1:
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (K HTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
2:
"Content-Type: application/x-www-form-urlencoded"
3:
"Content-Length: 28"
4:
"Api-Key: 3cf975095fd50e22e3631dc916c6d2c7694419ed421338dd7bba432ba1e71417"
5:
"Api-Username: system"

body:

upload_id=2159&type=uploaded

You can see that Profile - fdhsjkgfs_dghjkl - Intercoin exists.

The upload ID indeed exists too, this is what I get after I do the upload:

{
  "id": 2159,
  "url": "https://community.intercoin.app/uploads/intercoin/original/2X/c/ce6121fe1571faa6c41ad28afdf6c30939ffbc56.png",
  "original_filename": "400.png",
  "filesize": 20636,
  "width": 360,
  "height": 360,
  "thumbnail_width": 360,
  "thumbnail_height": 360,
  "extension": "png",
  "short_url": "upload://trIsPeqspDPRwbMsOnjtDCBBMwK.png",
  "short_path": "/uploads/short-url/trIsPeqspDPRwbMsOnjtDCBBMwK.png",
  "retain_hours": null,
  "human_filesize": "20.2 KB"
}

So what is the problem? I followed what the docs say…

And also, for some reason, the links in the description and website are not clickable after I set them using CURL:

But on other summary boxes, they are. With the same URLs.

What am I doing wrong, there?

        Q_Utils::put($this->apiHost."/u/$username.json", array(
            'title' => 'Forum Engagement Bot',
            'bio_raw' => 'Powered by https://engageusers.ai',
            'website' => 'https://engageusers.ai'
        ), null, null, $headers);

And finally .. is there any way in forum control panel to make the summary boxes appear fully to the public (with bio, website, etc.) rather than just with limited info?

Maybe that’s because these users reached trust level 1. To prevent spam, the links of new users do not work.

Is it possible to set trust level of a user via API?

I just searched here and found

So it seems possible.

By the way, the answer to the original question was that “SSO overrides avatar” was turned on. Turning it off solved the problem.

I was also able to successfully upgrade the trust level via the API and this causes the full summary box to appear. Thanks, fam!