> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/api-rest/identity-api/identity-api-reference/onboarding/ocr/extract-document-data-web.md).

# Extract Document Data Web

Este servicio retorna todos los datos extraídos de un documento de identificación aplicando OCR al código MRZ, PDF, código de barras y campos visibles en otras áreas del documento según el modelo definido para cada país. Para pasaportes, el OCR se aplica exclusivamente al código MRZ debido a su formato estandarizado.

### Integración

Este servicio se utiliza para implementaciones del **widget SelphID Web** o para el envío de imágenes abiertas desde cualquier plataforma. Al utilizar el widget SelphID Web, las imágenes generadas por el widget se obtienen de un array de imágenes.

### Endpoint

```
POST /services/extractDocumentDataWeb
```

### Headers

| Nombre        | Tipo   | Requerido | Descripción                                                   |
| ------------- | ------ | --------- | ------------------------------------------------------------- |
| **x-api-key** | string | **Sí**    | API key de autorización de acceso.                            |
| **family**    | string | No        | Valor: **OnBoarding**. Requerido con el servicio de tracking. |

{% hint style="info" %}
Todas las llamadas a los Endpoints para tracking con **Identity Platform** deben contener el header `family`.
{% endhint %}

### Cuerpo de la solicitud

**Content-Type:** `application/json`

#### Parámetros

| Parámetro              | Tipo    | Requerido | Descripción                                                                                                                                                                                                                                                                                                                                                     |
| ---------------------- | ------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tokenFrontDocument`   | string  | **Sí**    | Imagen codificada en **Base64** del lado frontal del documento, eliminando el encabezado del tipo MIME.                                                                                                                                                                                                                                                         |
| `tokenBackDocument`    | string  | No        | Imagen codificada en **Base64** del lado posterior del documento, eliminando el encabezado del tipo MIME.                                                                                                                                                                                                                                                       |
| `countryCode`          | string  | **Sí**    | Código de país en formato [**ISO 3166-1 alpha-3**](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3). Si no está presente en el cuerpo de la solicitud, el servicio utilizará el país predeterminado definido para el cliente en la configuración de la API. Para pasaportes, solo se requiere `tokenFrontDocument` con `countryCode` establecido en **"PSP"**. |
| `decompose`            | boolean | No        | Indica si se debe obtener la imagen del rostro presente en el documento y el recorte de la firma. (\*) Consultar con el equipo de Soporte Latam para países habilitados.                                                                                                                                                                                        |
| `tracking`             | object  | No        | Objeto que representa la información de seguimiento necesaria.                                                                                                                                                                                                                                                                                                  |
| `tracking.extraData`   | string  | No        | Token generado por el SDK Mobile/Web. Contiene información de seguimiento tokenizada con la Plataforma.                                                                                                                                                                                                                                                         |
| `tracking.operationId` | string  | No        | Identificador de operación generado por el SDK Mobile/Web.                                                                                                                                                                                                                                                                                                      |

#### Ejemplo de solicitud

```json
{
  "tokenFrontDocument": "BAMBAQLNHJoWGPjfeuDIzDXdZuP...",
  "tokenBackDocument": "BAMBAQLNHJoWGPjfeuDIzDXdZuP...",
  "countryCode": "ECU",
  "decompose": false,
  "tracking": {
    "extraData": "BQABAQG2gBNjuHN4kLmPqYf7R...",
    "operationId": "123e4567-e89b-12d3-a456-426614174000"
  }
}
```

### Respuestas

#### `200` Éxito

#### Parámetros de respuesta

| Parámetro              | Tipo    | Descripción                                                                                                                                                                    |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `serviceResultCode`    | integer | Código que indica el **resultado general** de la ejecución del servicio. Ver [Service Result Code](#service-result-code)                                                       |
| `serviceResultLog`     | string  | Campo descriptivo del resultado de la ejecución del servicio. Se incluyen detalles del módulo en caso de error o excepción.                                                    |
| `serviceTime`          | string  | Tiempo total de ejecución del servicio **(milisegundos)**.                                                                                                                     |
| `serviceDocument`      | string  | Objeto que representa el documento capturado. Sus propiedades son **todos los campos extraídos por el proceso OCR**, incluyendo la imagen del rostro presente en el documento. |
| `serviceTransactionId` | string  | Identificador de transacción asociado a la solicitud procesada por la API.                                                                                                     |

#### Service Result Code

El `serviceResultCode` indica el resultado general de la ejecución del servicio:

| serviceResultCode | Descripción                                                                          | Código HTTP |
| ----------------- | ------------------------------------------------------------------------------------ | ----------- |
| 0                 | La ejecución del servicio fue exitosa, el módulo procesó la solicitud correctamente. | 200         |

#### Ejemplo de respuesta

```json
{
  "serviceResultCode": 0,
  "serviceResultLog": "Service request successfully processed",
  "serviceTime": "2237",
  "serviceDocument": "{\"ASK4BACK\":\"NO\",\"BACKSIDE\":{\"FIELD_DATA\":{\"BARCODES\":[{\"DATA\":\"\",\"TYPE\":\"\"}]},\"MRZ_DATA\":{\"BIRTH_DATE\":\"01/01/1980\",\"EXPEDITION_DATE\":\"01/01/2020\",\"EXPIRATION_DATE\":\"01/01/2030\",\"IDENTITY_NUMBER\":\"123\",\"ISSUING_COUNTRY\":\"XYZ\",\"NAME\":\"JOHN\",\"NATIONALITY\":\"XYZ\",\"PERSONAL_NUMBER\":\"12345678\",\"SERIAL_NUMBER\":\"000000001\",\"SURNAME\":\"DOE\"}},\"CHECKS\":{\"BIRTH_DATE_SIDE_MATCH\":true,\"EXPEDITION_DATE_SIDE_MATCH\":true,\"EXPIRATION_DATE_SIDE_MATCH\":true,\"NAME_SIDE_MATCH\":true,\"NATIONALITY_SIDE_MATCH\":true,\"SURNAME_SIDE_MATCH\":true},\"COUNTRY_CODE\":\"XYZ\",\"DECOMPOSED\":{\"FACE\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/p3Vg7fMCvXH/66ujh6VJXhFfkzHE4rEYqV6kmz/9k=...\"},\"DOC_MODEL\":\"NEW\",\"FRONTSIDE\":{\"FIELD_DATA\":{\"BIRTH_DATE\":\"01/01/1980\",\"BIRTH_PLACE\":\"SOMEPLACE/XYZ\",\"DOCUMENT_NUMBER\":\"1.234.567-8\",\"EXPEDITION_DATE\":\"01/01/2020\",\"EXPIRATION_DATE\":\"01/01/2030\",\"NAME\":\"JOHN\",\"NATIONALITY\":\"XYZ\",\"SURNAME\":\"DOE\"}},\"SCORING\":{\"BACK_CONFIDENCE\":0.927620202303,\"BACK_SHA256\":\"0f8b53d5724a186cf19c882baa20eb92fa6e1708065987a32ecbf0141a86e6a5\",\"FIELDS_RETURNED\":27,\"FIELDS_TOTAL\":27,\"FRONT_CONFIDENCE\":0.97401304245,\"FRONT_SHA256\":\"a3dccd459f4674ec8440a11c7c65ab0e1ebaa5fd8357b55484574e71116bef2c\",\"OVERALL_RATING\":100.0}}",
  "serviceTransactionId": "123e4567-e89b-12d3-a456-426614174000"
}
```

#### `400` Bad Request

```json
{
  "status": 400,
  "title": "Bad Request",
  "detail": "Invalid request.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
  "errors": []
}
```

#### `401` Unauthorized

```json
{
  "message": "Unauthorized"
}
```

#### `403` Forbidden

```json
{
  "Message": "User is not authorized to access this resource with an explicit deny"
}
```

#### `502` Bad Gateway

```json
{
  "status": 502,
  "title": "Bad Gateway",
  "detail": "Server got an invalid response.",
  "type": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502"
}
```

#### `504` Gateway Timeout

```json
{
  "message": "Endpoint request timed out"
}
```
