PJT AI
Casos de usoBlogPreciosDocumentación
Casos de usoBlogPreciosDocumentación
Iniciar sesiónRegistrarse
  • Introducción
  • Autenticación
    • Clave API
    • Token JWT
    • docs.sections.rateLimiting
  • docs.sections.apiUsage
    • docs.sections.usageStats
    • docs.sections.usageHistory
    • docs.sections.accountUsage
  • docs.sections.workspaces
    • docs.sections.workspacesList
    • docs.sections.workspacesGet
  • Proyectos
    • Listar proyectos
    • Obtener proyecto
    • Crear proyecto
    • Actualizar proyecto
    • Eliminar proyecto
  • Tareas
    • Listar tareas
    • docs.sections.tasksPaged
    • docs.sections.tasksGet
    • Crear tarea
    • docs.sections.tasksUpdate
    • docs.sections.tasksDelete
    • docs.sections.tasksAssigned
  • Documentos
    • Listar documentos
    • docs.sections.documentsPaged
    • docs.sections.documentsGet
    • Crear documento
    • docs.sections.documentsUpdate
    • docs.sections.documentsDelete
  • Integraciones
    • Configuración de n8n
    • Ejemplos de flujos de trabajo
  • Manejo de errores

Documentación API

Usa la API de PJT AI para gestionar proyectos y tareas desde sistemas externos, agentes y sistemas internos.

URL Basehttps://api.pjt.ai

Autenticación

La API de PJT AI admite dos métodos de autenticación: Clave API y Token JWT.

Clave API

La Clave API es el método de autenticación recomendado para integraciones de sistemas externos. Genera una Clave API desde la configuración de tu cuenta.

1

Ve a la sección de Claves API en la configuración de tu cuenta.

2

Haz clic en el botón 'Crear nueva Clave API' e ingresa un nombre.

3

Guarda la clave generada de forma segura. La clave completa solo se muestra en el momento de la creación.

Formato del encabezado

http
X-API-Key: pk_live_xxxxxxxxxxxx

Ejemplo cURL

bash
curl -X GET "https://api.pjt.ai/api/external/v1/workspaces" \
  -H "X-API-Key: pk_live_xxxxxxxxxxxx"

Ejemplo JavaScript

typescript
const response = await fetch('https://api.pjt.ai/api/external/v1/workspaces', {
  method: 'GET',
  headers: {
    'X-API-Key': 'pk_live_xxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
});

const workspaces = await response.json();

Token JWT

El Token JWT se usa para autenticación basada en sesión de usuario. Incluye el token emitido después del inicio de sesión en el encabezado Authorization.

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

docs.sections.rateLimiting

docs.auth.rateLimitDescription

docs.auth.rateLimitTypedocs.auth.rateLimitValue
docs.auth.rateLimitPerMinute60

docs.auth.rateLimitExceeded

json
{
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Too many requests. Please try again later."
}

docs.sections.apiUsage

docs.apiUsage.description

docs.apiUsage.stats.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.apiUsage.params.apiKeyId

Respuesta

json
{
  "apiKeyId": 1,
  "todayUsage": 150,
  "monthlyUsage": 3420,
  "totalUsage": 12500,
  "today": "2026-01-20",
  "month": "2026-01"
}

docs.apiUsage.history.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.apiUsage.params.apiKeyId
daysqueryNodocs.apiUsage.params.days

Respuesta

json
{
  "apiKeyId": 1,
  "history": [
    { "date": "2026-01-20", "count": 150 },
    { "date": "2026-01-19", "count": 230 },
    { "date": "2026-01-18", "count": 180 }
  ]
}

docs.apiUsage.account.description

Respuesta

json
{
  "accountId": 1,
  "monthlyUsage": [
    { "month": "2026-01", "count": 3420 },
    { "month": "2025-12", "count": 4500 },
    { "month": "2025-11", "count": 3200 }
  ]
}

docs.sections.workspaces

docs.workspaces.description

docs.workspaces.list.description

Respuesta

json
{
  "content": [
    {
      "id": 1,
      "name": "My Workspace",
      "description": "Main workspace",
      "createdAt": "2024-01-10T09:00:00Z"
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "page": 0,
  "size": 20
}

docs.workspaces.get.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.workspaces.params.id

Respuesta

json
{
  "id": 1,
  "name": "My Workspace",
  "description": "Main workspace",
  "members": [...],
  "createdAt": "2024-01-10T09:00:00Z"
}

Proyectos

Crear, leer, actualizar y eliminar proyectos.

Obtiene una lista de proyectos en el espacio de trabajo.

Parámetros

NombreTipoRequeridoDescripción
workspaceIdpathSíID del espacio de trabajo
pagequeryNoNúmero de página (comienza desde 0)
sizequeryNoTamaño de página (predeterminado: 20)

Respuesta

json
{
  "content": [
    {
      "id": 1,
      "name": "Website Redesign",
      "description": "Complete website overhaul",
      "status": "IN_PROGRESS",
      "startDate": "2024-01-15",
      "endDate": "2024-03-30",
      "createdAt": "2024-01-10T09:00:00Z"
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "page": 0,
  "size": 20
}

Obtiene los detalles del proyecto.

Parámetros

NombreTipoRequeridoDescripción
idpathSíID del proyecto

Respuesta

json
{
  "id": 1,
  "name": "Website Redesign",
  "description": "Complete website overhaul",
  "status": "IN_PROGRESS",
  "startDate": "2024-01-15",
  "endDate": "2024-03-30",
  "tasks": [...],
  "createdAt": "2024-01-10T09:00:00Z"
}

Crea un nuevo proyecto.

Cuerpo de solicitud

json
{
  "workspaceId": 1,
  "name": "New Project",
  "description": "Project description",
  "startDate": "2024-01-15",
  "endDate": "2024-03-30"
}

Respuesta

json
{
  "id": 1,
  "name": "New Project",
  "description": "Project description",
  "status": "PLANNING",
  "startDate": "2024-01-15",
  "endDate": "2024-03-30",
  "createdAt": "2024-01-10T09:00:00Z"
}

Actualiza la información del proyecto.

Parámetros

NombreTipoRequeridoDescripción
idpathSíID del proyecto

Cuerpo de solicitud

json
{
  "name": "Updated Project Name",
  "status": "IN_PROGRESS"
}

Respuesta

json
{
  "id": 1,
  "name": "Updated Project Name",
  "status": "IN_PROGRESS",
  ...
}

Elimina un proyecto.

Parámetros

NombreTipoRequeridoDescripción
idpathSíID del proyecto

Respuesta

json
204 No Content

Tareas

Gestiona tareas dentro de un proyecto.

Obtiene una lista de tareas en el proyecto.

Parámetros

NombreTipoRequeridoDescripción
projectIdpathSíID del proyecto

Respuesta

json
[
  {
    "id": 1,
    "title": "Design mockups",
    "description": "Create initial design mockups",
    "status": "IN_PROGRESS",
    "priority": "HIGH",
    "dueDate": "2024-01-20",
    "assignee": { "id": 1, "name": "John Doe" }
  }
]

docs.tasks.paged.description

Parámetros

NombreTipoRequeridoDescripción
projectIdpathSíID del proyecto
pagequeryNoNúmero de página (comienza desde 0)
sizequeryNoTamaño de página (predeterminado: 20)

Respuesta

json
{
  "content": [
    {
      "id": 1,
      "title": "Design mockups",
      "description": "Create initial design mockups",
      "status": "IN_PROGRESS",
      "priority": "HIGH",
      "dueDate": "2024-01-20"
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "page": 0,
  "size": 20
}

docs.tasks.get.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.tasks.params.taskId

Respuesta

json
{
  "id": 1,
  "title": "Design mockups",
  "description": "Create initial design mockups",
  "status": "IN_PROGRESS",
  "priority": "HIGH",
  "dueDate": "2024-01-20",
  "assignee": { "id": 1, "name": "John Doe" },
  "project": { "id": 1, "name": "Website Redesign" }
}

Crea una nueva tarea.

Cuerpo de solicitud

json
{
  "projectId": 1,
  "title": "New Task",
  "description": "Task description",
  "priority": "MEDIUM",
  "dueDate": "2024-01-25",
  "assigneeId": 1
}

Respuesta

json
{
  "id": 2,
  "title": "New Task",
  "description": "Task description",
  "status": "TODO",
  "priority": "MEDIUM",
  "dueDate": "2024-01-25"
}

docs.tasks.update.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.tasks.params.taskId

Cuerpo de solicitud

json
{
  "title": "Updated Task",
  "status": "IN_PROGRESS",
  "priority": "HIGH"
}

Respuesta

json
{
  "id": 1,
  "title": "Updated Task",
  "status": "IN_PROGRESS",
  "priority": "HIGH",
  ...
}

docs.tasks.delete.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.tasks.params.taskId

Respuesta

json
204 No Content

docs.tasks.assigned.description

Respuesta

json
[
  {
    "id": 1,
    "title": "Design mockups",
    "description": "Create initial design mockups",
    "status": "IN_PROGRESS",
    "priority": "HIGH",
    "dueDate": "2024-01-20",
    "project": { "id": 1, "name": "Website Redesign" }
  }
]

Documentos

Gestiona documentos del proyecto.

Obtiene una lista de documentos en el proyecto.

Parámetros

NombreTipoRequeridoDescripción
projectIdpathSíID del proyecto

Respuesta

json
[
  {
    "id": 1,
    "title": "Project Requirements",
    "type": "SPECIFICATION",
    "createdAt": "2024-01-10T09:00:00Z",
    "updatedAt": "2024-01-15T14:30:00Z"
  }
]

docs.documents.paged.description

Parámetros

NombreTipoRequeridoDescripción
projectIdpathSíID del proyecto
pagequeryNoNúmero de página (comienza desde 0)
sizequeryNoTamaño de página (predeterminado: 20)

Respuesta

json
{
  "content": [
    {
      "id": 1,
      "title": "Project Requirements",
      "type": "SPECIFICATION",
      "createdAt": "2024-01-10T09:00:00Z",
      "updatedAt": "2024-01-15T14:30:00Z"
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "page": 0,
  "size": 20
}

docs.documents.get.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.documents.params.documentId

Respuesta

json
{
  "id": 1,
  "title": "Project Requirements",
  "type": "SPECIFICATION",
  "content": "Document content here...",
  "project": { "id": 1, "name": "Website Redesign" },
  "createdAt": "2024-01-10T09:00:00Z",
  "updatedAt": "2024-01-15T14:30:00Z"
}

Crea un nuevo documento.

Cuerpo de solicitud

json
{
  "projectId": 1,
  "title": "API Specification",
  "type": "SPECIFICATION",
  "content": "Document content here..."
}

Respuesta

json
{
  "id": 2,
  "title": "API Specification",
  "type": "SPECIFICATION",
  "createdAt": "2024-01-20T10:00:00Z"
}

docs.documents.update.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.documents.params.documentId

Cuerpo de solicitud

json
{
  "title": "Updated Title",
  "content": "Updated content..."
}

Respuesta

json
{
  "id": 1,
  "title": "Updated Title",
  "content": "Updated content...",
  "updatedAt": "2024-01-20T10:00:00Z"
}

docs.documents.delete.description

Parámetros

NombreTipoRequeridoDescripción
idpathSídocs.documents.params.documentId

Respuesta

json
204 No Content

Integraciones

Integra la API de PJT AI con herramientas de automatización externas para automatizar tus flujos de trabajo.

n8nn8n

Configuración de n8n

Para usar la API de PJT AI en n8n, configura la autenticación en el nodo HTTP Request.

1

Agrega un nodo HTTP Request a tu flujo de trabajo de n8n.

2

Configura la autenticación como 'Generic Credential Type'.

3

Crea una credencial 'Header Auth' e ingresa X-API-Key con tu clave API.

4

Configura la URL base y llama a los endpoints de la API.

Configuración de credenciales

n8n Credential
{
  "name": "PJT AI API",
  "type": "httpHeaderAuth",
  "data": {
    "name": "X-API-Key",
    "value": "pk_live_xxxxxxxxxxxx"
  }
}

Ejemplos de flujos de trabajo

Ejemplos de automatización de flujos de trabajo usando n8n.

Crear proyecto desde mensaje de Slack

Crea automáticamente un nuevo proyecto cuando se detecta una palabra clave específica en un mensaje de Slack.

n8n Workflow
{
  "nodes": [
    {
      "name": "Slack Trigger",
      "type": "n8n-nodes-base.slackTrigger",
      "parameters": {
        "channel": "#project-requests"
      }
    },
    {
      "name": "Create Project",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "POST",
        "url": "https://api.pjt.ai/api/external/v1/projects",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            { "name": "workspaceId", "value": "1" },
            { "name": "name", "value": "={{ $json.text }}" },
            { "name": "description", "value": "Created from Slack" }
          ]
        }
      }
    }
  ]
}

Notificaciones de tareas vencidas

Verifica diariamente las tareas vencidas y envía notificaciones de Slack a los responsables.

n8n Workflow
{
  "nodes": [
    {
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "parameters": {
        "rule": { "interval": [{ "field": "hours", "hoursInterval": 1 }] }
      }
    },
    {
      "name": "Get Tasks",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "GET",
        "url": "https://api.pjt.ai/api/external/v1/projects/{{projectId}}/tasks",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth",
        "qs": { "status": "IN_PROGRESS" }
      }
    },
    {
      "name": "Filter Overdue",
      "type": "n8n-nodes-base.filter",
      "parameters": {
        "conditions": {
          "dateTime": [{
            "value1": "={{ $json.dueDate }}",
            "operation": "before",
            "value2": "={{ $now }}"
          }]
        }
      }
    },
    {
      "name": "Send Notification",
      "type": "n8n-nodes-base.slack",
      "parameters": {
        "channel": "#alerts",
        "text": "Overdue task: {{ $json.title }}"
      }
    }
  ]
}

Crear tarea desde issue de GitHub

Crea automáticamente una tarea en PJT AI cuando se crea un nuevo issue en GitHub.

n8n Workflow
{
  "nodes": [
    {
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "parameters": {
        "path": "github-issue",
        "httpMethod": "POST"
      }
    },
    {
      "name": "Create Task",
      "type": "n8n-nodes-base.httpRequest",
      "parameters": {
        "method": "POST",
        "url": "https://api.pjt.ai/api/external/v1/projects/{{projectId}}/tasks",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "httpHeaderAuth",
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            { "name": "title", "value": "={{ $json.issue.title }}" },
            { "name": "description", "value": "={{ $json.issue.body }}" },
            { "name": "priority", "value": "MEDIUM" }
          ]
        }
      }
    }
  ]
}

Manejo de errores

La API usa códigos de estado HTTP estándar para indicar el éxito o fracaso de la solicitud.

Código de estadoSignificadoLa API usa códigos de estado HTTP estándar para indicar el éxito o fracaso de la solicitud.
200OKSolicitud exitosa.
201CreatedRecurso creado exitosamente.
204No ContentSolicitud exitosa sin contenido para devolver.
400Bad RequestSolicitud incorrecta. Verifica el formato de la solicitud.
401UnauthorizedAutenticación requerida o credenciales inválidas.
403ForbiddenSin permiso para acceder al recurso.
404Not FoundRecurso solicitado no encontrado.
429Too Many RequestsLímite de tasa excedido. Por favor, intenta más tarde.
500Internal Server ErrorError interno del servidor.

Formato de respuesta de error

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The request body contains invalid data",
    "details": [
      {
        "field": "name",
        "message": "Name is required"
      }
    ]
  }
}
PJT AI

Inteligencia que escala con tu ambición.

Myelinsoft Inc.

31, Gangnam-daero 92-gil, Gangnam-gu, Seoul, Republic of Korea

6447, 6F

Producto

  • Características
  • Casos de uso
  • Integraciones
  • API

Empresa

  • Acerca de
  • Blog
  • Contacto

Legal

  • Política de privacidad
  • Términos de servicio
  • Seguridad
  • Cumplimiento

© 2026 PJT AI. Todos los derechos reservados.

hello@pjt.ai