Referencia
Agentes
Definiciones de agentes y el detalle de las tareas que corrió un turno.
Listar agentes
api.niucore.com/api/v1/agentsScope: agents:read
Agentes visibles para la credencial, ordenados por nombre. Incluye los propios inactivos, para que su dueño los vea; esos no se pueden adjuntar a un turno.
Nota
agents:read no habilita delegar y agents:use no habilita leer definiciones: son dos scopes estrictos. Para saber qué agentes puede usar un turno, mirá el bloque agents de `GET /chat/catalog`.
Consulta
pageintegerpor defecto 1Página, empezando en 1.
sizeintegerpor defecto 50Elementos por página. Máximo 200.
Devuelve
idintegerIdentificador.
namestringNombre.
descriptionstring | nullPara qué sirve.
tagstring | nullDominio de trabajo (finanzas, soporte…).
levelstringAlcance del agente.
visibilitystringprivate, shared o public.
is_activebooleanUn agente inactivo propio aparece en la lectura pero no se puede adjuntar a un turno ni está en el catálogo del chat.
is_anchoredbooleanObligatorio para la empresa.
versionintegerVersión de la definición.
model_idinteger | nullModelo fijo de sus tareas. null = hereda el del turno. Como conductor (principal_agent_id) usa siempre el modelo del turno.
created_atstring (date-time)Creación.
updated_atstring (date-time)Última edición.
Errores
- 503
api_v1_agents_disabledLos agentes están deshabilitados temporalmente en la API (meta.error_details.retry_action: "none"). El historial y el detalle de tareas siguen disponibles.
curl -sS -X GET 'https://api.niucore.com/api/v1/agents' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": [
{
"id": 4,
"name": "Contador",
"description": "Cierra el mes y revisa asientos.",
"tag": "finanzas",
"level": "user",
"visibility": "private",
"is_active": true,
"is_anchored": false,
"version": 3,
"model_id": null,
"created_at": "2026-09-19T21:50:10Z",
"updated_at": "2026-09-23T10:02:44Z"
}
],
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77",
"page": 1,
"size": 50,
"total": 1
}
}Ver un agente
api.niucore.com/api/v1/agents /{agent_id}Scope: agents:read
Detalle de una definición, con instructions y persona.
Ruta
agent_idintegerobligatorioIdentificador.
Devuelve
idintegerIdentificador.
namestringNombre.
descriptionstring | nullPara qué sirve.
tagstring | nullDominio de trabajo (finanzas, soporte…).
levelstringAlcance del agente.
visibilitystringprivate, shared o public.
is_activebooleanUn agente inactivo propio aparece en la lectura pero no se puede adjuntar a un turno ni está en el catálogo del chat.
is_anchoredbooleanObligatorio para la empresa.
versionintegerVersión de la definición.
model_idinteger | nullModelo fijo de sus tareas. null = hereda el del turno. Como conductor (principal_agent_id) usa siempre el modelo del turno.
instructionsstringSolo en el detalle. Forma canónica, con las citas {{tipo:id}} tal cual: leer la definición no autoriza cargar lo que cita.
personaobjectSolo en el detalle. Rasgos de tono.
created_atstring (date-time)Creación.
updated_atstring (date-time)Última edición.
Errores
- 404
api_v1_not_foundNo existe, o está fuera del alcance de la credencial. Los dos casos responden igual. - 503
api_v1_agents_disabledLos agentes están deshabilitados temporalmente en la API (meta.error_details.retry_action: "none"). El historial y el detalle de tareas siguen disponibles.
curl -sS -X GET 'https://api.niucore.com/api/v1/agents/4' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": {
"id": 4,
"name": "Contador",
"description": "Cierra el mes y revisa asientos.",
"tag": "finanzas",
"level": "user",
"visibility": "private",
"is_active": true,
"is_anchored": false,
"version": 3,
"model_id": null,
"created_at": "2026-09-19T21:50:10Z",
"updated_at": "2026-09-23T10:02:44Z",
"instructions": "Sos el contador de la empresa. Buscá en {{workspace:31}} antes de responder.",
"persona": {
"tone": "formal",
"verbosity": "brief",
"language": "es"
}
},
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77"
}
}Tareas de agentes de un mensaje
api.niucore.com/api/v1/chats /{chat_id} /messages /{message_id} /agent-runsScope: chat:read
Estado durable de las tareas que corrió un turno: resumen más encargo, pasos, mensajes entre tareas y resultado. Incluye temporales, fallidas y canceladas, y sobrevive a que el agente se borre después.
Es historial de esta credencial: pide chat:read, y agents:read no da acceso a chats ajenos. Otra credencial del mismo usuario, otro chat, otro mensaje o un chat borrado responden 404.
Nota
Recupera lo que quedó escrito, no reproduce el stream. Los pasos no traen argumentos ni resultados de herramientas; el encargo, las listas y el resultado están acotados, y truncated: true avisa cuando se recortó algo.
Ruta
chat_idstring (uuid)obligatorioChat.
message_idintegerobligatorioMensaje (turno).
Consulta
pageintegerpor defecto 1Página, empezando en 1.
sizeintegerpor defecto 50Elementos por página. Máximo 200.
Devuelve
task_idstringCorrelación opaca de la tarea dentro del mensaje. Es el mismo en message.step, message.action_required, el terminal y el historial. No autoriza nada: una aprobación se resuelve con su action_id.
agent_idinteger | nullnull para un agente temporal.
namestringNombre al ejecutar.
kindstringuser o temporal.
tagstring | nullEtiqueta.
statestringsubmitted, working, waiting, input_required, paused, completed, failed o cancelled.
reasonstring | nullMotivo de un terminal pedido desde afuera.
modelstring | nullModelo efectivo.
providerstring | nullProveedor efectivo.
model_requestedstring | nullModelo fijo que pedía la definición.
fallback_reasonstring | nullPor qué no se usó el modelo pedido.
operation_outcomestring | nullnot_dispatched, applied o unknown. `unknown` no es reintento seguro, aunque el turno se haya cancelado.
retry_safeboolean | nullSi repetir la tarea es seguro.
tokensobjectinput_tokens, output_tokens, total_tokens de la tarea. Ya están incluidos en usage.total_tokens del turno.
started_atstring | nullInicio.
finished_atstring | nullFin.
updated_atstring | nullÚltima escritura.
briefobject | nullEncargo: objective, output_format, tools_guidance, boundaries, inputs, label.
stepsarray{ title, status, detail?, tools? }.
messagesarrayMensajes entre tareas: { from_name, state, content, created_at }. Son datos, no instrucciones del usuario.
resultstring | nullResultado de la tarea.
truncatedbooleanAlgo se recortó.
Errores
- 404
api_v1_not_foundNo existe, o está fuera del alcance de la credencial. Los dos casos responden igual.
curl -sS -X GET 'https://api.niucore.com/api/v1/chats/3f6b1a90-6c2d-4d84-a0b1-9d0f5e7c2ab3/messages/90214/agent-runs' \
-H "Authorization: Bearer $NIUCORE_ACCESS_TOKEN"{
"status": "success",
"message": "Operación exitosa",
"message_code": "api_v1_ok",
"data": [
{
"task_id": "task_6f0d2a9b41c8e7735a10bd42",
"agent_id": 4,
"name": "Contador",
"kind": "user",
"tag": "finanzas",
"state": "completed",
"reason": null,
"model": "gpt-4o",
"provider": "openai",
"model_requested": null,
"fallback_reason": null,
"operation_outcome": "applied",
"retry_safe": null,
"tokens": {
"input_tokens": 1840,
"output_tokens": 312,
"total_tokens": 2152
},
"started_at": "2026-09-25T10:00:01Z",
"finished_at": "2026-09-25T10:00:19Z",
"updated_at": "2026-09-25T10:00:19Z",
"brief": {
"objective": "Conciliar los asientos de agosto.",
"output_format": "Tabla con diferencias."
},
"steps": [
{
"title": "Buscando en tus bibliotecas",
"status": "completed",
"tools": [
"search_documents"
]
}
],
"messages": [],
"result": "Hay dos asientos sin contrapartida: 4471 y 4502.",
"truncated": false
}
],
"meta": {
"request_id": "9f1c0a3e-7b2d-4f18-9a55-2c6e0d1b4a77",
"page": 1,
"size": 50,
"total": 1
}
}