> 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/midapi-v2/flujo-comun.md).

# Flujo común

Los servicios de validación que trabajan **por referencia** comparten el mismo arranque: obtener el token, disponer de una operación y subir los assets al almacenamiento. Solo después se invoca el servicio concreto con las claves obtenidas.

Esta página reúne ese arranque para no repetirlo en cada servicio. Cada paso enlaza a la página que documenta su contrato.

### Diagrama

```mermaid
sequenceDiagram
    actor C as Consumer
    participant API as Middleware API v2

    C->>API: POST /consumer/token
    API-->>C: token de consumer (validez 1 h)

    C->>API: POST /operation
    API-->>C: operationId + expiresAt

    loop Por cada asset: anverso, reverso, selfie
        C->>API: POST /storage (contenido + contexto)
        API-->>C: fileKey
    end

    C->>API: Servicio de validación (fileKeys + operation-id)
    API-->>C: Resultado del servicio
```

### Los pasos

1. **Obtener el token de consumer.** Un único token autentica todas las llamadas siguientes y vale una hora. Se emite en nombre de la plataforma y para un consumer concreto. Ver [Autenticación](/api-rest/midapi-v2/autenticacion.md).
2. **Crear la operación.** La operación agrupa los assets de la sesión y les fija una caducidad. Se crea con `POST /operation`, que devuelve el `operationId` y su `expiresAt`. Conviene crearla **cuando arranca la captura**, no antes, porque el reloj de la caducidad empieza en ese momento. Ver [Create Operation](/api-rest/midapi-v2/operations/create-operation.md).
3. **Subir cada asset.** Una llamada por captura, declarando el **contexto** que le corresponde. Cada subida devuelve la `fileKey` con la que después se referencia el asset. Ver [Save Asset](/api-rest/midapi-v2/storage/save-asset.md), y [Storage](/api-rest/midapi-v2/storage.md) para los contextos disponibles y el formato de la clave.
4. **Invocar el servicio de validación.** Se envían las `fileKeys` **tal como las devolvió** `POST /storage`, con el `operationId` en la cabecera `operation-id`. La clave no se compone ni se interpreta: añadirle el contexto por tu cuenta lo deja duplicado y el asset no resuelve. Si necesitas recuperar las claves de una operación, están en [Get File Keys](/api-rest/midapi-v2/operations/get-file-keys.md).

### Qué servicios siguen este flujo

Los servicios de validación **de identidad** admiten por defecto los dos modos de asset, contenido en línea y referencia por clave, y este flujo es el del modo por referencia. Las excepciones son explícitas:

| Servicio                                                                                                                                                        | Modos admitidos                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| [Form OCR](/api-rest/midapi-v2/document-services/form-ocr.md)                                                                                                   | Solo contenido en línea                     |
| [Voice Enrollment](/api-rest/midapi-v2/voice-services/voice-enrollment.md) y [Voice Authentication](/api-rest/midapi-v2/voice-services/voice-authentication.md) | Solo contenido en línea, sin campo `source` |
| [Document Validation](/api-rest/midapi-v2/document-services/document-validation.md)                                                                             | Solo referencia, sin campo `source`         |

Los servicios exclusivamente en línea no pasan por los pasos 2 y 3: el contenido viaja en la propia llamada y no llevan cabecera `operation-id`.
