> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vertracloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Obter URLs das partes de um upload multipart

> Retorna a URL de upload de cada parte pedida de um upload multipart, até 100 partes por chamada. Aceita um token de upload.

Retorna uma URL de upload assinada para cada parte que você pedir. Envie os bytes de cada parte com um `PUT` para a `url` dela, usando exatamente os `headers` retornados. O tamanho das partes é o `part_size` do upload, exceto a última parte, que pode ser menor. Os limites de partes estão em `limits` em [uso e limites](https://docs.vertracloud.app/pt-br/api-reference/endpoint/blob/account/stats.md).

**Escopo:** `blob:write`. Aceita um token de upload.

**Token de upload:** esta rota também aceita um token de upload (`Authorization: Bearer vcup_...`) em vez de uma chave de API.

**upload\_id** `string` *required*

O ID do upload multipart.

**part\_numbers** `number[]` *required*

Números das partes para obter URLs, começando em 1. Até 100 por chamada.

**workspace\_id** `string`

O ID do workspace, quando o blob pertence a um workspace. A chamada atua sobre o blob do dono do workspace e precisa da permissão de workspace `blob:read` (`blob:manage` nas rotas que alteram dados). Omita para atuar sobre o seu próprio blob.

### Exemplo de requisição

```bash theme={null}
curl -X POST "https://blob.vertracloud.app/v1/uploads/7c1d2e3f-4a5b-4c6d-8e7f-0a1b2c3d4e5f/parts" \
  -H "Authorization: Bearer $VERTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"part_numbers":[1,2]}'
```

### Resposta

**response** `object[]`

Uma URL por parte pedida.

**propriedades**

**part\_number** `number`

Número da parte, começando em 1.

**url** `string`

URL para fazer `PUT` desta parte.

**size** `number`

Tamanho exato desta parte em bytes.

**headers** `object`

Headers que o `PUT` desta parte deve enviar exatamente como informados.

```json Response theme={null}
{
  "response": [
    {
      "part_number": 1,
      "url": "https://storage.example/part-1",
      "size": 67108864,
      "headers": {
        "content-length": "67108864"
      }
    }
  ]
}
```

### Respostas de erro

**code** `string`

O código de erro que indica o motivo da falha. Valores possíveis:

* `AUTH_TOKEN_MISSING` (`401`): Nenhum header `Authorization` foi enviado.
* `API_KEY_INVALID` (`401`): A chave de API não existe, foi revogada ou o segredo não confere.
* `API_KEY_SCOPE_DENIED` (`403`): A chave não tem o escopo que a rota exige (`blob:read` ou `blob:write`); `details.required` informa qual.
* `WORKSPACE_PERMISSION_DENIED` (`403`): Somente com `workspace_id`: você não é membro, ou seu papel não tem a permissão de blob.
* `WORKSPACE_NOT_FOUND` (`404`): Somente com `workspace_id`: não existe workspace com esse ID, ou você não é membro.
* `BLOB_UPLOAD_TOKEN_INVALID` (`401`): O token de upload não existe, expirou ou foi revogado (somente com token de upload).
* `VALIDATION_ERROR` (`400`): Um parâmetro ou campo do body falhou na validação. `details.path` informa o campo.
* `BLOB_UPLOAD_NOT_FOUND` (`404`): Nenhum upload com esse ID nesta conta, ou ele já foi concluído ou abortado.
* `BLOB_UPLOAD_EXPIRED` (`410`): O prazo do upload passou.

```json Error Response (401) theme={null}
{
  "code": "AUTH_TOKEN_MISSING"
}
```

```json Error Response (403) theme={null}
{
  "code": "API_KEY_SCOPE_DENIED"
}
```

```json Error Response (404) theme={null}
{
  "code": "WORKSPACE_NOT_FOUND"
}
```

```json Error Response (400) theme={null}
{
  "code": "VALIDATION_ERROR"
}
```

```json Error Response (410) theme={null}
{
  "code": "BLOB_UPLOAD_EXPIRED"
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.