Upload a source video
Starts the upload of the video whose person will be swapped for a persona. Returns a media_id and a presigned PUT URL: PUT the raw bytes to upload_url with the same Content-Type, then call POST /personas/sources/upload/complete.
MP4 or MOV only, within video_limits of GET /personas/catalog. The video goes to the workspace library and counts toward its storage. A video already in the library needs no upload: use its id as media_id.
Authorization
apiKey In: header
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/personas/sources/upload" \ -H "Content-Type: application/json" \ -d '{ "file_name": "string", "file_size": 0 }'{ "media_id": "string", "upload_url": "string", "expires_in": 0}Price a swap video GET
Measures a library video and returns what swapping its person for a persona costs at the given `quality`. Nothing is charged. Pass the returned `credits` to `POST /personas/{id}/videos` with `type: swap` and the same `quality`, which refuses with `PRICE_CHANGED` if the price is different. `replace` does not change the price. `VIDEO_DURATION_OUT_OF_RANGE` and `VIDEO_UNSUPPORTED` (format, size or resolution) follow `video_limits` of `GET /personas/catalog` for that `quality`; a video refused at `standard` may still fit `high`.
Complete a source video upload POST
Registers the uploaded video in the library. Call it after the PUT to `upload_url` returned `200`, then price the video with `GET /personas/swap/quote`.