'LinkedIn API UGC post success but not showing?

I believe I am successfully posting a new post to the endpoint

 https://api.linkedin.com/v2/ugcPosts

using (similar to)

{
    "author": "urn:li:organization:1234567",
    "lifecycleState": "PUBLISHED",
    "specificContent": {
        "com.linkedin.ugc.ShareContent": {            
            "shareCommentary": {
                "attributes": [],
                "text": "Some share text"
            }
        }
    },
    "visibility": {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
    }
}

The response I get is

 {"id":"urn:li:share:01234567890123456789"}

But then when I go to the company page, the post is not visible. Note that the IDs are redacted here. Is there another step I have to take?

edit: I went to verify the post with the endpoint https://api.linkedin.com/v2/ugcPosts/[redacted URN]?viewContext=AUTHOR and my post is a success

{
  "lifecycleState": "PUBLISHED",
  "specificContent": {
    "com.linkedin.ugc.ShareContent": {
      "shareCommentary": {
        "inferredLocale": "en_US",
        "attributes": [],
        "text": "Test article sharing article on LinkedIn API , please ignore"
      },
      "media": [
        {
          "media": "urn:li:digitalmediaAsset:XXXXXXXXXXXXXX",
          "title": {
            "attributes": [],
            "text": "image"
          },
          "thumbnails": [],
          "status": "READY"
        }
      ],
      "shareFeatures": {
        "hashtags": []
      },
      "shareMediaCategory": "IMAGE"
    }
  },
  "visibility": {
    "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
  },
  "created": {
    "actor": "urn:li:person:XXXXXXXXXXXXXX",
    "time": 1649285262053
  },
  "author": "urn:li:organization:XXXXXXXXXXXXXX",
  "clientApplication": "urn:li:developerApplication:XXXXXXXXXXXXXX",
  "versionTag": "0",
  "id": "urn:li:share:XXXXXXXXXXXXXX",
  "firstPublishedAt": 1649285262053,
  "lastModified": {
    "actor": "urn:li:csUser:7",
    "time": 1649285262122
  },
  "distribution": {
    "externalDistributionChannels": [],
    "distributedViaFollowFeed": true,
    "feedDistribution": "MAIN_FEED"
  },
  "contentCertificationRecord": "{\"spamRestriction\":{\"classifications\":[],\"contentQualityClassifications\":[],\"systemName\":\"MACHINE_SYNC\",\"lowQuality\":false,\"contentClassificationTrackingId\":\"073BB82AD64A7608E3F142B6D0362E3D\",\"contentRelevanceClassifications\":[],\"spam\":false},\"originCountryCode\":\"ca\",\"modifiedAt\":1649285262024,\"contentHash\":{\"extractedContentMd5Hash\":\"0725A7E31B109EB4CFB84D2648CE3EC8\",\"lastModifiedAt\":1649285262023}}"
}

What am I missing here?? Why is it now showing on LinkedIn??

edit2 : went ahead and tried to share the post again, now all the posts are gone from the company page when viewed as admin, but showing (except the API posts) as a member.... How broken is this API ??????

broken



Solution 1:[1]

I will answer my own post. Uploads using CurlFile DO NOT WORK, you have to use Guzzle... Once the upload & publishing are done, the feed will unbreak itself.. The company page will be broken if the endpoint is still waiting for upload while you post.

    $client = new \GuzzleHttp\Client();
    $res = $client->request('PUT', $__url, [
            'headers' => [
                'Authorization' => 'Bearer ' . $__token
            ],
            'body' => fopen($__file, 'r')       
        ]
    );        
    if($res){        
        $res = json_decode($res->getBody());            
    }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1