Saltar al contenido principal
POST
/
asset
/
request-upload
TypeScript
import { Livepeer } from "livepeer";
import { TranscodeProfileEncoder, TranscodeProfileProfile, Type } from "livepeer/models/components";

const livepeer = new Livepeer({
  apiKey: "<YOUR_BEARER_TOKEN_HERE>",
});

async function run() {
  const result = await livepeer.asset.create({
    name: "filename.mp4",
    staticMp4: true,
    playbackPolicy: {
      type: Type.Webhook,
      webhookId: "1bde4o2i6xycudoy",
      webhookContext: {
        "streamerId": "my-custom-id",
      },
      refreshInterval: 600,
    },
    profiles: [
      {
        width: 1280,
        name: "720p",
        height: 720,
        bitrate: 3000000,
        quality: 23,
        fps: 30,
        fpsDen: 1,
        gop: "2",
        profile: TranscodeProfileProfile.H264Baseline,
        encoder: TranscodeProfileEncoder.H264,
      },
    ],
  });

  // Handle the result
  console.log(result);
}

run();
{
  "url": "https://origin.livepeer.com/api/asset/upload/direct?token=eyJhbGciOiJIUzI1NiJ9.eyJtc2ciOiJoZWxsbyBoYWNrZXIsIHRoZXJlJ3Mgbm90aGluZyBmb3IgeW91IGhlcmUg8J-YhiJ9.1YDjmXsqLcgNyMSzT4kXl_kIni46_EuGX_xfqmC7e0Q",
  "tusEndpoint": "https://origin.livepeer.com/api/asset/upload/tus?token=eyJhbGciOiJIUzI1NiJ9.eyJtc2ciOiJoZWxsbyBoYWNrZXIsIHRoZXJlJ3Mgbm90aGluZyBmb3IgeW91IGhlcmUg8J-YhiJ9.1YDjmXsqLcgNyMSzT4kXl_kIni46_EuGX_xfqmC7e0Q",
  "asset": {
    "id": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
    "source": {
      "type": "url",
      "url": "<string>",
      "gatewayUrl": "<string>",
      "encryption": "<unknown>"
    },
    "name": "filename.mp4",
    "type": "video",
    "playbackId": "eaw4nk06ts2d0mzb",
    "userId": "66E2161C-7670-4D05-B71D-DA2D6979556F",
    "playbackUrl": "https://livepeercdn.com/asset/ea03f37e-f861-4cdd-b495-0e60b6d753ad/index.m3u8",
    "downloadUrl": "https://livepeercdn.com/asset/eaw4nk06ts2d0mzb/video/download.mp4",
    "playbackPolicy": {
      "type": "webhook",
      "webhookId": "1bde4o2i6xycudoy",
      "webhookContext": {
        "streamerId": "my-custom-id"
      },
      "refreshInterval": 600,
      "allowedOrigins": [
        "<string>"
      ]
    },
    "creatorId": {
      "type": "unverified",
      "value": "user123"
    },
    "profiles": [
      {
        "bitrate": 3000000,
        "width": 1280,
        "name": "720p",
        "height": 720,
        "quality": 23,
        "fps": 30,
        "fpsDen": 1,
        "gop": 2,
        "profile": "H264Baseline",
        "encoder": "H.264"
      }
    ],
    "storage": {
      "ipfs": {
        "spec": {},
        "nftMetadata": {
          "cid": "<string>",
          "url": "<string>",
          "gatewayUrl": "<string>"
        },
        "updatedAt": 1587667174725
      },
      "status": {
        "phase": "ready",
        "tasks": {
          "pending": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
          "last": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
          "failed": "09F8B46C-61A0-4254-9875-F71F4C605BC7"
        },
        "progress": 0.5,
        "errorMessage": "Failed to update storage"
      }
    },
    "status": {
      "phase": "uploading",
      "updatedAt": 1587667174725,
      "progress": 123,
      "errorMessage": "<string>"
    },
    "projectId": "aac12556-4d65-4d34-9fb6-d1f0985eb0a9",
    "createdAt": 1587667174725,
    "createdByTokenName": "<string>",
    "size": 84934509,
    "hash": [
      {
        "hash": "9b560b28b85378a5004117539196ab24e21bbd75b0e9eb1a8bc7c5fd80dc5b57",
        "algorithm": "sha256"
      }
    ],
    "videoSpec": {
      "format": "mp4",
      "duration": 23.8328,
      "bitrate": 1000000,
      "tracks": [
        {
          "type": "video",
          "codec": "aac",
          "startTime": 23.8238,
          "duration": 23.8238,
          "bitrate": 1000000,
          "width": 1920,
          "height": 1080,
          "pixelFormat": "yuv420p",
          "fps": 30,
          "channels": 2,
          "sampleRate": 44100,
          "bitDepth": 16
        }
      ]
    }
  },
  "task": {
    "id": "34d7618e-fd42-4798-acf5-19504616a11e"
  }
}

Subir un activo

Autorizaciones

Authorization
string
header
requerido

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Cuerpo

application/json
name
string
requerido

The name of the asset. This is not necessarily the filename - it can be a custom name or title.

Ejemplo:

"filename.mp4"

staticMp4
boolean

Whether to generate MP4s for the asset.

Ejemplo:

true

playbackPolicy
object

Whether the playback policy for an asset or stream is public or signed

creatorId
storage
object
encryption
object
c2pa
boolean

Decides if the output video should include C2PA signature

profiles
object[] | null
targetSegmentSizeSecs
number

How many seconds the duration of each output segment should be

Respuesta

Success

url
string
requerido

The direct upload endpoint for which supports PUT requests. It is recommended to use the Tus endpoint for a better upload experience.

Ejemplo:

"https://origin.livepeer.com/api/asset/upload/direct?token=eyJhbGciOiJIUzI1NiJ9.eyJtc2ciOiJoZWxsbyBoYWNrZXIsIHRoZXJlJ3Mgbm90aGluZyBmb3IgeW91IGhlcmUg8J-YhiJ9.1YDjmXsqLcgNyMSzT4kXl_kIni46_EuGX_xfqmC7e0Q"

tusEndpoint
string
requerido

The Tus-compatible endpoint for resumable uploads. This is the recommended way to upload assets. See the Tus-js client for more information.

Ejemplo:

"https://origin.livepeer.com/api/asset/upload/tus?token=eyJhbGciOiJIUzI1NiJ9.eyJtc2ciOiJoZWxsbyBoYWNrZXIsIHRoZXJlJ3Mgbm90aGluZyBmb3IgeW91IGhlcmUg8J-YhiJ9.1YDjmXsqLcgNyMSzT4kXl_kIni46_EuGX_xfqmC7e0Q"

asset
object
requerido
task
object
requerido
Last modified on March 1, 2026