place.stream.media.publishVideo

did:web:stream.place

Documentation

Publish a place.stream.video record for a finished upload, server-side. The caller supplies the record it would otherwise putRecord itself; the server overrides the fields it is authoritative about (source tracks and durationMs, taken from the processed upload) and, if the record carries no thumb, generates one from the video and attaches it. The record is written to the authenticated user's repo.

main procedure

Publish a place.stream.video record for a finished upload, server-side. The caller supplies the record it would otherwise putRecord itself; the server overrides the fields it is authoritative about (source tracks and durationMs, taken from the processed upload) and, if the record carries no thumb, generates one from the video and attaches it. The record is written to the authenticated user's repo.

Input

Encodingapplication/json
record refplace.stream.video Required

A place.stream.video record. The server overrides `source` and `durationMs` from the processed upload, and fills in `thumb` with a generated thumbnail when the supplied record has none.

uploadId string Required

The upload ID returned by place.stream.media.createUpload. Its processing must be complete (status 'done').

Output

Encodingapplication/json
cid stringcid Required

CID of the created place.stream.video record.

uri stringat-uri Required

AT-URI of the created place.stream.video record.

Errors

UploadNotFound No upload with the given ID belongs to the authenticated user.
UploadNotReady The upload has not finished processing, so its tracks aren't available yet.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "uploadId",
        "record"
      ],
      "properties": {
        "record": {
          "ref": "place.stream.video",
          "type": "ref",
          "description": "A place.stream.video record. The server overrides `source` and `durationMs` from the processed upload, and fills in `thumb` with a generated thumbnail when the supplied record has none."
        },
        "uploadId": {
          "type": "string",
          "description": "The upload ID returned by place.stream.media.createUpload. Its processing must be complete (status 'done')."
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "UploadNotFound",
      "description": "No upload with the given ID belongs to the authenticated user."
    },
    {
      "name": "UploadNotReady",
      "description": "The upload has not finished processing, so its tracks aren't available yet."
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "uri",
        "cid"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid",
          "description": "CID of the created place.stream.video record."
        },
        "uri": {
          "type": "string",
          "format": "at-uri",
          "description": "AT-URI of the created place.stream.video record."
        }
      }
    },
    "encoding": "application/json"
  },
  "parameters": null,
  "description": "Publish a place.stream.video record for a finished upload, server-side. The caller supplies the record it would otherwise putRecord itself; the server overrides the fields it is authoritative about (source tracks and durationMs, taken from the processed upload) and, if the record carries no thumb, generates one from the video and attaches it. The record is written to the authenticated user's repo."
}

Lexicon Garden

@