Factuarea APIDevelopers
Contrato

Seguimiento y resultados íntegros de importaciones de contactos

Previsualiza archivos de contactos, consulta resultados confirmados por fila y descarga informes de errores autorizados.

3 de octubre de 2026

Las importaciones de contactos ofrecen una referencia consultable, resultados parciales por fila y un informe de errores. Las actualizaciones conservan los campos omitidos; bank_accounts omitido conserva y [] borra. Las nuevas importaciones consumen la cuota mensual de filas del plan; las aceptadas bajo la exención anterior la conservan.

Las nuevas admisiones comparten plan-limits.bulk_import_rows_per_month. Las filas aplicadas create/update/add_role consumen cuota. Los contactos admitidos bajo la exención anterior conservan esa exención. La reserva concurrente evita exceder el límite. El rechazo ocurre antes de escribir o encolar: HTTP 429, import_row_quota_exceeded, tipo rate_limit_error. La cuota de filas es independiente del almacenamiento de bytes y del límite de peticiones.

Se exige contacts:read para consultar y descargar; import y preview requieren contacts:write. Un identificador ajeno, inexistente o de otro módulo devuelve el mismo 404 import_not_found. La falta de scope usa 403 insufficient_scope. No se exponen company_id ni identificadores internos, ni enlaces anónimos.

La respuesta síncrona usa el estado persistido: status, failure_reason y los cuatro contadores coinciden con la consulta GET. total conserva el número de registros del origen; rows y las categorías incluyen sólo filas confirmadas, con result applied/skipped/failed. Un cierre concurrente puede devolver HTTP 200 con status: failed y unprocessed_count > 0; las filas pendientes no se presentan como aplicadas. Preview/dry-run tienen status: null y omiten result; queued usa status: queued. Los códigos HTTP 200/202 descritos corresponden a HTTP; MCP devuelve el mismo payload JSON.

El reporte respeta la retención de 90 días. Cuando el CSV falta o el almacenamiento no permite leerlo, se reconstruye desde el ledger sin escribir otro archivo. El estado deja de anunciar el reporte al vencer la retención.

Nuevos endpoints2

EndpointDescripción
GET/v1/contacts/imports/{id}Consultar una importación de contactos
GET/v1/contacts/imports/{id}/errors.csvDescargar errores de importación de contactos

Endpoints actualizados2

EndpointDescripción
POST/v1/contacts/import/previewPrevisualizar una importación de contactos
POST/v1/contacts/importImportar contactos