---
title: "Move Media"
method: PUT
path: "/medias/move"
tags: ["Media"]
---

# Move Media

`PUT /medias/move`

## Request

- Base URL: `https://api.wistia.com/modern`
- URL: `https://api.wistia.com/modern/medias/move`
- Auth: HTTP bearer

Moves up to 100 media to a folder and optional subfolder. The subfolder must
belong to the specified folder.

This endpoint allows 10 requests per 5 minutes, separate from the general
API rate limit. Returns a Background Job because the move is asynchronous.

For more than 100 media, multiple destinations, or mixed actions, use the
Create Bulk Actions endpoint with `move` actions.

## Requires api token with one of the following permissions
```
Read, update & delete anything
```

Tokens with the "Act with a team member's permissions" permission
(`all:delegate_to_contact_permissions` scope) can also be used. Requests
made with such a token are authorized using the permissions of the
contact assigned to the token.

An [expiring access token](https://docs.wistia.com/reference/post_expiring-token)
created with the `all:delegate_to_contact_permissions` scope and
authorizations granting the `update` permission on every media being moved
and on the destination folder can also be used. `subfolder_id` is not
available to expiring access tokens.

## Headers

- `X-Wistia-API-Version` string, required

## Request body

- object
  - `hashed_ids` string[], required: An array of the media hashed IDs to be moved.
  - `folder_id` string, required: The hashed ID of the folder where you want the media moved.
  - `subfolder_id` string: Optional. The hashed ID of the subfolder where you want the media moved. If not provided, media will be moved to the folder's default subfolder. The subfolder must belong to the specified folder.

## Response `200`

Successfully queued move of all the media.

- object
  - `message` string, required: A confirmation message that the background job has been queued.
  - `background_job_status` object, required: A background job keeps track of the progress of an asynchronous task, e.g bulk archiving media, translating media, etc.
    - `id` integer, required: The ID of the background job that's been queued for the request.
    - `hashed_id` string, required: The unguessable hashed ID of the background job. Prefer this over the numeric ID when polling for status.
    - `status` 'queued' | 'started' | 'finished' | 'failed', required: The status of the background job that's been queued for the request.

## Other responses

- `207`: Successfully queued move of at least one media. Other provided hashed_ids failed.
- `400`: Invalid request.
- `401`: Unauthorized, invalid or missing token
- `403`: Forbidden, token is valid but account does not have access to feature
- `404`: Resource not found
- `500`: Internal server error

## Changes

- **2026-11-03** `b86cb2a7b420`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wistia/apis/data-api/changes/medias/move/put.md)

---

[API](https://skmtc.dev/wistia/apis/data-api.md) - [All operations](https://skmtc.dev/wistia/apis/data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wistia/apis/data-api/revisions/b86cb2a7b420?raw)
