---
updatedAt: 2026-10-07T10:07:17.000Z
agentTools:
  projectIndex: https://developers.bazaarvoice.com/v1.0-ConversationsAPI/llms.txt
---

# Video Upload

Upload videos for a review.

<Callout icon="🚧" theme="warn">
  ### Only API keys on our **Conversations** platform are eligible to use this API version. Refer to the <a href="/v1.0-ConversationsAPI/docs/platform-api-concepts#platforms" target="_blank" rel="noopener">Platforms</a> section of our [Platform & API Concepts](/v1.0-ConversationsAPI/docs/platform-api-concepts) documentation to learn which platform your API keys are on.
</Callout>

<Callout icon="📘" theme="info">
  ### This example is applicable only for [full submission](/v1.0-ConversationsAPI/docs/full-submission).
</Callout>

<Callout icon="📘" theme="info">
  ### Try out Video Upload API reference [here](https://developers.bazaarvoice.com/v1.0-ConversationsAPI/reference/conversations-upload-video-reference) .
</Callout>

# Examples

The following examples demonstrate common video upload requests. For a complete overview of video uploads, refer to the [Video Upload tutorial](/v1.0-ConversationsAPI/docs/video-upload).

### Upload a video from a file

Videos must be uploaded using HTTP POST.

#### Staging

```http
POST /data/uploadvideo.json?ApiVersion=[latestApiVersion]&ContentType=[review]&PassKey=[API_key] HTTP/1.1  
Host: stgmedia.api.bazaarvoice.com
Content-Length: 71374  
Content-Type: multipart/form-data; boundary=----FormBoundarycSTk3Rd73AEuhGuD  
...      


\----FormBoundaryE19zNvXGzXaLvS5C  
Content-Disposition: form-data; name="video"; filename="your_video.mpeg"                    
  
\---FormBoundaryE19zNvXGzXaLvS5C
```

#### Production

```http
POST /data/uploadvideo.json?ApiVersion=[latestApiVersion]&ContentType=[review]&PassKey=[API_key] HTTP/1.1  
Host: media.api.bazaarvoice.com  
Content-Length: 71374  
Content-Type: multipart/form-data; boundary=----FormBoundarycSTk3Rd73AEuhGuD  
...      


\----FormBoundaryE19zNvXGzXaLvS5C  
Content-Disposition: form-data; name="video"; filename="your_video.mpeg"                          
  
\---FormBoundaryE19zNvXGzXaLvS5C
```

Ellipses (...) in the above example indicate that your app may generate other headers.

## Parameters

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        Name
      </th>

      <th>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        **\[FORMAT]**
      </td>

      <td>
        Response format (JSON).

        :memo: <div style="border: 0.5px solid red; background-color: #ffcccc; width: 70px; text-align: center; color: black; display:inline;"> **Required**</div>

        This field is required in all API requests.
      </td>
    </tr>

    <tr>
      <td>
        **ApiVersion**
      </td>

      <td>
        The API version, e.g., 5.4.

        :memo: <div style="border: 0.5px solid red; background-color: #ffcccc; width: 70px; text-align: center; color: black; display:inline;"> **Required**</div>

        This field is required in all API requests.
      </td>
    </tr>

    <tr>
      <td>
        **ContentType**
      </td>

      <td>
        The content type for which this media is being submitted. Valid values include review.

        :memo: <div style="border: 0.5px solid red; background-color: #ffcccc; width: 70px; text-align: center; color: black; display:inline;"> **Required**</div>

        This field is required in all API requests.
      </td>
    </tr>

    <tr>
      <td>
        **Locale**
      </td>

      <td>
        Locale to display Labels, Configuration, Product Attributes and Category Attributes in. The default value is the locale defined in the display associated with the API key.

        :small_red_triangle: <div style="border: 0.5px solid red; background-color: #ffcccc; width: 70px; text-align: center; color: black; display:inline;"> **Alert**</div>

        Failure to submit this field will result in your content being ineligible for syndication, authenticity or other business processes.
      </td>
    </tr>

    <tr>
      <td>
        **PassKey**
      </td>

      <td>
        An API key is required to authenticate the API user and check permission to access a particular client's data.

        Note that the parameter name is case-sensitive and must be **PassKey**.

        :memo:  <div style="border: 0.5px solid red; background-color: #ffcccc; width: 70px; text-align: center; color: black; display:inline;"> **Required**</div>

        This field is required in all API requests.
      </td>
    </tr>

    <tr>
      <td>
        **Video**
      </td>

      <td>
        A file representing the video to be submitted. Note that the parameter name is case-sensitive and must be lowercase. Use the video parameter to define the video to upload.

        :warning: <div style="border: 0.5px solid yellow; background-color: #ffffcc; width: 70px; text-align: center; color: black; display:inline;"> **Caution**</div>

        This field may be required depending on per-client configurations.
      </td>
    </tr>
  </tbody>
</Table>

## Response format

<Callout icon="📘" theme="info">
  ### Security Note:

  The UploadVideo endpoint backend validates uploaded files against both an accepted format allowlist and the file's binary content. Uploaded video files with known binary signatures (such as FLV, AVI, WMV, MPEG) are verified against their expected magic bytes; a mismatch is rejected with error code ERROR_FORM_VIDEO_PARSE. The backend does not perform antivirus or malware scanning.
</Callout>

The following is an example of a video upload response:

```json
{  
    "Locale": "en_US",  
    "Errors": [],  
    "Form": [  
        {  
            "Type": "Field",  
            "Id": "video"  
        }  
    ],  
    "Video": {  
        "VideoId": "aaf06af5-3c65-4da5-8983-f849d785e5e2",
        "VideoHost": "BAZAARVOICE",
        "VideoThumbnailUrl": "https://stgvideo.api.bazaarvoice.com/aaf06af5-3c65-4da5-8983-f849d785e5e2/thumbnail/image-00001.png",
        "VideoUrl": "https://stgvideo.api.bazaarvoice.com/aaf06af5-3c65-4da5-8983-f849d785e5e2/video/movie.mp4"
    },  
    "FormErrors": {},  
    "SubmissionId": null,  
    "Data": {  
        "Fields": {  
            "video": {  
                "Options": [],  
                "Type": "FileInput",  
                "Required": null,  
                "Label": null,  
                "Value": null,  
                "MinLength": null,  
                "Id": "video",  
                "MaxLength": null,  
                "Default": null  
            }  
        },  
        "Groups": {},  
        "FieldsOrder": [  
            "video"  
        ],  
        "GroupsOrder": []  
    },  
    "TypicalHoursToPost": null,  
    "AuthorSubmissionToken": null,  
    "HasErrors": false  
}
```

## Error codes

<HTMLBlock>{`
<table>
    <tbody>
    <tr>
        <th>Value</th>

        <th>Description</th>
    </tr>

    <tr>
        <td>
          <code>ERROR_FORBIDDEN</code>
      </td>

        <td>
            <p>Your configuration is disabled to collect videos. Go to configuration Hub to enable if you wish to collect videos in the review.</p>

        </td>
    </tr>

    <tr class="odd">
        <td>
          <code>VIDEO_PARSE_ERROR</code>
      </td>

        <td>
            <p>The uploaded video could not be parsed. Ensure the video is a valid GP/3G2, ASF, AVI, DV, FLV, MOV, MP4/F4V, MPEG/MPG, QT, or WMV file.</p>

        </td>
    </tr>

    <tr>
        <td>
          <code>VIDEO_TOO_LARGE</code>
      </td>

        <td>
            <p>The video could not be uploaded due to its size. Video must be less than 200 MB.</p>

        </td>
    </tr>

    <tr class="odd">
        <td>
          <code>ERROR_BAD_REQUEST</code>
      </td>

        <td>
            <p>Invalid parameter in content submission.</p>

        </td>
    </tr>

    </tbody>
</table>
`}</HTMLBlock>