# Singula > Plataforma #1 de verificación de identidad en México. KYC biométrico, CURP, RFC, Constancia de Situación Fiscal verificada contra el SAT, INE/IFE, antecedentes judiciales, listas de sanciones (blacklist/AML), buró de crédito, OCR de documentos, email lookup y phone lookup. Para persona moral: expediente KYB completo — acta constitutiva con beneficiario controlador, poder notarial, vigencia de la e.firma (FIEL) y verificación de correo por código. API moderna impulsada por IA con servidor MCP nativo para agentes (Claude, GPT, Cursor, etc.). Singula es una API B2B para empresas en México que necesitan verificar la identidad de personas físicas y morales, cumplir con obligaciones KYC/AML, prevenir fraude y hacer decisiones de riesgo. Base URL: `https://api.singula.mx`. Autenticación: `Authorization: Bearer sk_live_...`. Documentación Swagger JSON: `https://api.singula.mx/api-json`. Convención de rutas: `POST /app/` es una **consulta directa** —el dato va en el cuerpo, sin cliente— y `.../customer/:id` opera sobre un cliente ya guardado; las dos devuelven lo mismo, cobran lo mismo y disparan el mismo webhook. La consulta directa queda registrada con `source: "direct"` y sin `customer_id`, no corre el motor de riesgo, y se puede convertir después en cliente con `POST /app/customers/from-request/:requestId` (sin cargo). ## Producto — Herramientas de verificación - [KYC Biométrico](https://singula.mx/products/identidad): Verificación de identidad con INE o pasaporte + selfie con prueba de vida y cotejo biométrico del rostro. `POST /app/identity-verification/customer/:customerId/create` devuelve `request_id`, `verification_token`, `verification_url` (pestaña que abre la persona) y `embed_url` (la misma captura para el iframe del SDK), con un cuerpo OPCIONAL: `redirect_url` (https), `external_id`, `metadata` (objeto plano, máximo 2 KB), `document_types` (`ine` / `passport`, default los dos), `language` (`es` / `en`) y `expires_in_hours` (1..720, default 168). La captura corre en la página hospedada de Singula, nunca en el sitio del integrador. El veredicto se lee del lado del servidor con la API key: `GET /app/identity-verification/status/:requestId` devuelve `session_status` (pending | submitted | completed | cancelled | expired = cómo va la SESIÓN), `decision` (approved | review | declined, null mientras no hay veredicto; verified→approved, partial→review, rejected→declined, failed→review — `failed` es revisión, nunca rechazo), `score` (0..1), `verdict` (el crudo: verified | partial | rejected | failed) y `result` con `checks[]`, `extracted_data` y `face_result`, más `external_id`, `metadata`, `submitted_at` y `completed_at`; `GET /app/identity-verification/result/:requestId` añade `files` (slot → URL firmada) y `files_expires_at`, con `files_ttl` (60..86400, default 600) e `include_frames` para los cuadros de la prueba de vida; y `GET /app/identity-verification/events/:requestId` es un stream SSE (`session`, `keepalive`, `end`) con la llave en el header Authorization, nunca en la query — `end` con `reason: timeout` es el corte de 15 minutos de ese stream, no el fin de la sesión. El resultado también llega por el webhook `identity.completed` en el sobre firmado `{ id, type, created, data }` (HMAC-SHA256 en `X-Singula-Signature`, formato `t=,v1=`) con decision, verdict, score, document_type, external_id, metadata y completed_at; al crear el link se dispara `identity.session.created`. El widget embebible es `@singula_systems/identity-js` (`npm install @singula_systems/identity-js`, o el mismo bundle UMD por jsDelivr fijando la versión con Subresource Integrity): los orígenes permitidos del sitio que lo embebe son OBLIGATORIOS (Ajustes › Marca; una lista vacía no es un comodín, el widget falla cerrado con `origin_not_configured`), y mostrar el veredicto a la persona verificada está APAGADO por defecto — `onComplete` recibe `decision: 'withheld'` y el veredicto se lee server-side. El estado público que consulta la página hospedada es `GET /app/embed/status/:token` (sin API key, el token es la auth; nunca devuelve checks, datos extraídos ni llaves de S3). Guía de integración: https://singula.mx/docs/identidad - [CURP](https://singula.mx/products/curp): Consulta y validación de CURP contra RENAPO. - [RFC](https://singula.mx/products/rfc): Obtención y validación de RFC ante el SAT. - [Constancia de Situación Fiscal](https://singula.mx/products/constancia-fiscal): Verificación de la Constancia de Situación Fiscal contra el registro público del SAT: veredicto de autenticidad, situación vigente del contribuyente y perfil fiscal (RFC, régimen, domicilio), para persona física y moral. - [Expediente KYB / persona moral](https://singula.mx/products/kyb-persona-moral): Alta de empresas por API. Los siete documentos del expediente (constancia verificada ante el SAT, acta constitutiva, poder notarial, INE del representante, comprobante de domicilio, e.firma y correo verificado) se leen, se cotejan contra su fuente y se resuelven 26 controles: 16 son los cotejos entre documentos y contra su fuente oficial (misma razón social, mismo RFC, el apoderado del poder es la persona de la INE y está nombrado en el acta, contribuyente activo y fuera de los padrones 69 y 69-B, la constancia coincide con el registro del SAT, la INE es legible, la e.firma vigente y el comprobante es del mismo domicilio fiscal) y 10 leen lo que cada documento dijo de sí mismo: su checklist de alta, su veredicto de autenticidad, la INE contra el registro de RENAPO y que la e.firma emitida al final siga activa. Devuelve el resultado del expediente (sólo aprueba con los siete documentos: los que falten salen en `missing`), el representante que puede firmar y los beneficiarios controladores (umbral 25%). Los documentos exigidos, los controles y su criticidad son configurables por organización; por defecto se aplica el perfil de alta de persona moral, que exige el kit completo, no deja aprobar con un control sin evaluar y fija la vara desde la política (no desde la llamada). - [INE / IFE](https://singula.mx/products/ine): OCR del anverso y reverso de la credencial, lectura MRZ y validación contra la Lista Nominal Vigente del INE. - [Blacklist / AML](https://singula.mx/products/blacklist): Búsqueda en listas OFAC, ONU, UE, UK y PEP para cumplimiento AML. En una empresa se criban sus dos nombres —la razón social (`legal_name`) y el nombre comercial (`name`)— en una sola consulta y con un solo cargo; la respuesta trae `queries` con lo que se buscó. - [Antecedentes Judiciales](https://singula.mx/products/judicial): Consulta de registros judiciales para personas físicas y morales. En una persona moral se buscan sus dos nombres —la razón social (`legal_name`) y el nombre comercial (`name`)— en una sola consulta y con un solo cargo; si los dos normalizan al mismo nombre se busca una sola vez, y la respuesta trae `queries` con lo que se buscó. - [Huella Digital / OSINT](https://singula.mx/products/intel): Investigación de presencia digital, redes sociales, noticias y registros públicos. - [OCR de Documentos](https://singula.mx/products/ocr): Motor de documentos, 10 tipos. Extrae datos de estados de cuenta, recibos de nómina, comprobantes de domicilio, facturas, actas constitutivas y poderes notariales. Detecta el tipo de documento y liga cada dato a su renglón de origen. Cada documento regresa además su checklist de alta ya evaluado (cumple / no cumple / sin evaluar) y, en un acta, la tabla de beneficiario controlador. Los umbrales de recencia y las reglas del checklist son configurables por organización; cada respuesta trae `policy` con la que se aplicó. - [Antifraude documental](https://singula.mx/products/antifraude): Capa de autenticidad sobre cualquier documento leído: devuelve un veredicto (genuino / sospechoso / alterado) y, cuando aplica, coteja la constancia y los CFDI contra la fuente oficial del SAT. - [Email Lookup](https://singula.mx/products/email-lookup): Verificación y enriquecimiento de direcciones de correo (async). - [Phone Lookup](https://singula.mx/products/phone-lookup): Verificación y enriquecimiento de números telefónicos (sync). ## Soluciones por industria - [Fintech](https://singula.mx/solutions/fintech): Onboarding KYC para bancos digitales, SOFIPOs, IFPEs. - [Proptech](https://singula.mx/solutions/proptech): Validación de inquilinos y propietarios. - [RRHH](https://singula.mx/solutions/hr): Background checks para contrataciones. - [E-commerce](https://singula.mx/solutions/ecommerce): Prevención de fraude y chargebacks. - [Marketplaces](https://singula.mx/solutions/marketplaces): Verificación de compradores y vendedores. - [Legaltech](https://singula.mx/solutions/legaltech): Due diligence automatizado. - [Insurtech](https://singula.mx/solutions/insurtech): Validación de asegurados y beneficiarios. ## Documentación para desarrolladores - [Documentación](https://singula.mx/docs/api): Referencia completa de TODA la API, un lugar. Cada producto explicado con su URL, request, response y código listo para copiar en cURL, Node, Python, PHP y Go. Empieza aquí para integrar: cubre CURP, RFC, INE (con reporte de calidad de imagen y datos derivados de la credencial), verificación de identidad (KYC, con el contrato de la sesión: `status`, `result` con fotos firmadas, el stream de eventos y el estado público por token), listas de sanciones, judicial, email/phone lookup, OSINT, el motor de documentos (incluidos poder notarial, `requirements`, `ubo` y las listas 69/69-B del SAT), la e.firma (FIEL), la verificación de correo por código, el expediente KYB de persona moral y la política de verificación de la organización (GET y PUT `/organization/verification-policy`: umbrales de recencia, reglas del checklist, componentes exigidos, criticidad de cada uno de los 26 controles, `strict_nulls` y `lock_required`), más los fundamentos (URL base, llaves, el patrón customer, **consultas directas sin cliente**, async con polling y webhooks, errores). Las rutas directas son `POST /app/curp`, `/app/curp/validate`, `/app/rfc`, `/app/rfc/company`, `/app/rfc/validate`, `/app/ine-extraction`, `/app/blacklist`, `/app/judicial`, `/app/judicial-moral`, `/app/email-lookup`, `/app/phone-lookup`, `/app/phone-lookup-premium`, `/app/intel`, `/app/intel-premium`, `/app/document/extract`, `/app/document/init`, `/app/document/csf`, `/app/document/csf/init`, `/app/document/poder`, `/app/document/poder/init`, `/app/fiel` y `/app/email/otp/send`; el motor de riesgo, el expediente KYB y la verificación de identidad siguen siendo sólo sobre un cliente. La política de verificación suma `retention.direct_days` (apagada por defecto): pasados N días, el contenido de una consulta directa que nunca se guardó como cliente se anonimiza —`{ purged: true, purged_at }`— conservando folio, herramienta, fecha y cargo; la fila nunca se borra. - [Docs (inicio)](https://singula.mx/docs): Punto de entrada a la documentación, la guía MCP y la referencia. - [Guía de integración de identidad](https://singula.mx/docs/identidad): Las dos formas de integrar — A) sin librería, el link hospedado por Singula (`verification_url`, también generable desde el panel sin código; no necesita orígenes permitidos ni instalar nada) y B) el widget dentro de tu app con `@singula_systems/identity-js` — y el widget de punta a punta: orígenes permitidos (obligatorios), creación de la sesión y su cuerpo opcional, instalación por npm o jsDelivr con SRI, opciones de `Identity.open()`, las cinco etapas, los callbacks (`onStage`, `onComplete` con approved | declined | review | withheld) y por qué `onComplete` no es autorización, el estado / resultado / stream de eventos del lado del servidor, el webhook `identity.completed`, quién ve el veredicto (`expose_verdict_to_user`), el relevo escritorio→celular con QR, el sandbox y los códigos de error del SDK. - [Guía MCP](https://singula.mx/docs/mcp): Cómo conectar Claude/Cursor/ChatGPT al MCP server de Singula. Sin tools nuevas para las consultas directas: las 12 tools marcadas `sin cliente` aceptan `customer_id` **o** los datos directos: en las de datos (checkBlacklist, getJudicialRecords, getJudicialRecordsMoral, getIntelligence, checkEmail, checkPhone y sus variantes Premium) son excluyentes (error claro si vienen ambos o ninguno); en las de archivo (extractDocument, verifyCsf, verifyPoder, extractIne) se omite `customer_id` para ir directo; `checkFiel` y `sendEmailOtp` aceptan al menos uno. CURP y RFC son la excepción: `getCurp`, `validateCurp`, `getRfc` y `validateRfc` son sólo por cliente, y el camino sin cliente en el MCP son las tools `calculateCurp`, `validateCurpDirect`, `calculateRfc`, `calculateCompanyRfc` y `validateRfcDirect` (por REST sí es directo: `POST /app/curp`, `/app/curp/validate`, `/app/rfc`, `/app/rfc/company`, `/app/rfc/validate`). - [Referencia API — Swagger UI](https://api.singula.mx/api): Interfaz interactiva de la API (OpenAPI). - [Swagger JSON](https://api.singula.mx/api-json): OpenAPI 3.0 spec completa. ## Empresa - [Acerca de](https://singula.mx/about): Misión, equipo y historia. - [Blog](https://singula.mx/blog): Cómo se opera de verdad la verificación de identidad y la lectura de documentos en México. - [El importe de tu recibo de luz es una prueba de vigencia](https://singula.mx/blog/comprobante-editado): Por qué un comprobante de domicilio editado pasa desapercibido, por qué el importe y la fecha son las señales que importan, y cómo se lee un documento ligando cada dato a su origen. - [Dar de alta una empresa sin que nadie abra un PDF](https://singula.mx/blog/alta-persona-moral-por-api): Cómo se da de alta una persona moral 100% por API: qué documentos componen el expediente, qué se coteja contra el SAT y el INE, por qué el beneficiario controlador sale del acta y no de un formulario, y qué contesta el cruce entre documentos que ninguna verificación aislada contesta. - [Extraer una Constancia de Situación Fiscal no es verificarla](https://singula.mx/blog/constancia-situacion-fiscal-verificada): Por qué leer los campos de una constancia no dice si fue alterada, si sigue vigente ni si el contribuyente sigue activo ante el SAT; el cotejo contra la fuente oficial del SAT separa confiar en un PDF de confiar en el registro. - [Carreras](https://singula.mx/careers): Posiciones abiertas. - [Contacto](https://singula.mx/contact): contacto@singula.mx ## Legal - [Aviso de Privacidad](https://singula.mx/privacy): Cumple LFPDPPP (México). - [Términos](https://singula.mx/terms): Términos y condiciones de uso. - [Cookies](https://singula.mx/cookies): Política de cookies. - [Seguridad](https://singula.mx/security): Prácticas de seguridad e infraestructura. ## Idiomas - Español (default): `https://singula.mx/` - English: `https://singula.mx/en/` ## Referencia completa (para LLMs) - [llms-full.txt](https://singula.mx/llms-full.txt): Documentación API completa generada dinámicamente desde el OpenAPI spec. Incluye todos los endpoints con parámetros, request bodies, responses y ejemplos cURL.