Skip to content

ImagFlow — API Reference

Endpoints Publicos (via Gateway)

Todos requieren autenticacion JWT excepto los de ejecucion publica.

Flujos

MetodoEndpointRol requeridoDescripcion
POST/api/v1/flowsplatform_adminCrear flujo (crea v1 en draft)
GET/api/v1/flowsplatform_adminListar flujos (paginado, filtros)
GET/api/v1/flows/{id}platform_adminObtener flujo con version published
PATCH/api/v1/flows/{id}platform_adminActualizar metadata del flujo
DELETE/api/v1/flows/{id}platform_adminDesactivar flujo (soft delete)

Versiones

MetodoEndpointRol requeridoDescripcion
GET/api/v1/flows/{id}/versionsplatform_adminListar todas las versiones
GET/api/v1/flows/{id}/versions/draftplatform_adminObtener draft actual
GET/api/v1/flows/{id}/versions/publishedauthenticatedObtener version publicada
GET/api/v1/flows/{id}/versions/{versionId}platform_adminObtener version especifica
POST/api/v1/flows/{id}/versions/newplatform_adminCrear draft desde published
POST/api/v1/flows/{id}/versions/draft/publishplatform_adminPublicar draft
DELETE/api/v1/flows/{id}/versions/draftplatform_adminDescartar draft

Pasos (operan sobre el draft)

MetodoEndpointRol requeridoDescripcion
GET/api/v1/flows/{id}/versions/draft/stepsplatform_adminListar pasos
POST/api/v1/flows/{id}/versions/draft/stepsplatform_adminAgregar paso
PATCH/api/v1/flows/{id}/versions/draft/steps/{stepId}platform_adminActualizar paso
DELETE/api/v1/flows/{id}/versions/draft/steps/{stepId}platform_adminEliminar paso
PUT/api/v1/flows/{id}/versions/draft/steps/reorderplatform_adminReordenar pasos

Reglas (operan sobre el draft)

MetodoEndpointRol requeridoDescripcion
GET/api/v1/flows/{id}/versions/draft/rulesplatform_adminListar reglas
POST/api/v1/flows/{id}/versions/draft/rulesplatform_adminAgregar regla
PATCH/api/v1/flows/{id}/versions/draft/rules/{ruleId}platform_adminActualizar regla
DELETE/api/v1/flows/{id}/versions/draft/rules/{ruleId}platform_adminEliminar regla

Proveedores

MetodoEndpointRol requeridoDescripcion
GET/api/v1/providersplatform_adminListar proveedores
POST/api/v1/providersplatform_adminCrear proveedor
GET/api/v1/providers/{id}platform_adminObtener proveedor
PATCH/api/v1/providers/{id}platform_adminActualizar proveedor
DELETE/api/v1/providers/{id}platform_adminDesactivar proveedor
POST/api/v1/providers/{id}/health-checkplatform_adminVerificar conectividad

Asignaciones

MetodoEndpointRol requeridoDescripcion
GET/api/v1/flow-assignmentstenant_adminListar flujos asignados al tenant
POST/api/v1/flow-assignmentsplatform_admin, delegated_adminAsignar flujo a tenant/org
DELETE/api/v1/flow-assignments/{id}platform_admin, delegated_adminDesasignar flujo

Solicitudes (Requests)

MetodoEndpointRol requeridoDescripcion
POST/api/v1/requestsoperatorCrear solicitud (genera link)
GET/api/v1/requestsoperator, tenant_adminListar solicitudes (paginado)
GET/api/v1/requests/{id}operator, tenant_adminDetalle de solicitud
GET/api/v1/requests/{id}/attemptsoperator, tenant_adminIntentos por paso
GET/api/v1/requests/{id}/enrichmentsoperator, tenant_adminResultados de enriquecimiento

Ejecucion Publica (sin JWT — usa access_token)

MetodoEndpointAuthDescripcion
GET/api/v1/execute/{token}access_tokenEstado actual de la ejecucion
POST/api/v1/execute/{token}/steps/{stepId}access_tokenEnviar datos de un paso
GET/api/v1/execute/{token}/statusaccess_tokenStatus resumido (polling)

Endpoints Internos (servicio-a-servicio)

Invocados por otros dominios con JWT propagado.

MetodoEndpointConsumidorDescripcion
POST/api/v1/executions/triggerImagLendIniciar ejecucion de un flujo programaticamente
GET/api/v1/executions/{id}/resultImagLendObtener resultado de una ejecucion
GET/api/v1/executions/{id}/statusImagLendPolling de estado

Ejemplos de Request/Response

Crear Flujo

http
POST /api/v1/flows
Content-Type: application/json
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
Authorization: Bearer {jwt}
json
{
  "name": "Validacion de Identidad Basica",
  "slug": "validacion-identidad-basica",
  "description": "Flujo de 3 pasos: liveness, captura documento, match biometrico",
  "is_template": true,
  "template_category": "identity-verification"
}

Response 201:

json
{
  "data": {
    "id": "flow-uuid",
    "name": "Validacion de Identidad Basica",
    "slug": "validacion-identidad-basica",
    "version": {
      "id": "version-uuid",
      "version_number": 1,
      "status": "draft"
    }
  },
  "metadata": {
    "request_id": "req-abc123",
    "timestamp": "2026-05-18T10:30:00Z"
  }
}

Crear Solicitud

http
POST /api/v1/requests
Content-Type: application/json
Idempotency-Key: 660e8400-e29b-41d4-a716-446655440001
Authorization: Bearer {jwt}
json
{
  "flow_id": "flow-uuid",
  "subject_data": {
    "identifier_type": "cedula",
    "identifier_value": "1234567890",
    "name": "Juan Perez",
    "email": "juan@email.com",
    "phone": "+573001234567"
  },
  "expires_in_hours": 48,
  "metadata": {
    "origin": "imagy-lending",
    "origin_id": "application-uuid",
    "channel": "digital"
  }
}

Response 201:

json
{
  "data": {
    "id": "request-uuid",
    "status": "created",
    "access_token": "abc123def456",
    "execution_url": "https://validate.fintech-abc.reimaginetech.io/abc123def456",
    "expires_at": "2026-05-20T10:30:00Z"
  },
  "metadata": {
    "request_id": "req-def456",
    "timestamp": "2026-05-18T10:30:00Z"
  }
}

Trigger de Ejecucion (interno, desde ImagLend)

http
POST /api/v1/executions/trigger
Content-Type: application/json
Idempotency-Key: 770e8400-e29b-41d4-a716-446655440002
Authorization: Bearer {jwt-propagado}
json
{
  "flow_id": "flow-uuid",
  "subject_data": {
    "identifier_type": "cedula",
    "identifier_value": "1234567890",
    "name": "Juan Perez"
  },
  "callback_url": "https://api.fintech-abc.reimaginetech.io/v1/lending/callbacks/flow-result",
  "metadata": {
    "origin": "imagy-lending",
    "origin_id": "credit-application-uuid"
  }
}

Response 201:

json
{
  "data": {
    "execution_id": "exec-uuid",
    "request_id": "request-uuid",
    "execution_url": "https://validate.fintech-abc.reimaginetech.io/token123",
    "status": "created"
  }
}

Obtener Estado de Ejecucion (publico)

http
GET /api/v1/execute/abc123def456

Response 200:

json
{
  "data": {
    "status": "in_progress",
    "current_step": {
      "id": "step-uuid",
      "type": "card_capture",
      "name": "Captura de documento",
      "config": {
        "ui": {
          "title": "Captura de documento",
          "instructions": "Tome una foto clara de su cedula"
        },
        "validation": {
          "accepted_document_types": ["cedula", "pasaporte"],
          "capture_sides": ["front", "back"]
        }
      },
      "attempts_used": 0,
      "attempts_remaining": 3
    },
    "progress": {
      "completed_steps": 1,
      "total_steps": 3
    }
  }
}

Enviar Datos de un Paso (publico)

http
POST /api/v1/execute/abc123def456/steps/step-uuid
Content-Type: multipart/form-data

Response 200 (exito, siguiente paso):

json
{
  "data": {
    "step_result": "success",
    "next_step": {
      "id": "next-step-uuid",
      "type": "liveness",
      "name": "Verificacion facial"
    }
  }
}

Response 200 (exito, flujo completado):

json
{
  "data": {
    "step_result": "success",
    "flow_status": "capture_completed",
    "message": "Todos los pasos completados. Su solicitud esta siendo procesada."
  }
}

Response 400 (fallo con reintentos):

json
{
  "error": {
    "code": "STEP_FAILED",
    "message": "La captura no cumple los requisitos de calidad",
    "details": [
      { "field": "image_quality", "message": "Imagen borrosa" }
    ]
  },
  "data": {
    "attempts_remaining": 2,
    "can_retry": true
  }
}

Headers Especiales

HeaderDireccionDescripcion
Idempotency-KeyRequest (POST)UUID para idempotencia
If-MatchRequest (PATCH/PUT)ETag para concurrencia
ETagResponse (GET)Version del recurso
X-Idempotent-ReplayedResponsetrue si es respuesta cacheada
X-Request-IdResponseID de trazabilidad

Codigos de Estado

StatusCuando
200Operacion exitosa (GET, PATCH, paso completado)
201Recurso creado (POST)
400Validacion fallida, paso fallido con reintentos
401No autenticado
403Sin permisos para la operacion
404Recurso no encontrado
409Conflicto (ej: ya existe draft, doble ejecucion concurrente)
410Solicitud expirada
412ETag mismatch (concurrencia)
429Rate limit o max reintentos excedidos
500Error interno

Reimagine Tech LLC — Documentacion Interna