API de RESET Verifica
API REST con autenticación por llave. Toda operación devuelve JSON
con el resultado, su fuente y un verification_id auditable.
/v1/wallet,
/v1/uso y /v1/organizacion). Base de la API:
https://api.resetparatodos.com.
Formatos de esta documentación
- api.md — referencia completa en Markdown (para developers y agentes de IA).
- openapi.json — especificación OpenAPI generada del código.
- llms.txt — índice para sistemas de IA.
- Base de la API:
https://api.resetparatodos.com(solo respuestas JSON; la documentación vive en esta página).
En esta página
Autenticación y sandbox
La llave, el prefijo rv_test_ y los datos de prueba.
Endpoints
Qué expone la API, con su verbo y su ruta.
Screening AML
Sanciones, PEP y listas nacionales, con constancia y monitoreo.
Cálculo fiscal y laboral
ISR, IMSS, finiquito y aguinaldo, con su fundamento y vigencia.
Legislación mexicana
El texto exacto de 198 ordenamientos, federales y de los 32 estados.
Validadores y catálogos
CLABE, RFC, CURP, NSS, tarjeta, catálogos SAT y tipo de cambio.
Pago por llamada (x402)
Diez productos en USDC, sin cuenta ni llave, para agentes.
Catálogo de respuestas
Cuerpos reales de un caso limpio, uno con hallazgo y cada error.
Úsalo desde una IA
Servidor MCP, cómo conectarlo y las 30 herramientas.
Integra en tu lenguaje
Python, JavaScript, PHP, C# y cURL, listos para copiar.
Precios y wallet
Modelo prepago, tarifas y códigos de servicio.
Autenticación
Incluye tu llave en el header X-Api-Key en cada petición. Las llaves
se emiten por organización y nunca se almacenan en claro.
curl -H "X-Api-Key: rv_live_..." {BASE}/v1/salud
Sandbox
Las llaves con prefijo rv_test_ activan el modo sandbox:
respuestas sintéticas y deterministas, sin tocar ninguna fuente real y sin costo.
Las validaciones locales de CFDI (XSD, Anexo 20) sí son reales. Datos de prueba:
| Entrada | Resultado sintético |
|---|---|
EFO010101AA1 | 69-B Definitivo |
PRE010101AA1 / DES010101AA1 / SEN010101AA1 | 69-B Presunto / Desvirtuado / Sentencia favorable |
CON010101AA1 | 2 contratos públicos sintéticos |
SAN010101AA1 | Proveedor sancionado |
UUID CFDI 11111111… / 22222222… | Estado SAT Vigente / Cancelado |
| Cualquier otro RFC/UUID válido | Sin coincidencia / No encontrado |
Endpoints
GET /v1/salud
Estado del servicio, versión del motor, frescura de cada fuente y última corrida de cada job. No requiere autenticación.
GET /v1/empresa/{rfc}
Verificación de persona moral: 69-B (con historial de eventos), contratación
pública y sancionados. Parámetro opcional sancionados=false para
omitir la consulta al directorio.
curl -H "X-Api-Key: $KEY" {BASE}/v1/empresa/ABC010203XX1
GET /v1/empresa/{rfc}/contratos
Detalle de contratos públicos del RFC (datos abiertos Compras MX).
Parámetro limite (máx. 500).
POST /v1/factura/verificar
Envía el XML del CFDI como cuerpo (Content-Type: application/xml).
Valida formato, XSD oficial, Anexo 20; consulta el estado en SAT y cruza el emisor
contra 69-B. Parámetro consultar_sat=false para validación solo local.
El XML no se almacena.
curl -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/xml" \
--data-binary @factura.xml {BASE}/v1/factura/verificar
POST /v1/pago/obligaciones
Registra una obligación a conciliar. Cuerpo JSON:
{"referencia":"F-1001","monto":11600.00,"descripcion":"...","moneda":"MXN"}
GET /v1/pago/obligaciones
Lista tus obligaciones. Parámetro opcional estado
(abierta, liquidada, sobrepagada).
POST /v1/pago/cep
Envía el XML del CEP como cuerpo. Parámetro opcional refs con
referencias de obligaciones separadas por coma. Extrae y minimiza la evidencia,
concilia y devuelve el tipo de match. El XML no se almacena.
curl -X POST -H "X-Api-Key: $KEY" --data-binary @cep.xml \
"{BASE}/v1/pago/cep?refs=F-1001"
POST /v1/pago/cep-lote
Conciliación masiva: un ZIP con hasta 500 CEP XML
(multipart/form-data, campo zip, máx. 50 MB). Cada uno se
procesa y concilia por separado; la respuesta trae el resumen, el detalle archivo
por archivo y los ignorados con su motivo. Solo se cobra cada CEP procesado con
éxito; los duplicados no cobran y, si el saldo se agota a medio lote, se detiene e
informa el avance.
curl -X POST -H "X-Api-Key: $KEY" -F "zip=@ceps.zip" {BASE}/v1/pago/cep-lote
POST /v1/transaccion/verificar
Transacción completa en una sola llamada (precio COMBO): empresa +
factura + pago. multipart/form-data con cfdi y
cep (archivos XML, obligatorios), rfc (opcional; por
defecto el emisor del CFDI) y refs (opcional). Devuelve los tres
resultados completos más un verification_id de la transacción que
referencia los tres individuales.
curl -X POST -H "X-Api-Key: $KEY" -F "cfdi=@factura.xml" -F "cep=@cep.xml" -F "rfc=ABC010203XX1" -F "refs=F-1001" {BASE}/v1/transaccion/verificar
GET /v1/verificaciones/{verification_id}
Recupera una verificación previa de tu organización, con su resultado completo tal como se generó.
Monitoreo 69-B con webhooks
Da de alta los RFC de tus proveedores (POST /v1/monitoreo/rfcs,
hasta 500) y registra tu endpoint (POST /v1/webhooks): recibirás un
POST firmado con HMAC-SHA256 (header X-Reset-Firma)
cuando alguno entre, cambie o salga de los listados 69-B. Con
/v1/webhooks/{id}/probar pruebas tu integración al momento. También
puedes completar tus datos fiscales en PUT /v1/organizacion para
recibir el CFDI de tus fondeos.
Constancias, uso y auditoría
POST /v1/verificaciones/{vid}/constancia emite una
constancia con validación pública: documento imprimible con folio
único, fuentes con su SHA-256 y sello de integridad, verificable por cualquiera en
GET /v1/constancias/{folio}/validar sin llave.
GET /v1/uso entrega el log de consumo por mes o rango (máx. un año)
con totales y detalle por consulta. GET /v1/auditoria/expediente
genera el paquete probatorio completo de un periodo — incluyendo la descarga del
snapshot original de cada fuente oficial — para responder auditorías. Además, el
día 1 de cada mes se envía por correo el reporte de consumo del mes anterior.
Screening AML — sanciones y PEP
Cotejo de un nombre o identificador fiscal contra listas de sanciones y personas políticamente expuestas. La respuesta trae un ledger con cada lista consultada y si hubo o no coincidencia, las coincidencias con su score y su fuente, un resumen y, si lo pides, una constancia PDF sellada. Un resultado limpio en todas las listas es el entregable: sirve como evidencia de debida diligencia. El cotejo de nombre es aproximado (fuzzy): cada coincidencia debe revisarse.
POST /v1/screen
Cuerpo: {"name":"Nombre o razón social","country":"MX","tax_id":"..."}
— name obligatorio (mínimo 3 caracteres significativos);
country y tax_id son opcionales y afinan las listas
nacionales. Con "certificate": true la respuesta incluye la constancia
PDF en base64.
Cubre, por corrida: sanciones OFAC (SDN + Consolidated), UE (FSF), Reino Unido (OFSI) y Canadá (SEMA/JVCFOA); listas nacionales de México, Brasil, Colombia, Argentina y República Dominicana; y PEP — políticos nacionales de los países con servicio (MX, BR, CO, AR, DO, CA y US), vivos o de muerte reciente (Wikidata, CC0). No cubre la Lista de Personas Bloqueadas (LPB) de la SHCP, que es una fuente restringida.
Monitoreo continuo de screening
POST /v1/screen/monitoreo (mismo cuerpo que el screening) da de alta
la entidad en vigilancia periódica: la primera corrida fija la línea base y a partir
de ahí solo te avisa, por webhook MONITOREO_SCREEN, cuando cambia el
conjunto de coincidencias. GET /v1/screen/monitoreo lista lo vigilado
con su última revisión y DELETE /v1/screen/monitoreo/{watch_id} lo
retira.
GET /v1/screen/constancia/{folio}
Descarga la constancia PDF de un screening por su folio, sin llave (el folio es el token). Incluye el ledger de listas, las coincidencias y el sello SHA-256 del resultado, para que un tercero pueda comprobarlo.
Cálculo fiscal y laboral
Cálculos determinísticos con deslinde: cada resultado incluye
base_calculo con el fundamento legal, la tabla y versión usadas, su
vigencia, la fórmula y el aviso de que es un resultado matemático, no una resolución
oficial. Si un parámetro no está vigente para la fecha pedida, la respuesta
no calcula y advierte que falta actualizar. Precios:
LABORAL $1/$1.50 y NOMINA $0.50/$0.75.
| Endpoint | Cuerpo | Fundamento |
|---|---|---|
POST /v1/fiscal/aguinaldo | salario_diario, dias_trabajados, dias_aguinaldo | LFT art. 87 |
POST /v1/fiscal/prima-vacacional | salario_diario, anios_antiguedad, porcentaje | LFT arts. 80 y 76 |
POST /v1/fiscal/finiquito | salario_diario, fecha_ingreso, fecha_baja, dias_pendientes_salario, incluir_indemnizacion | LFT |
POST /v1/fiscal/isr | base_gravable, fecha_calculo | LISR art. 96 |
POST /v1/fiscal/imss | sbc_diario, dias, fecha_calculo, prima_riesgo | LSS (cuotas IMSS + Infonavit) |
Riesgos de Trabajo solo se calcula si pasas tu prima. La verificación de Factura
incluye además un bloque validacion_aritmetica sin costo adicional:
comprueba que el subtotal sea la suma de los conceptos, que el total cuadre y que
cada impuesto sea base × tasa.
Legislación mexicana
El texto exacto de la ley, en vez de alucinarlo. Corpus de
198 ordenamientos (Constitución, códigos y leyes federales,
nacionales y de los 32 estados; unos 180 000 artículos), y cada respuesta trae la
fuente oficial, la fecha de última reforma integrada y su deslinde. Es texto de
referencia con fecha de corte, no la ley viva ni asesoría jurídica:
puede no reflejar reformas posteriores y la vigencia se verifica en el DOF o la
gaceta oficial. Precio LEGAL $0.10/$0.15 por consulta.
GET /v1/legal/documentos?materia=&ambito=&entidad=&q=— índice libre, no cobra: lista los ordenamientos y te da eldocumento_id. Filtra por materia, ámbito, entidad o nombre.GET /v1/legal/{documento_id}/articulo/{numero}— texto exacto de un artículo con su cita, ubicación y fuente. Si no se encuentra, no cobra. Ej.:/v1/legal/codigo_civil_federal/articulo/1793.GET /v1/legal/buscar?q=&materia=&ambito=&entidad=&documento=&limite=— búsqueda de texto completo en el articulado, con extractos resaltados, cita y fuente. Una búsqueda sin resultados no cobra.
Validadores, catálogos y tipo de cambio
Validadores (UTIL): puro algoritmo, sin consultar
fuentes. Incluidos sin costo mientras tengas saldo de paquete vigente; sueltos $0.10.
Una entrada malformada no genera cargo.
GET /v1/utilidades/clabe/{clabe}— 18 dígitos, dígito de control y banco.GET /v1/utilidades/rfc/{rfc}— formato, tipo de persona, fecha y dígito.GET /v1/utilidades/curp/{curp}— formato, dígito verificador y decodificación.GET /v1/utilidades/nss/{nss}— formato y dígito Luhn.POST /v1/utilidades/tarjeta— Luhn + BIN + marca (body{"pan":"..."}; va por POST para no exponer el número, que no se conserva completo).
Catálogos y datos (DATO, $0.05 por consulta, mínimo
que se cobra aun con paquete porque implica mantener el catálogo; cada respuesta
lleva fuente y versión):
GET /v1/catalogo/banco/{clave}— participante SPEI por clave.GET /v1/catalogo/sat/{tipo}/{clave}— catálogo SAT (regimen,uso_cfdi,forma_pago).GET /v1/catalogo/telefono/{numero}— formato, LADA y zona.GET /v1/economia/tipo-cambio?fecha=&monto=— tipo de cambio FIX (USD/MXN) de Banxico con la fecha del dato y conversión opcional.
Pago por llamada, sin cuenta (x402)
Además del prepago con llave, cada producto de verificación se ofrece por
pago por llamada con x402: sin registro, sin llave y sin saldo,
pensado para agentes que descubren y pagan el servicio en el momento. Pides el
endpoint sin pago y recibes un 402 con los requisitos (monto exacto en
USDC, red Base eip155:8453, dirección de cobro); tu wallet firma el
micropago y reintentas con el header de pago; el facilitador de Coinbase verifica y
liquida, y recibes el 200 con el resultado. RESET no custodia fondos.
GET /x402/v1/discovery lista todos los productos con su precio y su
endpoint, sin costo. Los productos también quedan indexados en Bazaar.
| Producto | Endpoint (POST) | USDC | Entrada |
|---|---|---|---|
| Screening AML (LatAm + global) | /x402/v1/screen | $0.61 | {"name":"..."} |
| Verificar empresa (MX, 69-B + más) | /x402/v1/company/verify | $0.61 | {"rfc":"..."} |
| Verificar empresa UK (Companies House) | /x402/v1/uk/company/verify | $0.03 | {"company":"número o nombre"} |
| Verificar entidad SEC/EDGAR (US) | /x402/v1/us/sec/verify | $0.03 | {"query":"ticker o CIK"} |
| Verificar LEI (GLEIF, global) | /x402/v1/lei/verify | $0.03 | {"lei":"..."} |
| Validar FEL XML (GT) | /x402/v1/guatemala/fel/validate | $0.03 | {"xml":"..."} |
| Parsear FEL a JSON (GT) | /x402/v1/guatemala/fel/parse | $0.03 | {"xml":"..."} |
| Validar RFC (MX) | /x402/v1/rfc/validate | $0.03 | {"rfc":"..."} |
| Validar CLABE (MX) | /x402/v1/clabe/validate | $0.03 | {"clabe":"..."} |
| Validar CNPJ (BR) | /x402/v1/brazil/cnpj/validate | $0.02 | {"cnpj":"..."} |
Los precios x402 están en USD y los productos mexicanos también viven en el modelo
prepago en MXN: es el mismo importe expresado en dos monedas al tipo
de cambio FIX del día, no una tarifa distinta. Cada endpoint acepta GET
(con querystring) o POST (con JSON).
Códigos de resultado
| result_code | Significado |
|---|---|
COMPANY_OK | Verificación de empresa completada; el estado de cada fuente viene en su bloque. |
CFDI_OK | CFDI procesado; validaciones y estado SAT en el cuerpo. |
CFDI_CON_OBSERVACIONES | CFDI procesado pero alguna validación de formato falló (detalle en validaciones_formato). |
SPEI_OK | CEP procesado y conciliación ejecutada. El desenlace de la conciliación va en conciliacion.result_code. |
SCREEN_OK | Screening ejecutado. El desenlace va en resultado: SIN_MATCH, MATCH_EXACT o MATCH_PARTIAL. |
COMBO_OK | Transacción completa ejecutada. Trae resumen con el result_code de las tres partes (empresa, factura, pago). |
SPEI_DUPLICADO | Ese CEP ya había sido procesado por tu organización. |
INPUT_INVALID | La entrada no es procesable (RFC malformado, XML inválido, sin monto). No genera cargo. |
SOURCE_UNAVAILABLE | Una fuente oficial no pudo consultarse; el dato se reporta como no disponible, nunca se inventa. |
Desenlaces de una conciliación de pago
Viajan dentro de conciliacion.result_code de una respuesta SPEI_OK.
| Valor | Significado |
|---|---|
MATCH_EXACT | El CEP casó con una obligación por monto y referencia. |
MATCH_PARTIAL | Casó, pero el monto pagado es menor al esperado. |
MATCH_OVERPAYMENT | Casó, pero el monto pagado excede al esperado. |
MATCH_ONE_TO_MANY | Un solo pago cubre varias obligaciones. |
MATCH_DUPLICATE | Ese CEP ya se había procesado antes en tu organización. |
SIN_MATCH | No hay obligación registrada que corresponda al pago. |
Estados de fuente dentro de un resultado
| Estado | Significado |
|---|---|
COINCIDENCIA | El identificador aparece en la fuente; se entrega el detalle oficial. |
SIN_COINCIDENCIA_EN_LA_VERSION_CONSULTADA | No aparece en la versión consultada. No es un juicio de confiabilidad. |
SOURCE_NOT_LOADED | La fuente aún no está cargada en la copia local. |
SOURCE_UNAVAILABLE | La fuente no respondió al momento de la consulta. |
Errores HTTP
| Código | Cuándo |
|---|---|
400 | El cuerpo dice ser JSON pero no lo es. |
401 | Falta X-Api-Key o la llave es inválida/inactiva. |
402 | Sin saldo. No hay crédito de paquete ni usos del producto. Recarga en tu panel y reintenta; la consulta no se ejecutó y no se cobró. |
403 | La llave es válida pero no tiene permiso para esa operación. |
404 | Recurso inexistente (o verificación de otra organización). |
409 | Conflicto (p. ej. referencia de obligación duplicada). |
413 | El archivo enviado excede el tamaño permitido. |
415 | Falta Content-Type: application/json donde se espera JSON. |
422 | Entrada inválida (cuerpo vacío, JSON incompleto, RFC malformado). No genera cargo. |
Catálogo de respuestas
Estos son cuerpos reales del sandbox, no ejemplos redactados a mano: si mandas
la misma entrada con tu llave rv_test_ recibes exactamente esto.
Las entradas de prueba están en la tabla de Sandbox.
Úsalos para escribir tus pruebas: lo que cambia entre un caso limpio y
uno con hallazgo no es el código HTTP —siempre es 200— sino el
estado de cada bloque de fuente.
Empresa sin hallazgos
GET /v1/empresa/AAA010101AAA → 200. Recortado a los
campos que decides: cada fuente responde por separado y ninguna coincide.
{
"verification_id": "RV-20260825-SBX0FC9AF",
"service": "COMPANY",
"sandbox": true,
"rfc": "AAA010101AAA",
"tipo_persona": "moral",
"sat_69b": { "estado": "SIN_COINCIDENCIA_EN_LA_VERSION_CONSULTADA",
"situaciones": [], "historial_eventos": [] },
"sat_art69": { "estado": "SIN_COINCIDENCIA_EN_LA_VERSION_CONSULTADA",
"listas": [] },
"proveedores_sancionados": { "estado": "SIN_COINCIDENCIA" },
"contratacion_publica": { "estado": "SIN_COINCIDENCIA_EN_LA_VERSION_CONSULTADA",
"contratos": 0 },
"result_code": "COMPANY_OK",
"consultado": "2026-08-25T23:16:49.937443+00:00",
"engine_version": "1.0.0"
}
Ojo con el nombre del estado.
Decimos SIN_COINCIDENCIA_EN_LA_VERSION_CONSULTADA y no “limpio” a
propósito: significa que ese RFC no aparece en la versión de la lista que se
consultó, con la fecha que viene en fuente. No es un certificado de
buena conducta ni un juicio sobre la empresa.
Empresa con hallazgo en el 69-B
GET /v1/empresa/EFO010101AA1 → 200. Mismo
result_code; lo que cambia es el bloque de la fuente que coincidió.
{
"verification_id": "RV-20260825-SBX18362B",
"service": "COMPANY",
"rfc": "EFO010101AA1",
"sat_69b": {
"estado": "COINCIDENCIA",
"situaciones": [
{ "situacion": "Definitivo",
"nombre": "EMPRESA FICTICIA OPERACIONES SA DE CV",
"detalle": { "RFC": "EFO010101AA1",
"Situación del contribuyente": "Definitivo",
"Publicación página SAT": "2025-01-15" },
"actualizado": "2026-08-25T23:16:49.937616+00:00" }
],
"historial_eventos": [
{ "evento": "ADDED", "situacion": "Definitivo",
"fecha": "2025-01-15T00:00:00+00:00" }
]
},
"result_code": "COMPANY_OK"
}
Las cuatro situaciones posibles del 69-B son Presunto, Definitivo, Desvirtuado y Sentencia Favorable, y no significan lo mismo: las dos últimas son a favor del contribuyente. Trátalas distinto en tu lógica — bloquear a un “Desvirtuado” es un error de negocio, no del servicio.
Estado de un CFDI ante el SAT
Dentro de una respuesta CFDI_OK, en el bloque
estado_sat. En sandbox lo decide el prefijo del UUID.
| UUID de prueba | Estado | CodigoEstatus | Qué significa |
|---|---|---|---|
11111111-… | Vigente | S — Comprobante obtenido satisfactoriamente | La factura existe y no está cancelada. |
22222222-… | Cancelado | S — Comprobante obtenido satisfactoriamente | Existe pero fue cancelada. El SAT respondió bien: el “error” es del comprobante, no de la consulta. |
| cualquier otro | No Encontrado | N — 602: Comprobante no encontrado | El SAT no lo reconoce. Suele ser un UUID mal capturado o un CFDI nunca timbrado. |
Entrada inválida
Cuando lo que mandas no es procesable, la respuesta lo dice y no se cobra.
{
"result_code": "INPUT_INVALID",
"detalle": "RFC invalido: 'NOESRFC'",
"sandbox": true
}
Sin saldo
Único caso en que la consulta ni siquiera se ejecuta. Llega como HTTP
402 antes de tocar cualquier fuente.
HTTP/1.1 402 Payment Required
{ "detail": { "error": "Sin usos ni saldo suficiente",
"servicio": "COMPANY",
"saldo": "0.00",
"precio_individual": "14" } }
Recarga en tu panel y reintenta la misma llamada: no se ejecutó ni se cobró nada.
Cómo leerlo en tu código
La regla corta, para no escribir if de más:
- ¿La llamada funcionó? HTTP
200yresult_codetermina en_OK. - ¿Hay algo que revisar? Recorre los bloques de fuente y
busca
estado == "COINCIDENCIA". Nunca asumas que “sin coincidencia” equivale a aprobado. - ¿Faltó información?
SOURCE_UNAVAILABLEoSOURCE_NOT_LOADEDen un bloque: esa fuente no se pudo consultar. Preferimos decírtelo a inventarte el dato — no lo trates como “sin coincidencia”. - ¿Me van a cobrar? Sí cuando hay
_OK. No conINPUT_INVALID,402,4xxni en sandbox.
Úsalo desde una IA (MCP)
Además de la API REST, RESET Verifica habla Model Context Protocol: un agente de IA —Claude, un asistente propio, un flujo automatizado— puede verificar un RFC, validar un CFDI o correr un screening sin que le escribas el cliente HTTP.
| Servidor | https://mcp.resetparatodos.com/mcp |
|---|---|
| Transporte | streamable-http |
| Autenticación | Header X-Api-Key con tu llave. Con rv_test_ el agente trabaja en sandbox y no gasta saldo. |
Conectarlo a Claude Code
claude mcp add --transport http reset-verifica \
https://mcp.resetparatodos.com/mcp \
--header "X-Api-Key: rv_test_tu_llave"
Conectarlo a Claude Desktop u otro cliente MCP
En el archivo de configuración del cliente:
{
"mcpServers": {
"reset-verifica": {
"type": "http",
"url": "https://mcp.resetparatodos.com/mcp",
"headers": { "X-Api-Key": "rv_test_tu_llave" }
}
}
}
Qué puede hacer el agente
Al conectar, el cliente descubre solo las 30 herramientas disponibles. Las principales:
| Herramienta | Para qué | Costo |
|---|---|---|
verificar_empresa | RFC contra 69-B, artículo 69, contratación pública y sancionados. | COMPANY |
verificar_factura | XSD del Anexo 20 y estado del CFDI ante el SAT. | CFDI |
verificar_pago | Procesa un CEP y lo concilia contra tus obligaciones (registrar_obligacion las da de alta). | SPEI |
screening_listas | Nombre o ID fiscal contra sanciones, PEP y listas nacionales. screening_monitorear deja el nombre vigilado. | SCREEN |
verificacion_completa | Empresa + factura + pago en una sola llamada. | COMBO |
validar_clabe, validar_rfc, validar_curp, validar_nss, validar_tarjeta | Validación estructural instantánea, sin consultar fuentes. | UTIL |
consultar_catalogo, tipo_cambio | Bancos SPEI, catálogos SAT, LADA; FIX de Banxico. | DATO |
calcular_laboral, calcular_isr, calcular_imss | Finiquito y liquidación (LFT), ISR de nómina, cuotas IMSS/Infonavit. | LABORAL / NOMINA |
catalogo_leyes, consultar_ley, buscar_ley | Texto exacto de legislación mexicana federal y de los 32 estados. | LEGAL |
consultar_precios, consultar_saldo, consultar_uso, estado_servicio, catalogo_servicios | Tarifas, saldo, consumo y estado de las fuentes. | gratis |
crear_fondeo, acreditar_fondeo, emitir_constancia, validar_constancia | Comprar saldo por SPEI, acreditarlo con el CEP y emitir o validar constancias. | gratis / UTIL |
El agente no decide, reporta.
Las herramientas devuelven hechos verificables con su fuente y su fecha. Si tu
asistente va a recomendar bloquear a un proveedor, que cite el
verification_id: es lo que después sostiene la decisión ante una
auditoría.
Integra en tu lenguaje
La API es REST sobre HTTPS con JSON: sirve cualquier cliente HTTP, sin SDK.
El patrón es siempre el mismo —el header X-Api-Key y leer
result_code—. Empieza con tu llave rv_test_: mismo
código, sin costo.
cURL
curl -s https://api.resetparatodos.com/v1/empresa/EFO010101AA1 \
-H "X-Api-Key: rv_test_tu_llave"
Python
import os, requests
API = "https://api.resetparatodos.com"
SES = requests.Session()
SES.headers["X-Api-Key"] = os.environ["RESET_API_KEY"]
def verificar_empresa(rfc):
r = SES.get(f"{API}/v1/empresa/{rfc}", timeout=30)
if r.status_code == 402:
raise RuntimeError("sin saldo: recarga en tu panel")
r.raise_for_status()
return r.json()
d = verificar_empresa("EFO010101AA1")
hallazgos = [f for f in ("sat_69b", "sat_art69", "proveedores_sancionados")
if d.get(f, {}).get("estado") == "COINCIDENCIA"]
print(d["verification_id"], "hallazgos:", hallazgos or "ninguno")
JavaScript / Node
const API = "https://api.resetparatodos.com";
async function verificarEmpresa(rfc) {
const r = await fetch(`${API}/v1/empresa/${rfc}`, {
headers: { "X-Api-Key": process.env.RESET_API_KEY },
});
if (r.status === 402) throw new Error("sin saldo: recarga en tu panel");
if (!r.ok) throw new Error(`RESET ${r.status}: ${await r.text()}`);
return r.json();
}
const d = await verificarEmpresa("EFO010101AA1");
const hallazgos = ["sat_69b", "sat_art69", "proveedores_sancionados"]
.filter((f) => d[f]?.estado === "COINCIDENCIA");
console.log(d.verification_id, hallazgos.length ? hallazgos : "sin hallazgos");
PHP
El caso más común en despachos contables y ERPs mexicanos.
<?php
function verificar_empresa(string $rfc): array {
$ch = curl_init("https://api.resetparatodos.com/v1/empresa/" . rawurlencode($rfc));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => ['X-Api-Key: ' . getenv('RESET_API_KEY')],
]);
$cuerpo = curl_exec($ch);
$codigo = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($codigo === 402) throw new RuntimeException('Sin saldo: recarga en tu panel.');
if ($codigo !== 200) throw new RuntimeException("RESET $codigo: $cuerpo");
return json_decode($cuerpo, true);
}
$d = verificar_empresa('EFO010101AA1');
foreach (['sat_69b', 'sat_art69', 'proveedores_sancionados'] as $fuente) {
if (($d[$fuente]['estado'] ?? '') === 'COINCIDENCIA') {
echo "Hallazgo en $fuente — folio {$d['verification_id']}\n";
}
}
C# / .NET
using System.Net;
using System.Net.Http.Json;
using System.Text.Json;
var http = new HttpClient { BaseAddress = new Uri("https://api.resetparatodos.com") };
http.DefaultRequestHeaders.Add("X-Api-Key",
Environment.GetEnvironmentVariable("RESET_API_KEY"));
var rfc = "EFO010101AA1";
var resp = await http.GetAsync($"/v1/empresa/{rfc}");
if (resp.StatusCode == HttpStatusCode.PaymentRequired)
throw new InvalidOperationException("Sin saldo: recarga en tu panel.");
resp.EnsureSuccessStatusCode();
var d = await resp.Content.ReadFromJsonAsync<JsonElement>();
var folio = d.GetProperty("verification_id").GetString();
foreach (var fuente in new[] { "sat_69b", "sat_art69", "proveedores_sancionados" })
if (d.TryGetProperty(fuente, out var b) &&
b.GetProperty("estado").GetString() == "COINCIDENCIA")
Console.WriteLine($"Hallazgo en {fuente} — folio {folio}");
Antes de pasar a producción
- La llave va en el servidor, en una variable de entorno o un gestor de secretos. Nunca en el front, en un repositorio ni en una URL: quien la tenga consume tu saldo.
- Guarda el
verification_idjunto al registro que verificaste. Es lo que te permite reconstruir después qué se consultó y cuándo. - Trata
SOURCE_UNAVAILABLEcomo “falta revisar”, no como aprobado, y reintenta más tarde. - Cambia
rv_test_porrv_live_y nada más. La forma de la respuesta es idéntica; solo cambia de dónde salen los datos.
Especificación OpenAPI
La API publica su especificación en
https://api.resetparatodos.com/openapi.json, generada del código
(copia estática en esta misma carpeta).
Precios y wallet (prepago)
Modelo 100% prepago. Todos los precios ya incluyen IVA y están
en MXN; los créditos tienen vigencia de 365 días. La fuente única
de precios es la API: GET /v1/precios (esta tabla es una copia de
referencia; ante cualquier duda, manda la API).
| Servicio | En paquete | Individual |
|---|---|---|
Empresa (COMPANY) | $12 | $14 |
Screen — sanciones/listas (SCREEN) | $12 | $14 |
Factura / CFDI (CFDI) | $2 | $3 |
Pago / SPEI (SPEI) | $3 | $4 |
Transacción completa (COMBO: las 3 en una llamada) | $18 | $22 |
Cálculo laboral (LABORAL) | $1 | $1.50 |
Cálculo de nómina (NOMINA) | $0.50 | $0.75 |
Legislación mexicana (LEGAL) | $0.10 | $0.15 |
Catálogos y datos (DATO) | $0.05 | $0.05 |
Validadores (UTIL) | incluido con paquete | $0.10 |
Fondeo por SPEI: POST /v1/wallet/fondeos (mínimo $500 de crédito)
→ transfieres el monto indicado → subes el CEP XML a
/v1/wallet/fondeos/{referencia}/cep y el saldo se acredita.
Solo se cobra la verificación completada: INPUT_INVALID,
SOURCE_UNAVAILABLE y los CEP duplicados no generan cargo. Sin saldo,
la API responde 402. El sandbox nunca cobra. Postpago: más adelante,
mediante contrato.
