Endpoints de títulos electrónicos
Obtener una lista de los lotes registrados.
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
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"
}
Crea un nuevo lote.
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"
}
Visualiza los títulos pertenecientes a un lote.
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
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"
}
Registra un título dentro de un lote.
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"
}
Consulta los datos de un título.
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"
}
Actualiza un título.
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"
}
Eliminar un título.
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"
}
Firma un lote.
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"
}
Cargar un lote ante la DGP
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"
}
Consultar el estado de un lote.
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"
}
Descargar un lote de la DGP.
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"
}