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

# PUT/Image

> Esta API le permite agregar o actualizar (sobrescribir) cuatro tipos de imágenes (frente de ID, reverso de ID, selfie, dirección) para un envío existente.

<Warning>
  **Notas**

  * Formatos de imagen permitidos: jpg, jpeg, png.
  * Todas las imágenes deben enviarse como cadenas codificadas en Base64.
  * El parámetro `idType` es requerido al enviar `idImage` o `idBackImage`.
  * Se debe enviar al menos una imagen.
</Warning>

## 1. Endpoint

```text PUT/Image theme={null}
PUT https://rest-api.argosidentity.com/v3/submission/image
```

## 2. Autenticación y encabezados

Esta API requiere que el cuerpo de la solicitud se envíe como `multipart/form-data`.

| Header         | Value                 | Required |
| -------------- | --------------------- | -------- |
| `x-api-key`    | Su clave API          | Required |
| `Content-Type` | `multipart/form-data` | Required |

<Note>
  Al usar la opción `--form` de `curl` o el parámetro `files` de la biblioteca `requests` de Python, el encabezado `Content-Type: multipart/form-data` y el valor boundary se establecen automáticamente. Establecer el encabezado manualmente puede omitir el valor boundary y causar que la solicitud falle.
</Note>

## 3. Parámetros de solicitud

Todos los parámetros se envían como campos `multipart/form-data`.

<ParamField body="submissionId" type="string" required>
  ID único del envío
</ParamField>

<ParamField body="admin" type="string" required>
  Cuenta del administrador del proyecto (debe estar registrada en el dashboard)
</ParamField>

<ParamField body="idType" type="string">
  Tipo de documento de identidad. Requerido al enviar `idImage` o `idBackImage`.
</ParamField>

<ParamField body="idImage" type="string">
  Lado frontal del documento de identidad, codificado en Base64
</ParamField>

<ParamField body="idBackImage" type="string">
  Lado posterior del documento de identidad, codificado en Base64
</ParamField>

<ParamField body="selfieImage" type="string">
  Imagen selfie, codificada en Base64
</ParamField>

<ParamField body="addressImage" type="string">
  Imagen del documento de dirección, codificada en Base64
</ParamField>

## 4. Ejemplo de solicitud

<CodeGroup>
  ```bash cURL theme={null}
  curl --location --request PUT 'https://rest-api.argosidentity.com/v3/submission/image' \
  --header 'x-api-key: {yourAPIKey}' \
  --form 'submissionId="sampleSubmissionId11"' \
  --form 'admin="sample@argosidentity.com"' \
  --form 'idType="drivers_license"' \
  --form 'idImage={base64String}' \
  --form 'idBackImage={base64String}' \
  --form 'selfieImage={base64String}' \
  --form 'addressImage={base64String}'
  ```

  ```python Python theme={null}
  import base64
  import requests
  from pathlib import Path

  API_URL = "https://rest-api.argosidentity.com/v3/submission/image"
  API_KEY = "your-api-key"

  image_path = Path("drvlic.jpeg")
  id_image_b64 = base64.b64encode(image_path.read_bytes()).decode()

  resp = requests.put(
      API_URL,
      headers={"x-api-key": API_KEY},
      files={
          "submissionId": (None, "sampleSubmissionId11"),
          "admin": (None, "sample@argosidentity.com"),
          "idType": (None, "drivers_license"),
          "idImage": (None, id_image_b64),
      },
  )

  print(resp.status_code, resp.json())
  ```
</CodeGroup>

<Note>
  Al usar el parámetro `files` de la biblioteca `requests` de Python, pase los campos de texto como tuplas `(None, "value")`. El primer elemento `None` indica que no hay nombre de archivo, lo que envía correctamente los datos de texto como campos multipart/form-data.
</Note>

## 5. Respuesta

### 5-1. Respuesta exitosa

```json result.json theme={null}
{
   "message": "complete to update image."
}
```

### 5-2. Datos de respuesta

| Campo     | Descripción      | Tipo   |
| --------- | ---------------- | ------ |
| `message` | Mensaje de éxito | String |

### 5-3. Respuesta de error

```json result.json theme={null}
{
    "errorCode": "invalid_payload",
    "message": "Fail to parse the input data."
}
```

### 5-4. Códigos de error

| Error Code           | Message                                                    | Descripción                                            |
| -------------------- | ---------------------------------------------------------- | ------------------------------------------------------ |
| `invalid_payload`    | Fail to parse the input data.                              | El formato de los datos de entrada es inválido.        |
| `missing_data`       | Required input data is missing.                            | Faltan algunos campos requeridos.                      |
| `invalid_project`    | Cannot find project info.                                  | El ID del proyecto no existe.                          |
| `invalid_project`    | Invalid project.                                           | El estado del proyecto es inválido.                    |
| `invalid_admin`      | Invalid admin.                                             | El administrador es inválido.                          |
| `invalid_submission` | Invalid submission.                                        | El ID del envío es inválido.                           |
| `invalid_data`       | At least one image parameter is required.                  | No se envió ninguna imagen.                            |
| `missing_data`       | The idType is required when submit idImage or idBackImage. | Falta el `idType` al enviar una imagen de ID.          |
| `invalid_idType`     | Invalid IdType.                                            | El `idType` proporcionado es inválido.                 |
| `processing_error`   | Failed to put image.                                       | Ocurrió un error desconocido durante el procesamiento. |
