> ## 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.

# Obtener las URL de las partes de una subida multiparte

> Devuelve la URL de subida de cada parte solicitada de una subida multiparte, hasta 100 partes por llamada. Acepta un token de subida.

Devuelve una URL de subida firmada para cada parte que pidas. Envía los bytes de cada parte con un `PUT` a su `url`, usando exactamente las `headers` devueltas. Los tamaños de parte son el `part_size` de la subida, salvo la última, que puede ser más pequeña. Los límites de partes están en `limits` de [uso y límites](https://docs.vertracloud.app/es-es/api-reference/endpoint/blob/account/stats.md).

**Ámbito:** `blob:write`. Acepta un token de subida.

**Token de subida:** esta ruta también acepta un token de subida (`Authorization: Bearer vcup_...`) en lugar de una clave de API.

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

El ID de la subida multiparte.

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

Números de parte para los que pedir URL, empezando en 1. Hasta 100 por llamada.

**workspace\_id** `string`

El ID del workspace, cuando el blob pertenece a un workspace. La llamada actúa sobre el blob del propietario del workspace y necesita el permiso de workspace `blob:read` (`blob:manage` en las rutas que modifican datos). Omítelo para actuar sobre tu propio blob.

### Ejemplo de petición

```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]}'
```

### Respuesta

**response** `object[]`

Una URL por cada parte solicitada.

**propiedades**

**part\_number** `number`

Número de parte, empezando en 1.

**url** `string`

URL a la que hacer `PUT` de esta parte.

**size** `number`

Tamaño exacto de esta parte en bytes.

**headers** `object`

Cabeceras que el `PUT` de esta parte debe enviar exactamente como se indican.

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

### Respuestas de error

**code** `string`

El código de error que indica el motivo del fallo. Valores posibles:

* `AUTH_TOKEN_MISSING` (`401`): No se envió la cabecera `Authorization`.
* `API_KEY_INVALID` (`401`): La clave de API no existe, fue revocada o su secreto no coincide.
* `API_KEY_SCOPE_DENIED` (`403`): La clave no tiene el ámbito que necesita esta ruta (`blob:read` o `blob:write`); `details.required` lo indica.
* `WORKSPACE_PERMISSION_DENIED` (`403`): Solo con `workspace_id`: no eres miembro o tu rol no tiene el permiso de blob.
* `WORKSPACE_NOT_FOUND` (`404`): Solo con `workspace_id`: no existe ningún workspace con ese ID o no eres miembro.
* `BLOB_UPLOAD_TOKEN_INVALID` (`401`): El token de subida no existe, ha caducado o fue revocado (solo con un token de subida).
* `VALIDATION_ERROR` (`400`): Un parámetro o campo del cuerpo no superó la validación. `details.path` indica el campo.
* `BLOB_UPLOAD_NOT_FOUND` (`404`): No hay ninguna subida con ese ID en esta cuenta, o ya se completó o se canceló.
* `BLOB_UPLOAD_EXPIRED` (`410`): Se superó el tiempo límite de la subida.

```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.