CalryOTA Docs
Listing

Request a presigned upload URL for a listing video

Creates a pending video and returns a presigned S3 PUT URL (valid 30 minutes). Upload the MP4 directly with the returned headers, then confirm it via the register endpoint. Only MP4 up to 100 MB is accepted; the declared size is signed into the URL. Optionally declare posterSizeBytes to also receive posterUploadUrl for a captured poster frame (JPEG, max 5 MB) — uploaded next to the video and adopted as its posterUrl at registration.

POST
/api/v1/listing/{id}/videos/upload-url

Authorization

x-calry-api-key
x-calry-api-key<token>

In: header

Path Parameters

id*string

Unique identifier of the listing

Header Parameters

x-calry-tenant-id?string

Optional tenant ID to specify which tenant to operate as. If not provided, the default tenant will be used.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/api/v1/listing/123e4567-e89b-12d3-a456-426614174000/videos/upload-url" \  -H "Content-Type: application/json" \  -d '{    "contentType": "video/mp4",    "sizeBytes": 52428800  }'
{
  "videoId": "123e4567-e89b-12d3-a456-426614174000",
  "uploadUrl": "string",
  "expiresAt": "2026-09-11T12:30:00.000Z",
  "headers": {
    "Content-Type": "video/mp4"
  },
  "posterUploadUrl": "string"
}
{
  "timestamp": "2025-03-05T11:45:49.631Z",
  "path": "<URL_PATH>",
  "message": "Authentication failed",
  "details": []
}
Empty
Empty