Mover ativos do DAM em massa
Move vários ativos do DAM para uma pasta de forma atômica.
https://api2.transloadit.com/ dam/ assets/ bulk/ moveEste endpoint está em fase alfa. Sua URL, seus parâmetros, suas respostas e seu comportamento podem mudar substancialmente e interromper o funcionamento de integrações existentes.
Antes de chamar este endpoint, obtenha os IDs dos ativos existentes no mesmo Workspace da Auth Key usada na requisição.
Para arquivos armazenados com /transloadit/store, obtenha o Assembly Status deles e aguarde ASSEMBLY_COMPLETED. Nos arrays results[stepName] retornados, guarde o workspace, o asset_id, o version_id e o path retornado de cada arquivo armazenado. O id comum do arquivo não é seu ID de ativo de armazenamento. Use asset_id para ASSET_ID ou params.asset_ids nos exemplos abaixo.
Use asset_id para acompanhar um ativo em movimentações e renomeações nativas. Adicione version_id ao importar para selecionar os mesmos bytes retidos após uma sobrescrita. Um caminho salvo é uma localização mutável, não uma referência imutável. As regras de acesso e retenção de versões continuam se aplicando.
Para um destino que não seja a raiz, você já deve conhecer o ID da pasta existente no mesmo Workspace. Uma resposta de movimentação ou renomeação salva anteriormente pode fornecer esse ID: folder_id de uma resposta para um único ativo ou assets[].folder_id de uma resposta de movimentação em massa. Essas respostas descrevem a pasta após essa operação; elas não são uma API de descoberta de pastas.
Se você conhece os caminhos em vez dos IDs das pastas, use Mover um arquivo ou pasta de armazenamento. A pasta pai de destino já deve existir. Para mover um ativo para a raiz com este endpoint baseado em IDs, use destination_folder_id: null.
Envie os IDs dos ativos e a pasta de destino juntos dentro de params. O exemplo de requisição
abaixo move dois ativos para a raiz com um token bearer.
Substitua os IDs de exemplo pelos IDs dos seus ativos; cada ID deve aparecer apenas uma vez. Ao contrário da renomeação de um único ativo, a movimentação em massa exige um destino explícito. Se algum ativo selecionado não puder ser movido, toda a operação falhará.
Exemplo de requisição
Execute esta requisição em um shell no servidor com curl e um token bearer adequado em TRANSLOADIT_TOKEN. Se precisar de um token, expanda as instruções de configuração abaixo.
Precisa de um token bearer?
Em um shell confiável no servidor com curl e jq, defina TRANSLOADIT_KEY e TRANSLOADIT_SECRET com sua Auth Key e seu Auth Secret. Mantenha ambas as credenciais e o token resultante em segredo; nunca execute esta configuração em código de navegador.
Primeiro, crie um token com os escopos exigidos por este endpoint. Sua Auth Key já deve conceder esses escopos.
if ! TOKEN_RESPONSE="$(curl --fail-with-body -sS \
--request POST \
--url 'https://api2.transloadit.com/token' \
--user "${TRANSLOADIT_KEY:?Set TRANSLOADIT_KEY}:${TRANSLOADIT_SECRET:?Set TRANSLOADIT_SECRET}" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'aud=api2' \
--data-urlencode 'scope=dam:write')"; then
printf '%s\n' "$TOKEN_RESPONSE" >&2
exit 1
fi
TRANSLOADIT_TOKEN="$(printf '%s' "$TOKEN_RESPONSE" |
jq -er '.access_token | strings | select(length > 0)')" || exit 1
Mantenha este shell aberto e execute a requisição abaixo. Reutilize o token enquanto ele permanecer válido.
curl --fail-with-body -sS --request POST \
--url "https://api2.transloadit.com/dam/assets/bulk/move" \
--header "Authorization: Bearer ${TRANSLOADIT_TOKEN:?Set TRANSLOADIT_TOKEN}" \
--data-urlencode 'params={"asset_ids":["AAAAAAAAAAAAAAAAAAAAAA","AAAAAAAAAAAAAAAAAAAAAQ"],"destination_folder_id":null}'
Autenticação
Este endpoint aceita params assinados ou um token bearer. Consulte Autenticação para instruções de configuração.
Escopo necessário para a Auth Key ou o token bearer: dam:write.
Requisições assinadas exigem tanto uma signature quanto um timestamp params.auth.expires no futuro. Tokens Bearer não exigem nenhum dos dois.
Campos do formulário
Tipo de conteúdo: application/x-www-form-urlencoded
params(string JSON), obrigatório. Um objeto codificado em JSON cujas chaves suportadas estão listadas abaixo.signature(string). Obrigatório para requisições assinadas. Omita este campo ao usar um bearer token.
Chaves compatíveis dentro do campo params
Os campos de autenticação desta lista se aplicam a requisições assinadas. Com um bearer token, você pode omitir params.auth e o campo signature separado. Compare os parâmetros de requisição específicos de autenticação abaixo.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
params.obrigatório | Array<string> (itens mínimos: 1, máximo de itens: 100, sem itens duplicados)Esquema do item do arraystringIdentificador DAM Base64URL canônico de 22 caracteres, sensível a maiúsculas e minúsculas. Padrão de validação (expressão regular)^[A-Za-z0-9_-]{21}[AQgw]$ |
params.obrigatório para requisições assinadas; opcional com um bearer token | Contém a chave de API da Transloadit e os metadados de autenticação por assinatura para uma mutação de DAM.
|
params.obrigatório | stringTimestamp de expiração no formato ISO 8601 situado no futuro. Obrigatório quando uma requisição é assinada ou exige autenticação por assinatura; requisições autenticadas por bearer podem omiti-lo. |
params.obrigatório | stringChave de API da Transloadit usada para autenticar as requisições |
params. | string | integerValor único e aleatório incluído nos parâmetros da requisição assinada para tornar cada assinatura única e evitar a reutilização acidental de assinaturas. |
params.obrigatório | string | nullID da pasta de destino para todos os ativos selecionados. Defina como Qualquer um dos esquemas a seguir pode ser aplicado: stringstringIdentificador DAM Base64URL canônico de 22 caracteres, sensível a maiúsculas e minúsculas. Padrão de validação (expressão regular)^[A-Za-z0-9_-]{21}[AQgw]$nullnull |
Parâmetros de requisição por método de autenticação
Com parâmetros assinados
Inclua sua Auth Key como params.auth.key. Ao assinar a requisição, inclua um timestamp futuro em params.auth.expires e envie a assinatura no campo separado signature. As definições de campos abaixo usam caminhos dentro de params.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
Usa as definições de campo acima: params.asset_ids, params.auth, params.destination_folder_id
Com um token bearer
Envie o token bearer no cabeçalho Authorization. Você pode omitir params.auth e o campo signature separado. Os demais parâmetros obrigatórios continuam se aplicando. As definições de campos abaixo usam caminhos dentro de params.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
Usa as definições de campo acima: params.asset_ids, params.destination_folder_id
| Campo | Tipo e descrição |
|---|---|
params. | Contém a chave de API da Transloadit e os metadados de autenticação por assinatura para uma mutação de DAM.
|
params. | stringTimestamp de expiração no formato ISO 8601 situado no futuro. Obrigatório quando uma requisição é assinada ou exige autenticação por assinatura; requisições autenticadas por bearer podem omiti-lo. |
params. | stringChave de API da Transloadit usada para autenticar as requisições |
params. | string | integerValor único e aleatório incluído nos parâmetros da requisição assinada para tornar cada assinatura única e evitar a reutilização acidental de assinaturas. |
Resposta
Veja um exemplo de corpo de resposta:
{
"assets": [
{
"asset": {
"asset_id": "AAAAAAAAAAAAAAAAAAAAAA",
"height": 600,
"mime": "image/jpeg",
"path": "renamed.jpg",
"size": 12345,
"version_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"width": 800,
"workspace": "example-workspace"
},
"asset_id": "AAAAAAAAAAAAAAAAAAAAAA",
"deleted_at": null,
"filename": "renamed.jpg",
"folder_id": null,
"path": "renamed.jpg",
"updated_at": "2026-09-12T10:00:00.000Z"
},
{
"asset": {
"asset_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"height": 600,
"mime": "image/jpeg",
"path": "second.jpg",
"size": 12345,
"version_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"width": 800,
"workspace": "example-workspace"
},
"asset_id": "AAAAAAAAAAAAAAAAAAAAAQ",
"deleted_at": null,
"filename": "second.jpg",
"folder_id": null,
"path": "second.jpg",
"updated_at": "2026-09-12T10:00:00.000Z"
}
],
"message": "The DAM assets were successfully moved.",
"ok": "DAM_ASSETS_MOVED"
}sucesso 2xx
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
A resposta contém apenas os campos listados para este objeto.
| Campo | Tipo e descrição | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
assetsobrigatório | Array<object>Esquema do item do array
| ||||||||||||||||
messageobrigatório | string (comprimento mínimo: 1) | ||||||||||||||||
okobrigatório | string (sempre: "DAM_ASSETS_MOVED") |
Resposta de erro
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
A resposta pode conter campos adicionais.
| Campo | Tipo e descrição |
|---|---|
assembly_id | string |
error | string (comprimento mínimo: 1) |
http_code | number | string
|
message | stringExplicação do erro legível por humanos. A redação pode variar; use o código |
reason | null | string | number | boolean | Array<qualquer valor> | objectQualquer um dos esquemas a seguir pode ser aplicado: nullnullstringstringnumbernumberbooleanbooleanArray<qualquer valor>Array<qualquer valor>Esquema do item do arrayqualquer valorobjectobjectEsquema de propriedade adicionalqualquer valor |
HTTP 400
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Erros nomeados e o formato geral de erro
error: "DAM_INVALID_REQUEST"
Os parâmetros da solicitação de armazenamento são inválidos.
A resposta pode conter campos adicionais.
Formato geral de erro
HTTP 404
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Erros nomeados e o formato geral de erro
error: "DAM_RESOURCE_NOT_FOUND"
O recurso DAM solicitado não foi encontrado.
A resposta pode conter campos adicionais.
Formato geral de erro
HTTP 409
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Erros nomeados e o formato geral de erro
error: "DAM_MUTATION_CONFLICT"
A mutação do DAM conflita com um recurso existente.
A resposta pode conter campos adicionais.
Formato geral de erro
HTTP 500
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Erros nomeados e o formato geral de erro
error: "DAM_MUTATION_FAILED"
Não foi possível concluir a mutação do DAM. Tente novamente.
A resposta pode conter campos adicionais.