Endpoints de títulos electrónicos

GET
titulo/lote/

Obtener una lista de los lotes registrados.

Requiere Auth

Este endpoint permite consultar los lotes de títulos electrónicos que han sido registrados previamente por la institución. Su principal objetivo es mostrar información relevante sobre cada uno de ellos como lo es:

  • ID del lote
  • No. del lote
  • Entorno actual (Producción, Pruebas)
  • Fecha de creación
  • Fecha de la última modificación
  • Usuario que lo creó
  • Ultimo usuario que lo modificó
  • Estado actual
  • Cantidad de títulos que contiene
Así como también es útil para mostrar el historial de los mismos. La respuesta de este endpoint es en formato JSON retornando los datos antes mencionados, y esto es de gran utilidad ya que a partir de esta informacion se pueden realizar otras operaciones.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
Esta solicitud no requiere de parámetros
Ejemplo de Petición
curl --location --request GET 'https://setyce.site/api/v1/titulo/lote/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'
$response = $this->client->get('https://setyce.site/api/v1/titulo/lote/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.get("https://setyce.site/api/v1/titulo/lote/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .asString();
import requests

url = "https://setyce.site/api/v1/titulo/lote/"

payload={}
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/",
  "method": "GET",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/",
   "method": "GET",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "Lotes registrados",
    "datos": {
        "lotes": [
            {
                "id_lote": "LTT250900008",
                "no_lote": "",
                "es_produccion": false,
                "fecha_creacion": "2025-09-29T13:18:54.836659",
                "fecha_modificacion": "2025-10-07T18:19:23.624804",
                "usuario_creador": null,
                "usuario_editor": null,
                "estado": {
                    "descripcion": "Procesado"
                },
                "numTitulos": 18
            },
            {
                "id_lote": "LTT251000001",
                "no_lote": "",
                "es_produccion": false,
                "fecha_creacion": "2025-10-07T15:12:37.239799",
                "fecha_modificacion": "2025-10-07T15:12:37.239830",
                "usuario_creador": null,
                "usuario_editor": null,
                "estado": {
                    "descripcion": "Activo"
                },
                "numTitulos": 0
            }
        ]
    },
    "timestamp": "2025-10-07T18:23:44.404183"
}
{
    "mensaje": "Sin datos.",
    "errores": "No se encontraron datos de la institución."
    "timestamp": "2025-10-07T18:21:50.449308"
}

POST
titulo/lote/

Crea un nuevo lote.

Requiere Auth

Este endpoint permite crear un nuevo lote de titulos electronicos, al cual posteriormete se le podran agregar titulos para validarlos ante la DGP. Este proceso unicamente consiste en hacer una solicitud POST al endpoint para que este se cree y en la respuesta de exito se devolvera el ID del lote recien creado, para que con el posteriormente se puedan realizar distintas operaciones.
Esta respuesta sera en formato JSON.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
Esta solicitud no requiere de parámetros
Ejemplo de Petición
curl --location --request POST 'https://setyce.site/api/v1/titulo/lote/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'
$response = $this->client->post('https://setyce.site/api/v1/titulo/lote/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("https://setyce.site/api/v1/titulo/lote/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .asString();
import requests

url = "https://setyce.site/api/v1/titulo/lote/"

payload={}
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "El lote se creó con éxito.",
    "datos": {
        "lote": "LTT250900007"
    },
    "timestamp": "2025-10-07T18:28:22.877476"
}
{
    "mensaje": "Error al crear el lote",
    "errores": "El lote solicitado ya fue creado anteriormente.",
    "timestamp": "2025-10-07T18:33:52.063096"
}
{
    "mensaje": "Error.",
    "errores": "Ocurrió un error inesperado al crear el lote, inténtelo de nuevo."
    "timestamp": "2025-10-07T18:21:50.449308"
}

GET
titulo/lote/ID_LOTE/

Visualiza los títulos pertenecientes a un lote.

Requiere Auth

Este endpoint permite obtener una lista de todos los titulos pertenecientes a este lote. Consiste en realizar una solicitud GET al endpoint agregando el ID del lote, y la respuesta contendra un listado de titulos con los siguientes datos:

  • ID del título
  • Folio del título
  • Nombre del profesionista
  • Primer apellido del profesionista
  • Segundo apellido del profesionista
  • Nombre de la carrera
  • Descripción del estado del lote
  • Descripción del estado del título
Esta respuesta sera en formato JSON.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
Esta solicitud no requiere de parámetros
Ejemplo de Petición
curl --location --request GET 'https://setyce.site/api/v1/titulo/lote/ID_LOTE' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'
$response = $this->client->get('https://setyce.site/api/v1/titulo/lote/ID_LOTE',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.get("https://setyce.site/api/v1/titulo/lote/ID_LOTE")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .asString();
import requests

url = "https://setyce.site/api/v1/titulo/lote/ID_LOTE"

payload={}
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/ID_LOTE",
  "method": "GET",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/ID_LOTE",
   "method": "GET",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
[
    {
        "id_titulo": "",
        "folio": "2020451020",
        "nombre_profesionista": "MOISES",
        "primer_apellido_profesionista": "GOMEZ",
        "segundo_apellido_profesionista": "FARIAS",
        "nombre_carrera_profesionista": "ENFERMERÍA",
        "descripcion_estado_lote": "Activo",
        "descripcion_estado_titulo": "En proceso"
    },
    {
        "id_titulo": "T250900009",
        "folio": "2020451021",
        "nombre_profesionista": "JOSE",
        "primer_apellido_profesionista": "LOPEZ",
        "segundo_apellido_profesionista": "DOMINGUEZ",
        "nombre_carrera_profesionista": "ADMINISTRACIÓN",
        "descripcion_estado_lote": "Activo",
        "descripcion_estado_titulo": "En proceso"
    }
]
{
    "mensaje": "Lote no localizado.",
    "errores": {
        "ID del lote": [
            "El lote especificado no existe o no pertenece a esta institución."
        ]
    },
    "timestamp": "2025-10-08T15:50:50.151452"
}

POST
titulo/lote/ID_LOTE/

Registra un título dentro de un lote.

Requiere Auth

Este endpoint permite agregar un nuevo título dentro de un lote seleccionado, esto mediante una solicitud POST incluyendo el ID del lote correspondiente. En dicha solicitud se deberan agregar los datos del profesionista, los cuales se muestran en el apartado de parámetros. En caso de que el registro del titulo sea exitoso, se retornara una respuesta en formato JSON con el ID del título registrado.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
carrera string Obligatorio Carrera que curso el profesionista. 123456
fecha_inicio date Opcional Fecha en la que el profesionista comenzó a cursar la carrera. 2025-01-01
fecha_termino date Obligatorio Fecha en la que el profesionista finalizó la carrera. 2025-01-01
folio integer Obligatorio Número de control interno asignado al título, puede ser el folio o la matricula del profesionista. 12345678
curp string Obligatorio Clave Única de Registro de Población del profesionista. ABCD000101ABCDEFGH
nombre string Obligatorio Nombre del profesionista. JUAN
primer_apellido string Obligatorio Primer apellido del profesionista. PÉREZ
segundo_apellido string Opcional Segundo apellido del profesionista. GARCÍA
correo_electronico string Obligatorio Correo electrónico del profesionista. correo@ejemplo.com
fecha_expedicion date Obligatorio Fecha oficial en la que se expidió el título. 2025-01-01
modalidad_titulacion integer Obligatorio Forma en la que el profesionista obtuvo su título. 1
fecha_examen_profesional date Condicional Fecha exacta en la que el profesionista presentó su examen profesional. (Solo aplica en la modalidad de titulación "Tesis") 2025-01-01
cumplio_servicio_social integer Obligatorio Indica si el profesionista cumplió con su servicio social. 1
fundamento_legal_servicio_social integer Obligatorio Indica bajo que fundamento legal cumplió con el servicio social. 1
entidadExpedicion integer Obligatorio Entidad federativa en la que emitirá el título. 01
institucion_procedencia string Obligatorio Nombre de la institución de procedencia del profesionista. CONALEP
tipo_estudio_antecedente integer Obligatorio Tipo de estudios previamente cursados por el profesionista. 1
entidadAntecedente integer Obligatorio Entidad federativa en la que el profesionista realizó sus estudios antecedentes. 01
fecha_inicio_antecedente date Opcional Fecha en la que el profesionista comenzó a cursar sus estudios antecedentes. 2025-01-01
fecha_termino_antecedente date Obligatorio Fecha en la que el profesionista terminó de cursar sus estudios antecedentes. 2025-01-01
no_cedula string Condicional** Número de cédula profesional del profesionista en caso de que sus estudios antecedentes le hayan otorgado uno. 12345678
Ejemplo de Petición
curl --location --request POST 'https://setyce.site/api/v1/titulo/lote/ID_LOTE/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ' \
     --header 'Content-Type: application/json' \
     --data-raw '{
         "carrera": "150933",
         "fecha_inicio": "2025-09-07",
         "fecha_termino": "2025-09-23",
     
         "folio": "2020451021",
         "curp": "HETE701225HDFRRN01",
         "nombre": "JOSE",
         "primer_apellido": "LOPEZ",
         "segundo_apellido": "DOMINGUEZ",
         "correo_electronico": "jose.lopez@mail.com",
     
         "fecha_expedicion": "2025-09-04",
         "modalidad_titulacion": "4",
         "fecha_examen_profesional": "2025-09-04",
         "cumplio_servicio_social": "1",
         "fundamento_legal_servicio_social": "2",
         "entidadExpedicion": "14",
     
         "institucion_procedencia": "Institución Educativa Superior",
         "tipo_estudio_antecedente": "5",
         "entidadAntecedente": "11",
         "fecha_inicio_antecedente": "2025-09-10",
         "fecha_termino_antecedente": "2025-09-26",
         "no_cedula": null
     }'
$response = $this->client->post('https://setyce.site/api/v1/titulo/lote/ID_LOTE/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'json' => [
        "carrera"=>"431302",
        "fecha_inicio"=>"2025-09-07",
        "fecha_termino"=>"2025-09-23",
        "folio"=>"2020451021",
        "curp"=>"HETE701225HDFRRN01",
        "nombre"=>"JOSE",
        "primer_apellido"=>"LOPEZ",
        "segundo_apellido"=>"DOMINGUEZ",
        "correo_electronico"=>"jose.lopez@mail.com",
        "fecha_expedicion"=>"2025-09-04",
        "modalidad_titulacion"=>"4",
        "fecha_examen_profesional"=>"2025-09-04",
        "cumplio_servicio_social"=>"1",
        "fundamento_legal_servicio_social"=>"2",
        "entidadExpedicion"=>"14",
        "institucion_procedencia"=>"Institución Educativa Superior",
        "tipo_estudio_antecedente"=>"5",
        "entidadAntecedente"=>"11",
        "fecha_inicio_antecedente"=>"2025-09-10",
        "fecha_termino_antecedente"=>"2025-09-26",
        "no_cedula" => null
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("https://setyce.site/api/v1/titulo/lote/ID_LOTE/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .header("Content-Type", "application/json")
   .body("{\n    \"carrera\": \"150933\",\n    \"fecha_inicio\": \"2025-09-07\",\n    \"fecha_termino\": \"2025-09-23\",\n\n    \"folio\": \"2020451021\",\n    \"curp\": \"HETE701225HDFRRN01\",\n    \"nombre\": \"JOSE\",\n    \"primer_apellido\": \"LOPEZ\",\n    \"segundo_apellido\": \"DOMINGUEZ\",\n    \"correo_electronico\": \"jose.lopez@gmail.com\",\n\n    \"fecha_expedicion\": \"2025-09-04\",\n    \"modalidad_titulacion\": \"4\",\n    \"fecha_examen_profesional\": \"2025-09-04\",\n    \"cumplio_servicio_social\": \"1\",\n    \"fundamento_legal_servicio_social\": \"2\",\n    \"entidadExpedicion\": \"14\",\n\n    \"institucion_procedencia\": \"Institución Educativa Superior\",\n    \"tipo_estudio_antecedente\": \"5\",\n    \"entidadAntecedente\": \"11\",\n    \"fecha_inicio_antecedente\": \"2025-09-10\",\n    \"fecha_termino_antecedente\": \"2025-09-26\",\n    \"no_cedula\": null\n}")
   .asString();
import requests
import json

url = "https://setyce.site/api/v1/titulo/lote/ID_LOTE/"

payload = json.dumps({
   "carrera": "150933",
   "fecha_inicio": "2025-09-07",
   "fecha_termino": "2025-09-23",
   "folio": "2020451021",
   "curp": "HETE701225HDFRRN01",
   "nombre": "JOSE",
   "primer_apellido": "LOPEZ",
   "segundo_apellido": "DOMINGUEZ",
   "correo_electronico": "jose.lopez@gmail.com",
   "fecha_expedicion": "2025-09-04",
   "modalidad_titulacion": "4",
   "fecha_examen_profesional": "2025-09-04",
   "cumplio_servicio_social": "1",
   "fundamento_legal_servicio_social": "2",
   "entidadExpedicion": "14",
   "institucion_procedencia": "Institución Educativa Superior",
   "tipo_estudio_antecedente": "5",
   "entidadAntecedente": "11",
   "fecha_inicio_antecedente": "2025-09-10",
   "fecha_termino_antecedente": "2025-09-26",
   "no_cedula": None
})
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/ID_LOTE/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ",
    "Content-Type": "application/json"
  },
  "body": {
    "carrera": "150933",
    "fecha_inicio": "2025-09-07",
    "fecha_termino": "2025-09-23",
    "folio": "2020451021",
    "curp": "HETE701225HDFRRN01",
    "nombre": "JOSE",
    "primer_apellido": "LOPEZ",
    "segundo_apellido": "DOMINGUEZ",
    "correo_electronico": "jose.lopez@gmail.com",
    "fecha_expedicion": "2025-09-04",
    "modalidad_titulacion": "4",
    "fecha_examen_profesional": "2025-09-04",
    "cumplio_servicio_social": "1",
    "fundamento_legal_servicio_social": "2",
    "entidadExpedicion": "14",
    "institucion_procedencia": "Institución Educativa Superior",
    "tipo_estudio_antecedente": "5",
    "entidadAntecedente": "11",
    "fecha_inicio_antecedente": "2025-09-10",
    "fecha_termino_antecedente": "2025-09-26",
    "no_cedula": null
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/ID_LOTE/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ",
      "Content-Type": "application/json"
   },
   "data": JSON.stringify({
      "carrera": "150933",
      "fecha_inicio": "2025-09-07",
      "fecha_termino": "2025-09-23",
      "folio": "2020451021",
      "curp": "HETE701225HDFRRN01",
      "nombre": "JOSE",
      "primer_apellido": "LOPEZ",
      "segundo_apellido": "DOMINGUEZ",
      "correo_electronico": "jose.lopez@gmail.com",
      "fecha_expedicion": "2025-09-04",
      "modalidad_titulacion": "4",
      "fecha_examen_profesional": "2025-09-04",
      "cumplio_servicio_social": "1",
      "fundamento_legal_servicio_social": "2",
      "entidadExpedicion": "14",
      "institucion_procedencia": "Institución Educativa Superior",
      "tipo_estudio_antecedente": "5",
      "entidadAntecedente": "11",
      "fecha_inicio_antecedente": "2025-09-10",
      "fecha_termino_antecedente": "2025-09-26",
      "no_cedula": null
   }),
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "Se han registrado los datos del profesionista.",
    "datos": {
        "id_titulo": "T251000003"
    },
    "timestamp": "2025-10-07T18:19:23.819616"
}
{
    "mensaje": "Datos inválidos.",
    "errores": {
        "CURP": [
            "La CURP debe tener exactamente 18 caracteres. (HETE701225HFRRN01)"
        ],
        "correo electrónico": [
            "Este campo no puede estar vacío."
        ]
    },
    "timestamp": "2025-10-07T18:51:13.959486"
}
{
    "mensaje": "Error.",
    "errores": "Ocurrió un error inesperado al guardar los datos del profesionista, inténtelo más tarde.",
    "timestamp": "2025-10-08T16:40:37.252201"
}

GET
titulo/lote/gestionarTitulo/ID_TITULO/

Consulta los datos de un título.

Requiere Auth

Este endpoint permite obtener toda la informacion detallada sobre ese título mediante una solicitud GET agregando su ID. Su funcion principal es mostrar mostrar dicha informacion para asegurarse que esta sea correcta. La respuesta sera en formato JSON y contendra los siguientes datos:

  • ID del título
  • Folio del título
  • Clave de la carrera
  • Fecha en que el profesionista comenzó a cursar la carrera
  • Fecha en que el profesionista terminó de cursar la carrera
  • CURP del profesionista
  • Nombre del profesionista
  • Primer apellido del profesionista
  • Segundo apellido del profesionista
  • Correo electrónico del profesionista
  • Fecha de expedición del título
  • Modalidad de titulación
  • Fecha en que se realizó el examen
  • Cumplimiento del servicio social
  • Fundamento legal por el que cumplió servicio social
  • Entidad federativa en que se expedira el título
  • Nombre de la institución educativa de procedencia
  • Tipo de estudio antecedente
  • Entidad federativa del estudio antecedente
  • Fecha en que comenzó a cursar el estudio antecedente
  • Fecha en que terminó de cursar el estudio antecedente
  • No. de cédula (En caso de que el estudio antecedente le haya otorgado una)

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
Esta solicitud no requiere de parámetros
Ejemplo de Petición
curl --location --request GET 'https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'
$response = $this->client->get('https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.get("https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .asString();
import requests

url = "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO"

payload={}
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO",
  "method": "GET",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO",
   "method": "GET",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "Datos del título.",
    "datos": {
        "id_titulo": "T251000002",
        "folio": "2020451021",
        "clave_carrera": "150933",
        "carrera_fecha_inicio": "2025-09-07",
        "carrera_fecha_termino": "2025-09-23",
        "profesionistaCurp": "HETE701225HDFRRN01",
        "profesionistaNombre": "ANTONIO",
        "profesionist_primer_apellido": "LOPEZ",
        "profesionista_segundo_apellido": "DOMINGUEZ",
        "correo_electronico": "antonio.lopez@gmail.com",
        "fecha_expedicion": "2025-09-04",
        "modalidad_titulacion": 4,
        "fecha_examen": "2025-09-04",
        "cumplio_servicio_social": true,
        "fundamento_legal_servicio_social": 2,
        "entidadExpedicion": "14",
        "institucion_procedencia": "Institución Educativa Superior",
        "tipo_estudio_antecedente": 5,
        "entidadAntecedente": "11",
        "fecha_inicio_antecedente": "2025-09-10",
        "fecha_termino_antecedente": "2025-09-26",
        "no_cedula": null
    },
    "timestamp": "2025-10-07T18:38:48.001722"
}
{
    "mensaje": "Título no localizado",
    "errores": {
        "ID del título": [
            "No se encontró el título con el ID proporcionado."
        ]
    },
    "timestamp": "2025-10-07T18:40:26.841850"
}

PUT
titulo/lote/gestionarTitulo/ID_TITULO/

Actualiza un título.

Requiere Auth

Este endpoint permite actualizar la información de un título previamente registrado en un lote. Para ello, se debe realizar una solicitud PUT incluyendo el ID del título que se desea modificar. En la solicitud, se deben proporcionar los datos actualizados del título, los cuales se encuentran en el apartado de parámetros. Si la actualización es exitosa, se recibirá una respuesta en formato JSON confirmando que el título ha sido modificado correctamente.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
carrera string Obligatorio Carrera que curso el profesionista. 123456
fecha_inicio date Opcional Fecha en la que el profesionista comenzó a cursar la carrera. 2025-01-01
fecha_termino date Obligatorio Fecha en la que el profesionista finalizó la carrera. 2025-01-01
folio integer Obligatorio Número de control interno asignado al título, puede ser el folio o la matricula del profesionista. 12345678
curp string Obligatorio Clave Única de Registro de Población del profesionista. ABCD000101ABCDEFGH
nombre string Obligatorio Nombre del profesionista. JUAN
primer_apellido string Obligatorio Primer apellido del profesionista. PÉREZ
segundo_apellido string Opcional Segundo apellido del profesionista. GARCÍA
correo_electronico string Obligatorio Correo electrónico del profesionista. correo@ejemplo.com
fecha_expedicion date Obligatorio Fecha oficial en la que se expidió el título. 2025-01-01
modalidad_titulacion integer Obligatorio Forma en la que el profesionista obtuvo su título. 1
fecha_examen_profesional date Condicional Fecha exacta en la que el profesionista presentó su examen profesional. (Solo aplica en la modalidad de titulación "Tesis") 2025-01-01
cumplio_servicio_social integer Obligatorio Indica si el profesionista cumplió con su servicio social. 1
fundamento_legal_servicio_social integer Obligatorio Indica bajo que fundamento legal cumplió con el servicio social. 1
entidadExpedicion integer Obligatorio Entidad federativa en la que emitirá el título. 01
institucion_procedencia string Obligatorio Nombre de la institución de procedencia del profesionista. CONALEP
tipo_estudio_antecedente integer Obligatorio Tipo de estudios previamente cursados por el profesionista. 1
entidadAntecedente integer Obligatorio Entidad federativa en la que el profesionista realizó sus estudios antecedentes. 01
fecha_inicio_antecedente date Opcional Fecha en la que el profesionista comenzó a cursar sus estudios antecedentes. 2025-01-01
fecha_termino_antecedente date Obligatorio Fecha en la que el profesionista terminó de cursar sus estudios antecedentes. 2025-01-01
no_cedula string Condicional** Número de cédula profesional del profesionista en caso de que sus estudios antecedentes le hayan otorgado uno. 12345678
Ejemplo de Petición
curl --location --request PUT 'https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ' \
     --header 'Content-Type: application/json' \
     --data-raw '{
         "carrera": "150933",
         "fecha_inicio": "2025-09-07",
         "fecha_termino": "2025-09-23",
     
         "curp": "HETE701225HDFRRN01",
         "nombre": "ANTONIO",
         "primer_apellido": "LOPEZ",
         "segundo_apellido": "DOMINGUEZ",
         "correo_electronico": "jose.lopez@mail.com",
     
         "fecha_expedicion": "2025-09-04",
         "modalidad_titulacion": "4",
         "fecha_examen_profesional": "2025-09-04",
         "cumplio_servicio_social": "1",
         "fundamento_legal_servicio_social": "2",
         "entidadExpedicion": "14",
     
         "institucion_procedencia": "Institución Educativa Superior",
         "tipo_estudio_antecedente": "5",
         "entidadAntecedente": "11",
         "fecha_inicio_antecedente": "2025-09-10",
         "fecha_termino_antecedente": "2025-09-26",
         "no_cedula": null
     }'
$response = $this->client->put('https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'json' => [
        "carrera"=>"431302",
        "fecha_inicio"=>"2025-09-07",
        "fecha_termino"=>"2025-09-23",
        "curp"=>"HETE701225HDFRRN01",
        "nombre"=>"ANTONIO",
        "primer_apellido"=>"LOPEZ",
        "segundo_apellido"=>"DOMINGUEZ",
        "correo_electronico"=>"jose.lopez@mail.com",
        "fecha_expedicion"=>"2025-09-04",
        "modalidad_titulacion"=>"4",
        "fecha_examen_profesional"=>"2025-09-04",
        "cumplio_servicio_social"=>"1",
        "fundamento_legal_servicio_social"=>"2",
        "entidadExpedicion"=>"14",
        "institucion_procedencia"=>"Institución Educativa Superior",
        "tipo_estudio_antecedente"=>"5",
        "entidadAntecedente"=>"11",
        "fecha_inicio_antecedente"=>"2025-09-10",
        "fecha_termino_antecedente"=>"2025-09-26",
        "no_cedula"=>null
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.put("https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .header("Content-Type", "application/json")
   .body("{\n    \"carrera\": \"150933\",\n    \"fecha_inicio\": \"2025-09-07\",\n    \"fecha_termino\": \"2025-09-23\",\n\n    \"curp\": \"HETE701225HDFRRN01\",\n    \"nombre\": \"ANTONIO\",\n    \"primer_apellido\": \"LOPEZ\",\n    \"segundo_apellido\": \"DOMINGUEZ\",\n    \"correo_electronico\": \"jose.lopez@gmail.com\",\n\n    \"fecha_expedicion\": \"2025-09-04\",\n    \"modalidad_titulacion\": \"4\",\n    \"fecha_examen_profesional\": \"2025-09-04\",\n    \"cumplio_servicio_social\": \"1\",\n    \"fundamento_legal_servicio_social\": \"2\",\n    \"entidadExpedicion\": \"14\",\n\n    \"institucion_procedencia\": \"Institución Educativa Superior\",\n    \"tipo_estudio_antecedente\": \"5\",\n    \"entidadAntecedente\": \"11\",\n    \"fecha_inicio_antecedente\": \"2025-09-10\",\n    \"fecha_termino_antecedente\": \"2025-09-26\",\n    \"no_cedula\": null\n}")
   .asString();
import requests
import json

url = "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/"

payload = json.dumps({
   "carrera": "150933",
   "fecha_inicio": "2025-09-07",
   "fecha_termino": "2025-09-23",
   "curp": "HETE701225HDFRRN01",
   "nombre": "ANTONIO",
   "primer_apellido": "LOPEZ",
   "segundo_apellido": "DOMINGUEZ",
   "correo_electronico": "jose.lopez@gmail.com",
   "fecha_expedicion": "2025-09-04",
   "modalidad_titulacion": "4",
   "fecha_examen_profesional": "2025-09-04",
   "cumplio_servicio_social": "1",
   "fundamento_legal_servicio_social": "2",
   "entidadExpedicion": "14",
   "institucion_procedencia": "Institución Educativa Superior",
   "tipo_estudio_antecedente": "5",
   "entidadAntecedente": "11",
   "fecha_inicio_antecedente": "2025-09-10",
   "fecha_termino_antecedente": "2025-09-26",
   "no_cedula": None
})
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ',
   'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/ID_LOTE/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ",
    "Content-Type": "application/json"
  },
  "body": {
    "carrera": "150933",
    "fecha_inicio": "2025-09-07",
    "fecha_termino": "2025-09-23",
    "folio": "2020451021",
    "curp": "HETE701225HDFRRN01",
    "nombre": "JOSE",
    "primer_apellido": "LOPEZ",
    "segundo_apellido": "DOMINGUEZ",
    "correo_electronico": "jose.lopez@gmail.com",
    "fecha_expedicion": "2025-09-04",
    "modalidad_titulacion": "4",
    "fecha_examen_profesional": "2025-09-04",
    "cumplio_servicio_social": "1",
    "fundamento_legal_servicio_social": "2",
    "entidadExpedicion": "14",
    "institucion_procedencia": "Institución Educativa Superior",
    "tipo_estudio_antecedente": "5",
    "entidadAntecedente": "11",
    "fecha_inicio_antecedente": "2025-09-10",
    "fecha_termino_antecedente": "2025-09-26",
    "no_cedula": null
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/",
   "method": "PUT",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ",
      "Content-Type": "application/json"
   },
   "data": JSON.stringify({
      "carrera": "150933",
      "fecha_inicio": "2025-09-07",
      "fecha_termino": "2025-09-23",
      "curp": "HETE701225HDFRRN01",
      "nombre": "ANTONIO",
      "primer_apellido": "LOPEZ",
      "segundo_apellido": "DOMINGUEZ",
      "correo_electronico": "jose.lopez@gmail.com",
      "fecha_expedicion": "2025-09-04",
      "modalidad_titulacion": "4",
      "fecha_examen_profesional": "2025-09-04",
      "cumplio_servicio_social": "1",
      "fundamento_legal_servicio_social": "2",
      "entidadExpedicion": "14",
      "institucion_procedencia": "Institución Educativa Superior",
      "tipo_estudio_antecedente": "5",
      "entidadAntecedente": "11",
      "fecha_inicio_antecedente": "2025-09-10",
      "fecha_termino_antecedente": "2025-09-26",
      "no_cedula": null
   }),
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "Título actualizado exitosamente",
    "datos": [],
    "timestamp": "2025-10-07T18:49:22.126323"
}
{
    "mensaje": "Datos inválidos.",
    "errores": {
        "nombre del profesionista": [
            "Este campo no puede estar vacío. ()"
        ],
        "primer apellido del profesionista": [
            "Este campo no puede estar vacío. ()"
        ],
        "correo electrónico": [
            "Este campo no puede estar vacío. ()"
        ]
    },
    "timestamp": "2025-10-08T16:51:24.028453"
}
{
    "mensaje": "Título no localizado",
    "errores": {
        "ID del título": [
            "No se encontró el título con el ID proporcionado."
        ]
    },
    "timestamp": "2025-10-07T18:49:48.965301"
}
{
    "mensaje": "Error",
    "errores": "Se produjo un error inesperado, intente más tarde. Error al actualizar expedición.",
    "timestamp": "2025-10-08T17:04:21.374315"
}

DELETE
titulo/lote/gestionarTitulo/ID_TITULO/

Eliminar un título.

Requiere Auth

Este endpoint permite eliminar un título previamente registrado en un lote. Para ello, se debe realizar una solicitud DELETE incluyendo el ID del título que se desea eliminar. Si la eliminación es exitosa, se recibirá una respuesta en formato JSON confirmando que el título ha sido eliminado correctamente.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
Esta solicitud no requiere de parámetros
Ejemplo de Petición
curl --location --request DELETE 'https://setyce.site/api/v1/titulo/lote/gestionarTitulo//' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'
$response = $this->client->delete('https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.delete("https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .asString();
import requests

url = "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/"

payload={}
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/",
  "method": "DELETE",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/lote/gestionarTitulo/ID_TITULO/",
   "method": "DELETE",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "Título eliminado correctamente",
    "datos": {
        "id_lote": "T251000003"
    },
    "timestamp": "2025-10-07T18:19:16.002856"
}
{
    "mensaje": "Título no localizado",
    "errores": {
        "ID del título": [
            "No se encontró el título con el ID proporcionado."
        ]
    },
    "timestamp": "2025-10-07T18:21:50.449308"
}
{
    "mensaje": "No se puede eliminar el título.",
    "errores": "No se puede eliminar el título porque el lote no está activo.",
    "timestamp": "2025-10-13T15:39:43.313394"
}
{
    "mensaje": "No se puede eliminar el título.",
    "errores": "Error inesperado al eliminar el título, inténtelo más tarde.",
    "timestamp": "2025-10-13T15:39:43.313394"
}

POST
titulo/lote/firmarLote/ID_LOTE/

Firma un lote.

Requiere Auth

Este endpoint permite realizar la firma de un lote de títulos electrónicos mediante una solicitud POST agregando el ID del lote. Su funcion principal es darle validez legal a los títulos electrónicos agregando la e.Firma al archivo XML que contiene los titulos del lote que sera enviado a la DGP. En la solicitud el campo [index] correspondera a un número consecutivo comenzando por el 0, y aumentando en 1 por cada responsable perteneciente a la institución. La respuesta sera en formato JSON.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
responsable[index][correo] string Obligatorio Correo registrado en SETyCE. correo@ejemplo.com
responsable[index][cer] Archivo Obligatorio Archivo que contiene la clave pública proporcionada por el SAT. ClavePublica.cer
responsable[index][kry] Archivo Obligatorio Archivo que contiene la clave privada proporcionada por el SAT. ClavePrivada.key
responsable[index][contrasena] string Obligatorio Contraseña perteneciente a la clave privada. Contraseña
Ejemplo de Petición
curl --location --request POST 'http://setyce.site/api/v1/titulo/lote/firmarLote/ID_LOTE/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ' \
     --form 'responsable[index][correo]="correo_registrado_en_setyce"' \
     --form 'responsable[index][cer]=@"ClavePublica.cer"' \
     --form 'responsable[index][kry]=@"ClavePrivada.key"' \
     --form 'responsable[index][contrasena]="Contraseña"'
$response = $this->client->post('https://setyce.site/api/v1/titulo/lote/firmarLote/ID_LOTE/', [
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUI',
    ],
    'multipart' => [
        [
            'name'     => 'responsable[index][correo]',
            'contents' => 'correo_registrado_en_setyce',
        ],
        [
            'name'     => 'responsable[index][cer]',
            'contents' => fopen(WRITEPATH . 'uploads/ClavePublica.cer', 'r'),
            'filename' => 'ClavePublica.cer',
        ],
        [
            'name'     => 'responsable[index][kry]',
            'contents' => fopen(WRITEPATH . 'uploads/ClavePrivada.key', 'r'),
            'filename' => 'ClavePrivada.key',
        ],
        [
            'name'     => 'responsable[index][contrasena]',
            'contents' => 'Contrasena',
        ],
    ],
    'http_errors' => false,
]);

$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);

dd([
    'status' => $status,
    'data'   => $data,
]);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("http://setyce.site/api/v1/titulo/lote/firmarLote/ID_LOTE/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .multiPartContent()
   .field("responsable[index][correo]", "correo_registrado_en_setyce")
   .field("responsable[index][cer]", "ClavePublica.cer")
   .field("responsable[index][kry]", "ClavePrivada.key")
   .field("responsable[index][contrasena]", "Contraseña")
   .asString();
import requests

url = 'http://setyce.site/api/v1/titulo/lote/firmarLote/ID_LOTE/'

headers = {
    'Authorization': 'Api-Key TU_API_KEY_AQUÍ'
}

files = {
    'responsable[index][cer]': open('ClavePublica.cer', 'rb'),
    'responsable[index][kry]': open('ClavePrivada.key', 'rb')
}

data = {
    'responsable[index][correo]': 'correo_registrado_en_setyce',
    'responsable[index][contrasena]': 'Contrasena'
}

response = requests.post(url, headers=headers, files=files, data=data)

print(response.text)

# Cerrar los archivos
files['responsable[index][cer]'].close()
files['responsable[index][kry]'].close()
var form = new FormData();
form.append("responsable[index][correo]", "correo_registrado_en_setyce");
form.append("responsable[index][cer]", "ClavePublica.cer");
form.append("responsable[index][kry]", "ClavePrivada.key");
form.append("responsable[index][contrasena]", "Contraseña");

var settings = {
   "url": "http://setyce.site/api/v1/titulo/lote/firmarLote/ID_LOTE/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ"
   },
   "processData": false,
   "mimeType": "multipart/form-data",
   "contentType": false,
   "data": form
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "El lote ha sido firmado correctamente.",
    "datos": null,
    "timestamp": "2025-10-09T15:07:27.547453"
}
{
    "mensaje": "Error al firmar el lote",
    "errores": {
        "responsable[0][cer]": "No se recibió la clave pública de JOSÉ."
    },
    "timestamp": "2025-10-09T15:08:51.184717"
}
{
    "mensaje": "No se encontró el lote.",
    "errores": {
        "id_lote": [
            "No se encontró el lote indicado o no está registrado a esta institución"
        ]
    },
    "timestamp": "2025-10-09T13:30:21.393465"
}

POST
titulo/dgp/cargarLote/ID_LOTE/

Cargar un lote ante la DGP

Requiere Auth

Este endpoint permite cargar un lote previamente creado, a la Dirección General de Profesiones para su validación. Consiste en realizar una solicitud POST al endpoint agregando el ID del lote, así como las respectivas credenciales de la DGP. La respuesta en formato JSON indicará si el lote fue cargado exitosamente o si hubo algún error en el proceso.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
usuario string Obligatorio Usuario proporcionado por la Dirección General de Profesiones. Usuario
contrasena string Obligatorio Contraseña proporcionada por la Dirección General de Profesiones. Contraseña
Ejemplo de Petición
curl --location --request POST 'https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'' \
     --header 'Content-Type: application/json' \
     --data '{
         "usuario": "TU_USUARIO_DGP",
         "contrasena": "TU_CONTRASEÑA_DGP"
     }'
$response = $this->client->post('https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'json' => [
        'usuario' => 'TU_USUARIO_DGP',
        'contrasena' => 'TU_CONTRASEÑA_DGP'
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ \\
--header Content-Type:")
   .asString();
import requests
import json

url = "https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/"

payload = json.dumps({
   "usuario": "TU_USUARIO_DGP",
   "contrasena": "TU_CONTRASEÑA_DGP"
})
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ",
    "Content-Type": "application/json"
  },
  "body": {
    "usuario": "TU_USUARIO_DGP",
    "contrasena": "TU_CONTRASEÑA_DGP"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/dgp/cargarLote/ID_LOTE/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ",
      "Content-Type": "application/json"
   },
   "data": JSON.stringify({
      "usuario": "TU_USUARIO_DGP",
      "contrasena": "TU_CONTRASEÑA_DGP"
   }),
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "mensaje": "El lote ha sido cargado.",
    "datos": {
        "numeroLote": 269763,
        "mensaje": null
    },
    "timestamp": "2025-10-09T17:30:06.469717"
}
{
    "mensaje": "No se proporcionaron los datos.",
    "errores": [
        {
            "usuario": "No se proporcionó el usuario."
        },
        {
            "contrasena": "No se proporcionó la contraseña."
        }
    ],
    "timestamp": "2025-10-09T16:22:23.298198"
}
{
    "mensaje": "Lote no encontrado",
    "errores": "El lote especificado no se encontró en esta institución.",
    "timestamp": "2025-10-10T12:35:14.489509"
}
{
    "mensaje": "Estatus inválido.",
    "errores": "El lote se encuentra Firmado y cargado.",
    "timestamp": "2025-10-10T13:51:17.460426"
}
{
    "mensaje": "Ocurrió un error inesperado.",
    "errores": "Error al realizar la codificación.",
    "timestamp": "2025-10-10T12:51:24.843713"
}
{
    "mensaje": "Error de conexión.",
    "errores": "Ocurrió un error de conexión inesperado.",
    "timestamp": "2025-10-10T12:51:24.843713"
}

POST
titulo/dgp/consultarLote-DGP/ID_LOTE/

Consultar el estado de un lote.

Requiere Auth

Este endpoint permite consultar el estado de un lote previamente cargado a la Dirección General de Profesiones para saber si los títulos ya se encuentran validados o presentan errores. Consiste en realizar una solicitud POST al endpoint agregando el ID del lote, así como las respectivas credenciales de la DGP. La respuesta en formato JSON contendrá el estado actual del lote y de los títulos que contiene.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
usuario string Obligatorio Usuario proporcionado por la Dirección General de Profesiones. Usuario
contrasena string Obligatorio Contraseña proporcionada por la Dirección General de Profesiones. Contraseña
Ejemplo de Petición
curl --location --request POST 'https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'' \
     --header 'Content-Type: application/json' \
     --data '{
         "usuario": "TU_USUARIO_DGP",
         "contrasena": "TU_CONTRASEÑA_DGP"
     }'
$response = $this->client->post('https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'json' => [
        'usuario' => 'TU_USUARIO_DGP',
        'contrasena' => 'TU_CONTRASEÑA_DGP'
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$data = json_decode($response->getBody(), true);
dd($data);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .header("Content-Type", "application/json")
   .body("{\n    \"usuario\": \"TU_USUARIO_DGP\",\n    \"contrasena\": \"TU_CONTRASEÑA_DGP\"\n}")
   .asString();
import requests
import json

url = "https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/"

payload = json.dumps({
   "usuario": "TU_USUARIO_DGP",
   "contrasena": "TU_CONTRASEÑA_DGP"
})
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ",
    "Content-Type": "application/json"
  },
  "body": {
    "usuario": "TU_USUARIO_DGP",
    "contrasena": "TU_CONTRASEÑA_DGP"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/dgp/consultarLote/NO_LOTE/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ",
      "Content-Type": "application/json"
   },
   "data": JSON.stringify({
      "usuario": "TU_USUARIO_DGP",
      "contrasena": "TU_CONTRASEÑA_DGP"
   }),
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "numeroLote": 269808,
    "estatusLote": 1,
    "mensaje": "El número de lote 269808 se encuentra PROCESADO."
}
{
    "mensaje": "Credenciales inválidas.",
    "errores": [
        {
            "contrasena": "No se proporcionó la contraseña."
        }
    ],
    "timestamp": "2025-10-10T16:44:52.735380"
}
{
    "mensaje": "Lote no encontrado.",
    "errores": "El lote especificado no se encontró en esta institución.",
    "timestamp": "2025-10-10T16:43:08.176605"
}
{
    "mensaje": "Estatus inválido.",
    "errores": "El lote se encuentra Activo.",
    "timestamp": "2025-10-13T14:56:08.389693"
}
{
    "mensaje": "Ocurrió un error inesperado.",
    "errores": "Error al realizar la codificación.",
    "timestamp": "2025-10-10T12:51:24.843713"
}
{
    "mensaje": "Error de conexión.",
    "errores": "Ocurrió un error de conexión inesperado.",
    "timestamp": "2025-10-10T12:51:24.843713"
}

POST
titulo/dgp/descargarLote/ID_LOTE/

Descargar un lote de la DGP.

Requiere Auth

Este endpoint permite descargar un lote previamente cargado a la Dirección General de Profesiones, el cual contiene los títulos validados, o en dado caso de existir errores mostrara cuales son, y en que titulos se encuentran. Consiste en realizar una solicitud POST al endpoint agregando el ID del lote, así como las respectivas credenciales de la DGP. La respuesta en formato JSON contendrá un archivo binario con el archivo ZIP que contiene los títulos o los errores encontrados.

Parámetros de la solicitud
Parámetro Tipo Requerido Descripción Ejemplo
usuario string Obligatorio Usuario proporcionado por la Dirección General de Profesiones. Usuario
contrasena string Obligatorio Contraseña proporcionada por la Dirección General de Profesiones. Contraseña
Ejemplo de Petición
curl --location --request POST 'https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/' \
     --header 'Authorization: Api-Key TU_API_KEY_AQUÍ'' \
     --header 'Content-Type: application/json' \
     --data '{
         "usuario": "TU_USUARIO_DGP",
         "contrasena": "TU_CONTRASEÑA_DGP"
     }'
$response = $this->client->post('https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/',[
    'headers' => [
        'Authorization' => 'Api-Key TU_API_KEY_AQUÍ',
    ],
    'json' => [
        'usuario' => 'TU_USUARIO_DGP',
        'contrasena' => 'TU_CONTRASEÑA_DGP'
    ],
    'http_errors'     => false,
]);
$status = $response->getStatusCode();
$body = $response->getBody();

file_put_contents( 'C:/Users/frana/Desktop/archivo_recibido.zip', $body);
Unirest.setTimeouts(0, 0);
HttpResponse response = Unirest.post("https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/")
   .header("Authorization", "Api-Key TU_API_KEY_AQUÍ")
   .header("Content-Type", "application/json")
   .body("{\n    \"usuario\": \"TU_USUARIO_DGP\",\n    \"contrasena\": \"TU_CONTRASEÑA_DGP\"\n}")
   .asString();
import requests
import json

url = "https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/"

payload = json.dumps({
   "usuario": "TU_USUARIO_DGP",
   "contrasena": "TU_CONTRASEÑA_DGP"
})
headers = {
   'Authorization': 'Api-Key TU_API_KEY_AQUÍ',
   'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
{
  "url": "https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/",
  "method": "POST",
  "headers": {
    "Authorization": "Api-Key TU_API_KEY_AQUÍ",
    "Content-Type": "application/json"
  },
  "body": {
    "usuario": "TU_USUARIO_DGP",
    "contrasena": "TU_CONTRASEÑA_DGP"
  }
}
var settings = {
   "url": "https://setyce.site/api/v1/titulo/dgp/descargarLote/NO_LOTE/",
   "method": "POST",
   "timeout": 0,
   "headers": {
      "Authorization": "Api-Key TU_API_KEY_AQUÍ",
      "Content-Type": "application/json"
   },
   "data": JSON.stringify({
      "usuario": "TU_USUARIO_DGP",
      "contrasena": "TU_CONTRASEÑA_DGP"
   }),
};

$.ajax(settings).done(function (response) {
   console.log(response);
});
Respuestas
{
    "content-type": "application/zip",
    "headers": {
        "Content-Disposition": "attachment; filename='ResultadoCargaTitulos{numeroLote}.zip'"
    }
}
{
    "mensaje": "Credenciales inválidas.",
    "errores": [
        {
            "contrasena": "No se proporcionó la contraseña."
        }
    ],
    "timestamp": "2025-10-10T16:44:52.735380"
}
{
    "mensaje": "Lote no encontrado.",
    "errores": "El lote especificado no se encontró en esta institución.",
    "timestamp": "2025-10-10T16:43:08.176605"
}
{
    "mensaje": "Estatus inválido.",
    "errores": "El lote se encuentra Activo.",
    "timestamp": "2025-10-13T14:56:08.389693"
}
{
    "mensaje": "Ocurrió un error inesperado.",
    "errores": "Error al realizar la codificación.",
    "timestamp": "2025-10-10T12:51:24.843713"
}
{
    "mensaje": "Error de conexión.",
    "errores": "Ocurrió un error de conexión inesperado.",
    "timestamp": "2025-10-10T12:51:24.843713"
}