PJT AIPJT AI/API REFERENCE
v1https://api.pjt.ai/api/external/v1
Primeros pasosMCP
ResumenAutenticaciónCódigos de error
Workspaces
  • GET/workspaces
  • GET/workspaces/{workspaceId}
Projects
  • GET/workspaces/{workspaceId}/projects
  • POST/projects
  • GET/projects/{projectId}
  • PUT/projects/{projectId}
  • DELETE/projects/{projectId}
  • GET/projects/{projectId}/timeline
  • GET/projects/{projectId}/activities
  • GET/projects/{projectId}/files
Tasks
  • GET/projects/{projectId}/tasks
  • POST/tasks
  • GET/tasks/{taskId}
  • PUT/tasks/{taskId}
  • DELETE/tasks/{taskId}
  • GET/tasks/assigned
Documents
  • GET/projects/{projectId}/documents
  • GET/documents/{documentId}
  • POST/documents
  • PUT/documents/{documentId}
  • DELETE/documents/{documentId}
OVERVIEW

PJT AI REST API

Una API REST estándar para integrar los datos de PJT AI con sistemas externos. Todas las solicitudes y respuestas son JSON, y la URL base es https://api.pjt.ai/api/external/v1.

Conceptos básicos
  • Autenticación — cabecera X-API-Key (API key de cuenta, prefijo pjt_)
  • Ámbitos de la clave — read (solo lectura, por defecto) / write. POST·PUT·DELETE requieren una clave con ámbito write — de lo contrario 403 SCOPE_FORBIDDEN
  • Límite — 60 req/min + 10 000 req/mes por clave (Enterprise a convenir)
  • Códigos de respuesta — 2xx éxito, 4xx error del cliente, 5xx error del servidor
  • Fechas — todas las marcas de tiempo son ISO 8601 (UTC)
AUTH

Autenticación

Cada solicitud requiere la cabecera X-API-Key: <API_KEY>. Emite claves en Configuración de cuenta > Claves API (se muestran solo una vez al crearlas).

⚠
Almacenar claves
Usa las claves de API solo en el lado del servidor. Si una se expone a un cliente (navegador o app móvil), revócala y reemítela de inmediato.
Workspaces
GET/workspaces

Listar workspaces

Devuelve los workspaces accesibles para la cuenta de la API key.

Response codes
200OK401Unauthorized429Rate Limited
GET/workspaces/{workspaceId}

Obtener workspace

Devuelve un workspace.

Path parameters
NombreTipoDescripción
workspaceIdREQUIREDintegerID del workspace
Response codes
200OK401Unauthorized404Not Found
Projects
GET/workspaces/{workspaceId}/projects

Listar proyectos

Devuelve los proyectos activos del workspace (excluye cancelados/archivados).

Path parameters
NombreTipoDescripción
workspaceIdREQUIREDintegerID del workspace
Response codes
200OK401Unauthorized403Forbidden
POST/projects

Crear proyecto (idempotente)

Crea un proyecto. Con externalRef la llamada es idempotente — repetir el mismo (workspaceId, externalRef) devuelve el proyecto existente con 200 en lugar de crear uno nuevo (201 en la primera creación).

Body parameters
NombreTipoDescripción
workspaceIdREQUIREDintegerID del workspace
nameREQUIREDstringNombre del proyecto
externalRefstringClave de idempotencia — repetir con el mismo valor devuelve el proyecto existente con 200 en lugar de crear uno nuevo
codestringCódigo del proyecto (prefijo de clave de tarea). Se genera automáticamente si se omite
descriptionstringDescripción
clientIdsarrayArray de IDs de clientes
managerIdintegerID de cuenta del manager
startDatedateFecha de inicio — ISO 8601 (YYYY-MM-DD)
endDatedateFecha de fin — ISO 8601 (YYYY-MM-DD)
budgetintegerPresupuesto
Response codes
201Created200OK400Bad Request401Unauthorized
GET/projects/{projectId}

Detalle / progreso del proyecto

Devuelve el detalle del proyecto: estado, progreso (%), fechas planificadas/reales y última modificación.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Response codes
200OK404Not Found
PUT/projects/{projectId}

Actualizar proyecto

Actualiza solo los campos enviados (actualización parcial).

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Body parameters
NombreTipoDescripción
namestringNombre del proyecto
statusenumEstado — PLANNING·ESTIMATING·WAITING·IN_PROGRESS·ON_HOLD·COMPLETED·CANCELLED
progressRateintegerProgreso (%) 0–100
startDatedateFecha de inicio — ISO 8601 (YYYY-MM-DD)
endDatedateFecha de fin — ISO 8601 (YYYY-MM-DD)
Response codes
200OK400Bad Request404Not Found
DELETE/projects/{projectId}

Eliminar proyecto

Elimina un proyecto. Devuelve 204 No Content si tiene éxito (sin cuerpo).

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Response codes
204No Content403Forbidden404Not Found
GET/projects/{projectId}/timeline

Timeline (hitos)

Hitos del proyecto — nombre, estado (PLANNED/IN_PROGRESS/COMPLETED), fecha límite, fecha de finalización y progreso. Ordenados por sortOrder.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Response codes
200OK403Forbidden404Not Found
GET/projects/{projectId}/activities

Actividades

Eventos de cambio de tareas del proyecto, del más reciente al más antiguo — tipo, mensaje, actor y hora.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Query parameters
NombreTipoDescripción
pageintegerNúmero de página (desde 0, por defecto 0)
sizeintegerTamaño de página (por defecto 50, máx. 200)
Response codes
200OK403Forbidden404Not Found
GET/projects/{projectId}/files

Archivos

Adjuntos de tareas y comentarios del proyecto combinados, del más reciente al más antiguo. fileUrl es una URL estática sin expiración.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Query parameters
NombreTipoDescripción
limitintegerMáximo de elementos (por defecto 100, máx. 500)
Response codes
200OK403Forbidden404Not Found
Tasks
GET/projects/{projectId}/tasks

Listar tareas

Devuelve las tareas de un proyecto. Usa /tasks/paged si necesitas paginación.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Query parameters
NombreTipoDescripción
sortBystringCampo de ordenación (por defecto createdAt)
Response codes
200OK403Forbidden404Not Found
POST/tasks

Crear tarea

Crea una tarea.

Body parameters
NombreTipoDescripción
projectIdREQUIREDintegerID del proyecto (numérico)
titleREQUIREDstringTítulo
descriptionstringDescripción
assigneeIdintegerID de cuenta del asignado
statusenumEstado — PENDING·TODO·IN_PROGRESS·IN_REVIEW·BLOCKED·COMPLETED·CANCELLED
priorityenumPrioridad — URGENT·HIGH·MEDIUM·LOW
dueDatedateFecha límite — ISO 8601
milestoneIdintegerID del hito a vincular
Response codes
201Created400Bad Request401Unauthorized
GET/tasks/{taskId}

Obtener tarea

Devuelve una tarea.

Path parameters
NombreTipoDescripción
taskIdREQUIREDintegerID de la tarea
Response codes
200OK404Not Found
PUT/tasks/{taskId}

Actualizar tarea

Actualiza solo los campos enviados.

Path parameters
NombreTipoDescripción
taskIdREQUIREDintegerID de la tarea
Body parameters
NombreTipoDescripción
titlestringTítulo
statusenumEstado — PENDING·TODO·IN_PROGRESS·IN_REVIEW·BLOCKED·COMPLETED·CANCELLED
priorityenumPrioridad — URGENT·HIGH·MEDIUM·LOW
dueDatedateFecha límite — ISO 8601
Response codes
200OK400Bad Request404Not Found
DELETE/tasks/{taskId}

Eliminar tarea

Elimina una tarea. Devuelve 204 No Content si tiene éxito.

Path parameters
NombreTipoDescripción
taskIdREQUIREDintegerID de la tarea
Response codes
204No Content403Forbidden404Not Found
GET/tasks/assigned

Mis tareas asignadas

Devuelve las tareas asignadas a la cuenta de la API key.

Response codes
200OK401Unauthorized
Documents
GET/projects/{projectId}/documents

Listar documentos

Devuelve los documentos de un proyecto. Usa /documents/paged si necesitas paginación.

Path parameters
NombreTipoDescripción
projectIdREQUIREDstringID del proyecto — ID numérico o publicId que empieza con p_
Response codes
200OK403Forbidden404Not Found
GET/documents/{documentId}

Obtener documento

Devuelve un documento incluyendo su contenido.

Path parameters
NombreTipoDescripción
documentIdREQUIREDintegerID del documento
Response codes
200OK404Not Found
POST/documents

Crear documento

Crea un documento.

Body parameters
NombreTipoDescripción
workspaceIdREQUIREDintegerID del workspace
titleREQUIREDstringTítulo
documentTypeREQUIREDenumTipo de documento (p. ej. REQUIREMENT, MEETING_NOTE)
projectIdintegerID del proyecto (numérico)
contentstringCuerpo del documento
visibilityenumVisibilidad — PUBLIC·TEAM·PRIVATE
Response codes
201Created400Bad Request401Unauthorized
PUT/documents/{documentId}

Actualizar documento

Actualiza solo los campos enviados.

Path parameters
NombreTipoDescripción
documentIdREQUIREDintegerID del documento
Body parameters
NombreTipoDescripción
titlestringTítulo
contentstringCuerpo del documento
visibilityenumVisibilidad — PUBLIC·TEAM·PRIVATE
Response codes
200OK400Bad Request404Not Found
DELETE/documents/{documentId}

Eliminar documento

Elimina un documento. Devuelve 204 No Content si tiene éxito.

Path parameters
NombreTipoDescripción
documentIdREQUIREDintegerID del documento
Response codes
204No Content403Forbidden404Not Found
ERRORS

Códigos de error

Cada respuesta de error incluye error.code y error.message.

CódigoNombreDescripciónAcción
400Bad RequestEl cuerpo de la solicitud no es válido.Valida el body de la solicitud
401UnauthorizedLa clave de API es inválida o falta.Vuelve a comprobar la clave de API
403ForbiddenNo tienes permiso para acceder a este recurso. Las solicitudes de escritura con una clave de solo lectura devuelven SCOPE_FORBIDDEN.Comprueba roles/ámbitos
404Not FoundNo se encontró el recurso solicitado.Vuelve a comprobar el ID
429Rate LimitedHas superado el límite de tasa.Consulta la cabecera Retry-After y aplica backoff
500Server ErrorSe produjo un error al procesar la solicitud en el servidor.Reintenta tras 5 min, revisa status.pjt.ai
BASE URL
https://api.pjt.ai/api/external/v1
VERSION
v1 · released 2026-07