LinkedIn API: upload video returns 500

Viewed 69
3 Answers

i have been in the same situation as you few days ago.

the solution is :

if your file is more then 4MB you must divide your file. and in the initialize upload you will get a list of uploadUrls. so use each link with parts of file.

Thanks @ARGOUBI Sofien for your answer. I found my mistake: the fileSizeBytes value was wrong and gave me only one link for the upload. With the good value, I have several endpoints.

So, I'm initializing upload with that body:

    {
      "initializeUploadRequest": {
        "owner": "urn:li:organization:MY_ID",
        "fileSizeBytes": 10903312,
        "uploadCaptions": false,
        "uploadThumbnail": true
      }
    }

I got this response:

{
    "value": {
        "uploadUrlsExpireAt": 1657618793558,
        "video": "urn:li:video:C4E10AQEDRhUsYL99HQ",
        "uploadInstructions": [
            {
                "uploadUrl": "https://www.linkedin.com/dms-uploads/C4E10AQEDRhUsYL99HQ/uploadedVideo?sau=aHR0cHM6Ly93d3[...]t3yak1",
                "lastByte": 4194303,
                "firstByte": 0
            },
            {
                "uploadUrl": "https://www.linkedin.com/dms-uploads/C4E10AQEDRhUsYL99HQ/uploadedVideo?sau=aHR0cHM6Ly93d3cub[...]f13yak1",
                "lastByte": 8388607,
                "firstByte": 4194304
            },
            {
                "uploadUrl": "https://www.linkedin.com/dms-uploads/C4E10AQEDRhUsYL99HQ/uploadedVideo?sau=aHR0cHM6Ly93d3cubGlua2V[...]V3yak1",
                "lastByte": 10903311,
                "firstByte": 8388608
            }
        ],
        "uploadToken": "",
        "thumbnailUploadUrl": "https://www.linkedin.com/dms-uploads/C4E10AQEDRhUsYL9[...]mF3yak1"
    }
}

It's look like better ✌️

EDIT

After several tests, the upload is ok when I have only one upload links but I does not get any response from the server when I have several upload URL.

My code:

const uploadPromises: Array<() => Promise<AxiosResponse<void>>> = [];

uploadData.data.value.uploadInstructions.map((uploadInstruction: UploadInstructionType) => {
  const bufferChunk: Buffer = videoStream.data.subarray(uploadInstruction.firstByte, uploadInstruction.lastByte + 1);
  const func = async (): Promise<AxiosResponse<void>> => linkedinRestApiRepository.uploadMedia(uploadInstruction.uploadUrl, bufferChunk, videoContentType, videoContentLength);
  uploadPromises.push(func);
});

let uploadVideoResponses: Array<AxiosResponse<void>>;
try {
  uploadVideoResponses = await series(uploadPromises);
} catch (e) {
  console.error(e);
}

Something is wrong we I have several upload links but I does not know what

in my case i have divide my file buffer into arrayBuffer then you can use map to upload each buffer with the right urlUpload

Related