Skip to main content
GET
/
api
/
chat
/
history
Conversation History
curl --request GET \
  --url https://api.example.com/api/chat/history
{
  "success": true,
  "message": "<string>",
  "data.conversations": [
    {
      "_id": "<string>",
      "title": "<string>",
      "createdAt": "<string>",
      "totalTokens": 123,
      "claudeModel": "<string>",
      "templateId": {
        "_id": "<string>",
        "name": "<string>",
        "category": "<string>"
      }
    }
  ],
  "data.pagination": {
    "page": 123,
    "limit": 123,
    "total": 123,
    "pages": 123,
    "hasNext": true,
    "hasPrev": true
  },
  "data.conversation": {
    "_id": "<string>",
    "userId": {},
    "templateId": {},
    "title": "<string>",
    "claudeModel": "<string>",
    "messages": [
      {
        "role": "<string>",
        "content": "<string>",
        "timestamp": "<string>",
        "tokenCount": 123
      }
    ],
    "status": "<string>",
    "totalTokens": 123,
    "metadata": {
      "userPrompt": "<string>",
      "combinedPrompt": "<string>",
      "responseTime": 123,
      "temperature": 123,
      "maxTokens": 123
    },
    "createdAt": "<string>",
    "updatedAt": "<string>"
  }
}

Overview

Retrieve a paginated list of chat conversations for the authenticated user, or fetch detailed information about a specific conversation.

Authentication

This endpoint requires authentication.
Authorization: Bearer YOUR_JWT_TOKEN

Get Conversation History

Retrieve a paginated list of conversations for the current user.

Endpoint

GET /api/chat/history

Query Parameters

page
number
Page number for pagination. Default: 1
limit
number
Number of conversations per page. Default: 20

Response

success
boolean
Indicates if the request was successful
message
string
Response message
data.conversations
array
Array of conversation summary objects
data.pagination
object
Pagination metadata

Examples

curl -X GET "https://api.cuido.com/api/chat/history?page=1&limit=20" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Response Example

{
  "success": true,
  "message": "Historial obtenido exitosamente",
  "data": {
    "conversations": [
      {
        "_id": "65a1b2c3d4e5f6a7b8c9d0e8",
        "title": "Analiza el nivel de satisfacción del personal en el último mes y sugiere acciones para mejorarlo...",
        "createdAt": "2024-01-15T10:30:00.000Z",
        "totalTokens": 432,
        "claudeModel": "claude-3-sonnet-20240229",
        "templateId": {
          "_id": "65a1b2c3d4e5f6a7b8c9d0e1",
          "name": "Análisis de RRHH en Salud",
          "category": "Recursos Humanos y Salud"
        }
      },
      {
        "_id": "65a1b2c3d4e5f6a7b8c9d0e7",
        "title": "Cómo reducir los tiempos de espera en urgencias...",
        "createdAt": "2024-01-14T15:20:00.000Z",
        "totalTokens": 567,
        "claudeModel": "claude-3-sonnet-20240229",
        "templateId": {
          "_id": "65a1b2c3d4e5f6a7b8c9d0e2",
          "name": "Mejora de Calidad Asistencial",
          "category": "Calidad Asistencial y Salud"
        }
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 45,
      "pages": 3,
      "hasNext": true,
      "hasPrev": false
    }
  }
}

Get Specific Conversation

Retrieve complete details of a specific conversation, including all messages.

Endpoint

GET /api/chat/conversations/:id

Path Parameters

id
string
required
MongoDB ObjectId of the conversation

Response

success
boolean
Indicates if the request was successful
data.conversation
object
Complete conversation object

Examples

curl -X GET https://api.cuido.com/api/chat/conversations/65a1b2c3d4e5f6a7b8c9d0e8 \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Response Example

{
  "success": true,
  "message": "Conversación obtenida exitosamente",
  "data": {
    "conversation": {
      "_id": "65a1b2c3d4e5f6a7b8c9d0e8",
      "userId": {
        "_id": "65a1b2c3d4e5f6a7b8c9d0e0",
        "name": "Admin User",
        "email": "[email protected]"
      },
      "templateId": {
        "_id": "65a1b2c3d4e5f6a7b8c9d0e1",
        "name": "Análisis de RRHH en Salud",
        "description": "Plantilla para analizar métricas de recursos humanos y generar recomendaciones",
        "category": "Recursos Humanos y Salud"
      },
      "title": "Analiza el nivel de satisfacción del personal en el último mes y sugiere acciones para mejorarlo...",
      "claudeModel": "claude-3-sonnet-20240229",
      "messages": [
        {
          "role": "user",
          "content": "Analiza el nivel de satisfacción del personal en el último mes y sugiere acciones para mejorarlo",
          "timestamp": "2024-01-15T10:30:00.000Z",
          "tokenCount": 245
        },
        {
          "role": "assistant",
          "content": "Basado en las métricas de satisfacción del personal, se observa un promedio de 7.2/10...",
          "timestamp": "2024-01-15T10:30:02.000Z",
          "tokenCount": 187
        }
      ],
      "status": "completed",
      "totalTokens": 432,
      "metadata": {
        "userPrompt": "Analiza el nivel de satisfacción del personal en el último mes y sugiere acciones para mejorarlo",
        "combinedPrompt": "[Full combined prompt with system instructions...]",
        "responseTime": 2350,
        "temperature": 0.7,
        "maxTokens": 500
      },
      "createdAt": "2024-01-15T10:30:00.000Z",
      "updatedAt": "2024-01-15T10:30:02.000Z"
    }
  }
}

Security

Both endpoints implement ownership validation (src/controllers/chatController.js:165):
  • Users can only access their own conversations
  • Attempts to access others’ conversations return 404
  • This prevents unauthorized data access

Performance Optimization

The history endpoint uses parallel queries (src/controllers/chatController.js:128):
const [conversations, total] = await Promise.all([
  Conversation.find({ userId }).select(...).limit(...).skip(...),
  Conversation.countDocuments({ userId })
]);
This reduces response time by ~50% compared to sequential queries.

Error Responses

{
  "success": false,
  "message": "No autorizado. Token inválido o expirado."
}

Use Cases

  1. Conversation Management: Display user’s chat history in UI
  2. Analytics: Track usage patterns and popular templates
  3. Auditing: Review AI interactions for compliance
  4. Continuation: Resume previous conversations
  5. Cost Tracking: Monitor token consumption per user

Source Code References

  • Route: src/routes/chatRoutes.js:58-67
  • History Controller: src/controllers/chatController.js:121
  • Single Conversation: src/controllers/chatController.js:160
  • Model: src/models/Conversation.js

Build docs developers (and LLMs) love