API de Identidad

La API de Identidad está organizada bajo el esquema REST.

JSON API

La API de Identidad solo responde a JSON, los estándares utilizados son JSON-API y HATEOAS, a menos de que la documentación indique lo contrario.

Autenticación

La autenticación es basada en tokens. Tu llave privada es requerida en todas las peticiones realizadas, a través del header de Authorization.

Puedes obtener tu llave privada y/o cambiarla en el ára de “Mis preferencias” en la sección de “Acceso API”.

Tu llave privada es solo para ti, mantenla segura. No la compartas públicamente, ni la registres en tu sistema de Control de Versiones.

Todas las peticiones deben ser hechas mediante HTTPS, he aquí un ejemplo de una petición válida:

$ curl https://identidad.creditar.io/api/verificar-documento \
    -H "Authorization: Token token=your-api-key" \
    -H "Accept: application/vnd.creditar-identidad.v1+json" \
    -H "Content-Type: application/json"

Headers

En el ejemplo anterior se muestran los 3 headers que son de carácter obligatorio en todas las peticiones a realizar en la API de Identidad

  1. Authorization. Este header debe de incluir el API Key.

    Authorization: Token token=your-api-key
  2. Accept: Incluye el contenido y versión que se espera de respuesta.

    Accept: application/vnd.creditar-identidad.v1+json
  3. Content-Type: Es requerido cuando la petición es diferente a GET e incluye un cuerpo. A excepción donde la petición indique un valor diferente.

    Content-Type: application/json

El API de Identidad responderá con un código de estado 401 si no se envía el header de Authorization y con un código 406 si es vació o incorrecto el header de Accept. También puede responde con un código 429 si ya se llegó al límite de peticiones (30 peticiones por mes) en las cuentas trial.

Las respuestas a la peticiones incluiran 4 headers, 3 de los cuales son informativos para las cuentas en modo trial.

  1. Rate Limit. Indica el límite mensual de peticiones para cuentas en modo trial.

    X-RateLimit-Limit: 30
  2. Rate Limit Remaining. Indica la cantidad de peticiones disponibles durante el mes para cunetas en modo trial. Este valor es optimista y puede ser menor si suceden múltiples peticiones al mismo tiempo.

    X-RateLimit-Remaining: 25
  3. Rate Limit Reset. Indica en tiempo Epoch Unix cuando el límite de peticiones al mes se reinicia. La fecha siempre será a partir del último segundo del mes actual.

    X-RateLimit-Reset: 1627793999
  4. Content Type. La respuesta del API de Identidad siempre es en formato json.

    Content-Type: application/json

Versiones

La API de Identidad cuenta actualmente con una versión y esta se especifica con el header Accept seguido de la versión.

  • Accept

    Accept: application/vnd.creditar-identidad.v1+json

El Changelog lista cambios relevantes en el API.

  • No hay cambios.

Versión 1

Webhooks

El API de Identidad responde con Webhooks en las acciones de Verificación de documentos, Validación de CURP e, Identifícate.

El motivo de responder vía un Webhook es debido a que estas dos acciones pueden tardar más de un par de segundos en generar la respuesta. La llamada del Webhook se hace siempre vía HTTPS a la URL configurada en la aplicación.

Los headers que se envían con la llamada son los siguientes.

Content-Type: application/json
Accept: application/json
Referer: https://identidad.creditar.io/api

El body del Webhook contienen un mensaje firmado criptográficamente utilizando como llave secreta el Api Key de la cuenta.

{
  "message": "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkludGNJblJwZEd4bFhDSTZYQ0pJWld4c2J5QlNkV0o1SUZabGNtbG1hV1Z5WENKOUlnPT0iLCJleHAiOiIyMDIxLTA3LTI0VDIyOjIwOjA3LjgzNloiLCJwdXIiOiJ3ZWJob29rIn19--0ba40033cdc83a785a09566135e06a66176a3cd038ba49b057c4206686586427"
}

El valor de message está divido en dos partes unidas por --. La primer parte es el contenido del mensaje codificado con Base64.

eyJfcmFpbHMiOnsibWVzc2FnZSI6IkludGNJblJwZEd4bFhDSTZYQ0pJWld4c2J5QlNkV0o1SUZabGNtbG1hV1Z5WENKOUlnPT0iLCJleHAiOiIyMDIxLTA3LTI0VDIyOjIwOjA3LjgzNloiLCJwdXIiOiJ3ZWJob29rIn19

La segunda parte es un Hash-based Message Authentication Code (HMAC) de la primer parte del mensaje y calculado con OpenSSL y el Api Key de la cuenta.

0ba40033cdc83a785a09566135e06a66176a3cd038ba49b057c4206686586427

Para comprobar que el mensaje del Webhook no ha sido modificado hay que tomar la parte del mensaje codificada con Base64 y calcular su HMAC usando el Api Key. El mensaje es válido si el HMAC calculado es el mismo al que se recibió del Webhook.

Una vez realizada la verificación, es necesario decodificar con Base64 el mesaje. Al hacerlo se obtendrá un documento de JSON que contiene tres llaves.

Llave Descripción
exp Contiene una fecha en formato ISO 8601 con zona horaria universal (UTC), ej 2021-07-14T00:08:41.852Z. Este valor es utilizado para conocer si el mensaje expiró o no. La fecha y hora va contener una ventana de 5 minutos a partir de cuando se envío el Webhook.
pur Cadena de texto que indica el propósito del mensaje, en este caso Webhook. Este atributo siempre tendrá el mismo valor.
message Mensaje final codificado en Base64
{
  "_rails": {
    "message":"IntcInRpdGxlXCI6XCJIZWxsbyBSdWJ5IFZlcmlmaWVyXCJ9Ig==",
    "exp":"2021-07-14T00:08:41.852Z",
    "pur":"webhook"
  }
}

Una vez que se validó la expiración exp y el propósito pur del mensaje, al decodificar de Base64 el mensaje final message obtendremos la información del Webhook.

Para conocer la estructura del mensaje final revise más adelante en la acción del API correspondiente.

Verificación de documentos

La verificación de documentos recibe las imágenes frontales y traseras de un IFE/INE; además de la imágen del pasaporte Mexicano, para validar que sí son ese tipo de documento y extraer información que pueder ser útil para procesos de KYC.

Verificación de documentos

En esta ruta se podrá enviar un documento a verificación.

POST https://identidad.creditar.io/api/verificacion-documentos
Requestsexample 1
Headers
Content-Type: multipart/form-data
Accept: application/vnd.creditar-identidad.v1+json
Authorization: Token token=fa9ff61d-542d-48d4-84f2-1d0c3bc176c8
Body
{
  "image": "file",
  "document_type": "pasaporte"
}
Schema
{
  "type": "object",
  "properties": {
    "image": {
      "type": "string",
      "description": "El archivo a enviar de acuerdo la especificación RFC 2388 que define como enviar archivos con el protocolo `multipart/form-data`."
    },
    "document_type": {
      "type": "string",
      "description": "Uno de los valores válido que identifican el tipo de documento."
    }
  },
  "required": [
    "image",
    "document_type"
  ],
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Responses201422429
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "data": [
    {
      "object": "verificacion.documento",
      "id": "6313ac69-dc0d-45a8-8804-4ac451e1db5c",
      "created": 1489796822
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objecto en la respuesta"
          },
          "id": {
            "type": "string",
            "description": "ID único del documento"
          },
          "created": {
            "type": "number",
            "description": "Fecha en la que se creó el documento verificar en formato Epoch Unix"
          }
        },
        "required": [
          "object",
          "id",
          "created"
        ]
      },
      "description": "Documentos a verificar"
    }
  },
  "required": [
    "data"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "file_blank",
      "code": "ERR-422",
      "message": "El atributo es requerido",
      "href": "https://identidad.creditar.io/api/documentation#ERR-422"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "usage_limit",
      "code": "ERR-429",
      "message": "Rate limit exceeded",
      "href": "https://identidad.creditar.io/api/documentation#ERR-429"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}

Verificar documento
POST/verificacion-documentos

Permite enviar una imagen del documento a verificar, así como el tipo de documento, el cual puede ser una de las siguientes opciones: ine_frontal, ine_reverso, ife_frontal, ife_reverso, pasaporte.

En caso de éxito, la respuesta contendrá un identificador único al documento a verificar y la respuesta de verificación será enviada mediante una llamada al Webhook configurado en la aplicación.


Listas de sanciones

La consulta a listas de sanciones permite consultar si una persona se encuentra en las listas de sanciones de el Sistema de Administración Tributaria, el Departamento del Tesoro de los Estados Unidos, si es una persona públicamente expuesta, y en las listas de la DEA, Interpol y FBI.

Consulta a listas de sanciones

En las consultas a las listas de sanciones se pueden utilizar nombres completos, parciales, alias, Registro Federal de Contribuyentes y fechas de nacimiento. El resultado serán todos los registros que contengan alguno de los datos de búsqueda.

GET https://identidad.creditar.io/api/listas-sanciones?name=Juan+Preciado&date=3+de+Agosto+1984
Requestsexample 1
Headers
Content-Type: application/json
Accept: application/vnd.creditar-identidad.v1+json
Authorization: Token token=fa9ff61d-542d-48d4-84f2-1d0c3bc176c8
Responses200429
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "data": [
    {
      "object": "lista_sanciones.entrada",
      "list_name": "SAT 69b",
      "list_date": "2021-03-01",
      "fiscal_name": "Empresa S.A.",
      "last_name": "Rodríguez",
      "given_name": "Maria Luisa",
      "alias": "Malu",
      "dob": "1982-02-15",
      "rfc": "ROPM820215PT6",
      "curp": "ROPMN820215MCCDRR5",
      "occupation": "Regidora",
      "position": "``",
      "status": "``",
      "sanction_details": "``",
      "other_information": "``",
      "citizenship_remarks": "``"
    }
  ],
  "pagination": {
    "pages": {
      "next_page": "2",
      "next_uri": "/api/listas-sanciones?name=luisa+rodriguez&date=&page=2"
    }
  },
  "links": [
    {
      "rel": "self",
      "uri": "/api/listas-sanciones"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objeto en la respuesta"
          },
          "list_name": {
            "type": "string",
            "description": "Nombre de la lista"
          },
          "list_date": {
            "type": "string",
            "description": "Fecha de la lista"
          },
          "fiscal_name": {
            "type": "string",
            "description": "Nombre de persona moral"
          },
          "last_name": {
            "type": "string",
            "description": "Apellidos de persona física"
          },
          "given_name": {
            "type": "string",
            "description": "Nombre de persona física"
          },
          "alias": {
            "type": "string",
            "description": "Otros nombres"
          },
          "dob": {
            "type": "string",
            "description": "Fecha de nacimiento de persona física"
          },
          "rfc": {
            "type": "string",
            "description": "RFC de la persona física o moral"
          },
          "curp": {
            "type": "string",
            "description": "CURP de la persona física o moral"
          },
          "occupation": {
            "type": "string",
            "description": "Ocupación de la persona física"
          },
          "position": {
            "type": "string",
            "description": "Posición de la persona física"
          },
          "status": {
            "type": "string",
            "description": "Resultado o motivación de aparecer en lista"
          },
          "sanction_details": {
            "type": "string",
            "description": "Detalles de la sanción de aparecer en lista"
          },
          "other_information": {
            "type": "string",
            "description": "Información adicional de la sanción de aparecer en lista"
          },
          "citizenship_remarks": {
            "type": "string",
            "description": "Información adicional de ciudadanía"
          }
        },
        "required": [
          "object",
          "list_name",
          "list_date"
        ]
      },
      "description": "Entradas en las listas."
    },
    "pagination": {
      "type": "object",
      "properties": {
        "pages": {
          "type": "object",
          "properties": {
            "next_page": {
              "type": "string",
              "description": "Siguiente página."
            },
            "next_uri": {
              "type": "string",
              "description": "URI de la siguiente página."
            }
          },
          "required": [
            "next_page",
            "next_uri"
          ],
          "description": "Páginas"
        }
      },
      "required": [
        "pages"
      ],
      "description": "Información de paginación"
    },
    "links": {
      "type": "array",
      "description": "Links a referencias"
    }
  },
  "required": [
    "data",
    "pagination",
    "links"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "usage_limit",
      "code": "ERR-429",
      "message": "Rate limit exceeded",
      "href": "https://identidad.creditar.io/api/documentation#ERR-429"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}

Consultar listas de sanciones
GET/listas-sanciones{?name,date}

Para la consulta existen dos attributos que al menos uno de ellos debe contener un valor, name y date. Con esos valores se realizará la búsqueda en listas y se regresará como respuesta todas las coincidencias encontradas con un máximo de 100 registros. En caso de encontrar más de 100 registros se indicará la URL para pedir la siguiente página y así sucecivamente.

URI Parameters
HideShow
name
string (optional) Example: Juan+Preciado

Nombre completo, parcial o alias, además de poderse utilizar el Registro Federal de Causantes.

date
string (optional) Example: 3+de+Agosto+1984

Se puede enviar a fecha de nacimiento en un formato libre.


Validación de CURP

La validación de CURP además de validar el formato también valida que sea un CURP existente. Al validar el CURP se obtiene información como nombres, lugar se nacimiento, fecha de nacimiento y sexo.

Validación de CURP

Unicamente se require como parámetro del CURP que se quiere validar.

Los datos resultados de la Validación de CURP enviados vía WebHook son los siguiente.

CURP Válido

Este caso es para CURP que tiene el formato correcto, y al momento de validarse es un CURP existente.

Ejemplo de JSON de respuesta.

{
  "object": "validacion.curp",
  "curp": "ROPMN820215MCCDRR5",
  "names": "Maria Luisa",
  "last_name": "Rodriguez",
  "mother_name": "Perez",
  "dob": "1982-02-15",
  "gender": "F",
  "city": "Tijuana",
  "state": "Baja California",
  "nationality": "MEX"
}

Esquema JSON para la respuesta.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "object": {
      "type": "string"
    },
    "curp": {
      "type": "string"
    },
    "names": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "mother_name": {
      "type": "string"
    },
    "dob": {
      "type": "string"
    },
    "gender": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "nationality": {
      "type": "string"
    }
  },
  "required": [
    "object",
    "curp",
    "names",
    "last_name",
    "mother_name",
    "dob",
    "gender",
    "city",
    "state",
    "nationality"
  ]
}

CURP inválido o inexistente Para el caso de un CURP que es inválido o inexistente la respuesta vía Webhook es la siguiente.

Ejemplo de JSON de respuesta.

{
  "object": "validacion.curp",
  "curp": "ROPMN820215MCCDRR5",
  "message": "Es inexistente o no hay información",
}

El esquema JSON para la respuesta es el siguiente.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "object": {
      "type": "string"
    },
    "curp": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "object",
    "curp",
    "message"
  ]
}
POST https://identidad.creditar.io/api/validacion-curps
Requestsexample 1
Headers
Content-Type: application/json
Accept: application/vnd.creditar-identidad.v1+json
Authorization: Token token=fa9ff61d-542d-48d4-84f2-1d0c3bc176c8
Body
{
  "curp": "ROPMN820215MCCDRR5"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "curp": {
      "type": "string",
      "description": "CURP a validar con formato correcto."
    }
  },
  "required": [
    "curp"
  ]
}
Responses201422429
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "data": [
    {
      "object": "validacion.curp",
      "id": "ROPMN820215MCCDRR5",
      "created": 1489796822
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objecto en la respuesta"
          },
          "id": {
            "type": "string",
            "description": "CURP a validar"
          },
          "created": {
            "type": "number",
            "description": "Fecha en la que se creó el documento verificar en formato Epoch Unix"
          }
        },
        "required": [
          "object",
          "id",
          "created"
        ]
      },
      "description": "CURP a validar"
    }
  },
  "required": [
    "data"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "file_blank",
      "code": "ERR-422",
      "message": "El atributo es requerido",
      "href": "https://identidad.creditar.io/api/documentation#ERR-422"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "usage_limit",
      "code": "ERR-429",
      "message": "Rate limit exceeded",
      "href": "https://identidad.creditar.io/api/documentation#ERR-429"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}

Validar CURP
POST/validacion-curps

El CURP a validar debe de cumplir con el formato válido. En el caso de que se envíe un CURP con formato inválido la respuesta es inmediata indicando esta situación.

Cuando el CURP tenga el formato válido, el API responderá que ha aceptado el CURP pero la respuesta con la información de la validación será enviada mediante una llamada al Webhook configurado en la aplicación.


Validación de Email

La validación de Email además de validar el formato también valida que email sea accesible, no sea desechable, y si ha sido expuesto al publico mediante algun ataque de seguridad de alguna de las plataformas en las que este email este en uso.

Validación de Email

Unicamente require como parámetro el email que se quiere validar. Los resultados de la Validación de Email será enviado vía WebHook con los siguientes datos.

Respuesta de Validación de Email

Cuando el email proporcionado sea validado por nuestro sistema, enviaremos el siguiente JSON de respuesta.

{
  "object": "validate.email",
  "email": "cliente@creditar.io",
  "reachable": "true",
  "disposable": "false",
  "role_account": "false",
  "accepts_mail": "true",
  "full_inbox": "true",
  "catch_all": "true",
  "deliverable": "true",
  "disabled": "false",
  "compromised": "true"
}

Esquema JSON para la respuesta.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "object": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "reachable":{
      "type": "string"
    },
    "disposable":{
      "type": "string"
    },
    "role_account":{
      "type": "string"
    },
    "accepts_mail":{
      "type": "string"
    },
    "full_inbox":{
      "type": "string"
    },
    "catch_all":{
      "type": "string"
    },
    "deliverable":{
      "type": "string"
    },
    "disabled":{
      "type": "string"
    },
    "compromised":{
      "type": "string"
    },
  },
  "required": [
    "object",
    "email",
    "reachable",
    "disposable",
    "role_account,"
    "accepts_mail,"
    "full_inbox",
    "catch_all",
    "deliverable",
    "disabled",
    "compromised"
  ]
}
POST https://identidad.creditar.io/api/validacion-emails
Requestsexample 1
Headers
Content-Type: application/json
Accept: application/vnd.creditar-identidad.v1+json
Authorization: Token token=fa9ff61d-542d-48d4-84f2-1d0c3bc176c8
Body
{
  "email": "cliente@creditar.io"
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email a validar con formato correcto y accesible."
    }
  },
  "required": [
    "email"
  ]
}
Responses201422429
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "data": [
    {
      "object": "validacion.email",
      "id": "cliente@creditar.io",
      "created": 1489796822
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objecto en la respuesta"
          },
          "id": {
            "type": "string",
            "description": "Email a validar"
          },
          "created": {
            "type": "number",
            "description": "Fecha en la que se creó el documento verificar en formato Epoch Unix"
          }
        },
        "required": [
          "object",
          "id",
          "created"
        ]
      },
      "description": "Email a validar"
    }
  },
  "required": [
    "data"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "file_blank",
      "code": "ERR-422",
      "message": "El atributo es requerido",
      "href": "https://identidad.creditar.io/api/documentation#ERR-422"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "usage_limit",
      "code": "ERR-429",
      "message": "Rate limit exceeded",
      "href": "https://identidad.creditar.io/api/documentation#ERR-429"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}

Validar Email
POST/validacion-emails

El email a validar debe tener un formato valido y ser accesible. En caso de no enviar ningún email para validar, el servicio responde indediatamente via JSON informado de la ausencia del parametro. De lo contrario, cuando el email enviado tenga un formato valido y sea accesible, la respuesta sería enviada mediante una llamada al Webhook configurado en la aplicación.


Identidad

Este servicio, valida una CURP, consulta las listas de sanciones para un nombre y/o una fecha, verifica una serie de documentos a los cuales realiza la extracción de texto, y valida un email. Todo en una acción.

Identidad

Esta ruta recibe el valor de una CURP para validar, un nombre y/o una fecha para consultar las listas de sanciones, un arreglo de documentos para verificar y extraer sus elementos, y, un email para validar. El resultado de la consulta, será enviado a través de un Webhook configurado en la aplicación.

Respuesta a Verificación de Identidad

Cuando la petición al servicio reciba las validaciones y verificaciones solicitadas se realizará el envio de la respuesta mediante un Webhook, el cual debe ser configurado desde la aplicación. El ejemplo de esta respuesta, ya decodificada, es el siguiente:

Ejemplo de JSON de respuesta.

{
  "object": "identidad",
  "curp": {
    "object": "validacion.curp",
    "curp": "ROPMN820215MCCDRR5",
    "names": "Maria Luisa",
    "last_name": "Rodriguez",
    "mother_name": "Perez",
    "dob": "1982-02-15",
    "gender": "F",
    "city": "Tijuana",
    "state": "Baja California",
    "nationality": "MEX"
  },
  "documents": [
    {
      "global_id": "6d86a0c9-33b2-4853-bad0-facea372046f",
      "document_class": "INE frontal",
      "clave_elector": "",
      "curp": "",
      "seccion": "",
      "nombre": "RODRIGUEZ PEREZ MARIA LUISA",
      "vigencia": "",
      "calle": "AV CARRANZA 1248",
      "ciudad": "COLIMA COL",
      "colonia": "SANTA BARBARA 28017",
      "object": "verificacion.documento"
    },
    {
      "global_id": "6d86a0c9-33b2-4853-bad0-facea372046f",
      "document_class": "INE reverso",
      "cic": "181206982",
      "ocr": "0926044241367",
      "name": "RODRIGUEZ PEREZ  MARIA XLUIS",
      "object": "verificacion.documento"
    }
  ],
  "sanctions": {
    "object": "sanctions",
    "data": [
      {
        "object": "lista_sanciones.entrada",
        "list_name": "SAT 69b",
        "list_date": "2021-03-01",
        "fiscal_name": "Empresa S.A.",
        "last_name": "Rodríguez",
        "given_name": "Maria Luisa",
        "alias": "Malu",
        "dob": "1982-02-15",
        "rfc": "ROPM820215PT6",
        "curp": "ROPMN820215MCCDRR5",
        "occupation": "Regidora",
        "position": "",
        "status": "",
        "sanction_details": "",
        "other_information": "",
        "citizenship_remarks": ""
      }
    ],
    "pagination": {
      "pages": {
        "next_page": "2",
        "next_uri": "/api/listas-sanciones?name=luisa+rodriguez&date=&page=2"
      }
    },
    "links": [
      {
        "rel": "self",
        "uri": "/api/listas-sanciones"
      }
    ]
  },
  "email": {
    "object": "validate.email",
    "email": "cliente@creditar.io",
    "reachable": "true",
    "disposable": "false",
    "role_account": "false",
    "accepts_mail": "true",
    "full_inbox": "true",
    "catch_all": "true",
    "deliverable": "true",
    "disabled": "false",
    "compromised": "true"
  },
  "phone": {
    "object": "validate.phone",
    "valid": "true",
    "phone": "8187108661",
    "country": "US",
    "national_number": "(818) 710-8661",
    "international_number": "+1 818-710-8661",
    "e164_number": "+18187108661",
    "valid_types": ["Landline", "Mobile"],
    "location": "California",
    "timezone": "America/Los_Angeles",
  }
}

Esquema JSON para la respuesta del Webhook.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "object": {
      "type": "string",
      "description": "Indica el tipo de objeto en la respuesta"
    },
    "curp": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string"
        },
        "curp": {
          "type": "string"
        },
        "names": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "mother_name": {
          "type": "string"
        },
        "dob": {
          "type": "string"
        },
        "gender": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "nationality": {
          "type": "string"
        }
      },
      "required": [
        "object",
        "curp",
        "names",
        "last_name",
        "mother_name",
        "dob",
        "gender",
        "city",
        "state",
        "nationality"
      ]
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objeto en la respuesta"
          },
          "global_id": {
            "type": "string",
            "description": "Identificador único del documento"
          },
          "document_class": {
            "type": "string",
            "description": "Indica el tipo de documento enviado a verificación"
          }
        },
        "required": [
          "object",
          "global_id",
          "document_class"
        ]
      }
    },
    "sanctions": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string",
          "description": "Indica el tipo de objeto en la respuesta"
        }
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "object": {
                "type": "string",
                "description": "Indica el tipo de objeto en la respuesta"
              },
              "list_name": {
                "type": "string",
                "description": "Nombre de la lista"
              },
              "list_date": {
                "type": "string",
                "description": "Fecha de la lista"
              },
              "fiscal_name": {
                "type": "string",
                "description": "Nombre de persona moral"
              },
              "last_name": {
                "type": "string",
                "description": "Apellidos de persona física"
              },
              "given_name": {
                "type": "string",
                "description": "Nombre de persona física"
              },
              "alias": {
                "type": "string",
                "description": "Otros nombres"
              },
              "dob": {
                "type": "string",
                "description": "Fecha de nacimiento de persona física"
              },
              "rfc": {
                "type": "string",
                "description": "RFC de la persona física o moral"
              },
              "curp": {
                "type": "string",
                "description": "CURP de la persona física o moral"
              },
              "occupation": {
                "type": "string",
                "description": "Ocupación de la persona física"
              },
              "position": {
                "type": "string",
                "description": "Posición de la persona física"
              },
              "status": {
                "type": "string",
                "description": "Resultado o motivación de aparecer en lista"
              },
              "sanction_details": {
                "type": "string",
                "description": "Detalles de la sanción de aparecer en lista"
              },
              "other_information": {
                "type": "string",
                "description": "Información adicional de la sanción de aparecer en lista"
              },
              "citizenship_remarks": {
                "type": "string",
                "description": "Información adicional de ciudadanía"
              }
            },
            "required": [
              "object",
              "list_name",
              "list_date"
            ]
          },
          "description": "Entradas en las listas."
        },
        "pagination": {
          "type": "object",
          "properties": {
            "pages": {
              "type": "object",
              "properties": {
                "next_page": {
                  "type": "string",
                  "description": "Siguiente página."
                },
                "next_uri": {
                  "type": "string",
                  "description": "URI de la siguiente página."
                }
              },
              "required": [
                "next_page",
                "next_uri"
              ],
              "description": "Páginas"
            }
          },
          "required": [
            "pages"
          ],
          "description": "Información de paginación"
        },
        "links": {
          "type": "array",
          "description": "Links a referencias"
        }
      },
      "required": [
        "data",
        "pagination",
        "links"
      ]
    },
    "email": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "reachable":{
          "type": "string"
        },
        "disposable":{
          "type": "string"
        },
        "role_account":{
          "type": "string"
        },
        "accepts_mail":{
          "type": "string"
        },
        "full_inbox":{
          "type": "string"
        },
        "catch_all":{
          "type": "string"
        },
        "deliverable":{
          "type": "string"
        },
        "disabled":{
          "type": "string"
        },
        "compromised":{
          "type": "string"
        },
      },
      "required": [
        "object",
        "email",
        "reachable",
        "disposable",
        "role_account,"
        "accepts_mail,"
        "full_inbox",
        "catch_all",
        "deliverable",
        "disabled",
        "compromised"
      ]
    },
    "phone": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string"
        },
        "valid": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "national_number": {
          "type": "string"
        },
        "international_number": {
          "type": "string"
        },
        "e164_number": {
          "type": "string"
        },
        "valid_types": {
          "type": "array"
        },
        "location": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        }
      },
      "required": [
        "object",
        "valid",
        "phone",
        "country",
        "national_number",
        "international_number",
        "e164_number",
        "valid_types",
        "location",
        "timezone"
      ]
    }
  }
}

En el caso de que no se solicite la validación o verificación de alguno de los servicios, el apartado correspondiente sería vacío como se muestra a continuación.

{
  "object": "identidad",
  "curp": {},
  "documents": [],
  "sanctions": {},
  "email": {},
  "phone": {}
}
POST https://identidad.creditar.io/api/identidad
Requestsexample 1
Headers
Content-Type: multipart/form-data
Accept: application/vnd.creditar-identidad.v1+json
Authorization: Token token=fa9ff61d-542d-48d4-84f2-1d0c3bc176c8
Body
{
  "curp": "ROPMN820215MCCDRR5",
  "sanctions": {
    "name": "Juan+Preciado",
    "date": "3+de+Agosto+1984"
  },
  "documents": [
    {
      "image": "file",
      "document_type": "pasaporte"
    }
  ],
  "email": "cliente@creditar.io",
  "phone": {
    "phone": "8187108661",
    "country": "US"
  }
}
Schema
{
  "type": "object",
  "properties": {
    "curp": {
      "type": "string",
      "description": "CURP a validar con formato correcto"
    },
    "sanctions": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Nombre completo, parcial o alias, además de poderse utilizar el Registro Federal de Causantes."
        },
        "date": {
          "type": "string",
          "description": "Se puede enviar a fecha de nacimiento en un formato libre."
        }
      },
      "required": [
        "name",
        "date"
      ],
      "description": "Parámetros a buscar en las listas"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "image": {
            "type": "string",
            "description": "El archivo a enviar de acuerdo la especificación RFC 2388 que define como enviar archivos con el protocolo `multipart/form-data`."
          },
          "document_type": {
            "type": "string",
            "description": "Uno de los valores válido que identifican el tipo de documento."
          }
        },
        "required": [
          "image",
          "document_type"
        ]
      },
      "description": "Documentos para verificación"
    },
    "email": {
      "type": "string",
      "description": "Email a validar con formato correcto y accesible"
    },
    "phone": {
      "type": "object",
      "properties": {
        "phone": {
          "type": "string",
          "description": "El número telefónico que se pretende validar."
        },
        "country": {
          "type": "string",
          "description": "El código de país de acuerdo a la especificación ISO 3166-1 alpha-2 que define códigos de país de dos letras."
        }
      },
      "required": [
        "phone",
        "country"
      ],
      "description": "Número telefónico a validar con formato correcto"
    }
  },
  "$schema": "http://json-schema.org/draft-04/schema#"
}
Responses201429
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "data": [
    {
      "object": "identidad",
      "created": 1489796822
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "Indica el tipo de objecto en la respuesta"
          },
          "created": {
            "type": "number",
            "description": "Fecha en la que se creó el documento verificar en formato Epoch Unix"
          }
        },
        "required": [
          "object",
          "created"
        ]
      },
      "description": "Identidad a validar y verificar"
    }
  },
  "required": [
    "data"
  ]
}
Headers
Content-Type: application/json
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-reset: 1627793999
Body
{
  "errors": [
    {
      "type": "usage_limit",
      "code": "ERR-429",
      "message": "Rate limit exceeded",
      "href": "https://identidad.creditar.io/api/documentation#ERR-429"
    }
  ]
}
Schema
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Tipo de error"
          },
          "code": {
            "type": "string",
            "description": "Código de error"
          },
          "message": {
            "type": "string",
            "description": "Mensaje del error"
          },
          "href": {
            "type": "string",
            "description": "Más información sobre el error"
          }
        },
        "required": [
          "type",
          "code",
          "message",
          "href"
        ]
      },
      "description": "Información de errores."
    }
  },
  "required": [
    "errors"
  ]
}

Identidad
POST/identidad

Para el validar la CURP, unicamente se require como parámetro curp y el valor que se desea validar. La consulta a la lista de sanciones debe venir especificada bajo la llave sanction, la cual se compone de dos parámetros, un name y un date. La verificación de documentos espera un arreglo de documentos identificado como documents. Donde cada documento se compone de dos llaves, un file de tipo multipart y un document_type con los posibles valores de ine_frontal, ine_reverso, ife_frontal, ife_reverso o pasaporte. Para la validación del email require del parámetro email y su valor. Finalmente, para la validación de un número telefónico de requiere de la llave phone, la cual se compone de dos parámetros, un phone y un country el cual debe estar bajo el formato ISO 3166-1 alpha-2 country codes.


Errores

En caso de que se presenté algún error en las peticiones al API, los posibles errores y soluciones se presentan a continuación.

Códigos de Estado HTTP

Siempre que ocurra un error en la API de Identidad, el código de estado HTTP de la respuesta nos dará una idea del tipo de error ocurrido:

  • 404 Not Found - El recurso solicitado no existe.

  • 403 Forbidden - El acceso al recurso solicitado está prohibido.

  • 422 Unprocessable Entity - Los datos enviados no cumplen con alguna validación.

  • 500 Internal Server Error - Error interno en el servidor.

Generated by aglio on 18 Sep 2021