PJT AI
활용 사례블로그가격문서
활용 사례블로그가격문서
로그인회원가입
  • 소개
  • 인증
    • API Key
    • JWT Token
    • Rate Limiting
  • API 사용량
    • 사용량 통계
    • 일별 사용량
    • 계정 사용량
  • 워크스페이스
    • 목록 조회
    • 상세 조회
  • 프로젝트
    • 목록 조회
    • 상세 조회
    • 생성
    • 수정
    • 삭제
  • 태스크
    • 목록 조회
    • 목록 조회 (페이징)
    • 상세 조회
    • 생성
    • 수정
    • 삭제
    • 내게 할당된 태스크
  • 문서
    • 목록 조회
    • 목록 조회 (페이징)
    • 상세 조회
    • 생성
    • 수정
    • 삭제
  • 외부 연동
    • n8n 설정
    • 워크플로우 예제
  • 에러 처리

API 문서

PJT AI API를 사용하여 외부 시스템, 에이전트, 사내 시스템에서 프로젝트와 태스크를 관리하세요.

Base URLhttps://api.pjt.ai

인증

PJT AI API는 두 가지 인증 방식을 지원합니다: API Key와 JWT Token.

API Key

API Key는 외부 시스템 연동에 적합한 인증 방식입니다. 계정 설정에서 API Key를 발급받아 사용하세요.

1

계정 설정 페이지에서 API Key 섹션으로 이동합니다.

2

새 API Key 생성 버튼을 클릭하고 이름을 입력합니다.

3

생성된 키를 안전하게 보관합니다. 키는 생성 시에만 전체가 표시됩니다.

헤더 형식

http
X-API-Key: pk_live_xxxxxxxxxxxx

cURL 예제

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

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();

JWT Token

JWT Token은 사용자 세션 기반 인증에 사용됩니다. 로그인 후 발급된 토큰을 Authorization 헤더에 포함하세요.

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Rate Limiting

API 호출은 Rate Limiting이 적용됩니다. 제한을 초과하면 429 에러가 반환됩니다.

제한 유형제한 값
분당 요청 수60

Rate Limit 초과 시 응답

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

API 사용량

API Key별 사용량을 조회하고 모니터링할 수 있습니다.

API Key의 사용량 통계를 조회합니다. 오늘, 이번 달, 전체 사용량을 반환합니다.

파라미터

이름타입필수설명
idpath예API Key ID

응답

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

일별 사용량 히스토리를 조회합니다.

파라미터

이름타입필수설명
idpath예API Key ID
daysquery아니오조회 일수 (기본값: 30)

응답

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

계정의 월별 전체 API 사용량을 조회합니다.

응답

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

워크스페이스

내 워크스페이스 목록을 조회하고 상세 정보를 확인할 수 있습니다.

내 워크스페이스 목록을 조회합니다.

응답

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

워크스페이스 상세 정보를 조회합니다.

파라미터

이름타입필수설명
idpath예워크스페이스 ID

응답

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

프로젝트

프로젝트를 생성, 조회, 수정, 삭제할 수 있습니다.

워크스페이스의 프로젝트 목록을 조회합니다.

파라미터

이름타입필수설명
workspaceIdpath예워크스페이스 ID
pagequery아니오페이지 번호 (0부터 시작)
sizequery아니오페이지 크기 (기본값: 20)

응답

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
}

프로젝트 상세 정보를 조회합니다.

파라미터

이름타입필수설명
idpath예프로젝트 ID

응답

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"
}

새 프로젝트를 생성합니다.

요청 본문

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

응답

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"
}

프로젝트 정보를 수정합니다.

파라미터

이름타입필수설명
idpath예프로젝트 ID

요청 본문

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

응답

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

프로젝트를 삭제합니다.

파라미터

이름타입필수설명
idpath예프로젝트 ID

응답

json
204 No Content

태스크

프로젝트 내 태스크를 관리합니다.

프로젝트의 태스크 목록을 조회합니다.

파라미터

이름타입필수설명
projectIdpath예프로젝트 ID

응답

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" }
  }
]

프로젝트의 태스크 목록을 페이징하여 조회합니다.

파라미터

이름타입필수설명
projectIdpath예프로젝트 ID
pagequery아니오페이지 번호 (0부터 시작)
sizequery아니오페이지 크기 (기본값: 20)

응답

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
}

태스크 상세 정보를 조회합니다.

파라미터

이름타입필수설명
idpath예태스크 ID

응답

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" }
}

새 태스크를 생성합니다.

요청 본문

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

응답

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

태스크 정보를 수정합니다.

파라미터

이름타입필수설명
idpath예태스크 ID

요청 본문

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

응답

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

태스크를 삭제합니다.

파라미터

이름타입필수설명
idpath예태스크 ID

응답

json
204 No Content

내게 할당된 태스크 목록을 조회합니다.

응답

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" }
  }
]

문서

프로젝트 문서를 관리합니다.

프로젝트의 문서 목록을 조회합니다.

파라미터

이름타입필수설명
projectIdpath예프로젝트 ID

응답

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

프로젝트의 문서 목록을 페이징하여 조회합니다.

파라미터

이름타입필수설명
projectIdpath예프로젝트 ID
pagequery아니오페이지 번호 (0부터 시작)
sizequery아니오페이지 크기 (기본값: 20)

응답

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
}

문서 상세 정보를 조회합니다.

파라미터

이름타입필수설명
idpath예문서 ID

응답

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"
}

새 문서를 생성합니다.

요청 본문

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

응답

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

문서 정보를 수정합니다.

파라미터

이름타입필수설명
idpath예문서 ID

요청 본문

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

응답

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

문서를 삭제합니다.

파라미터

이름타입필수설명
idpath예문서 ID

응답

json
204 No Content

외부 연동

PJT AI API를 외부 자동화 도구와 연동하여 워크플로우를 자동화할 수 있습니다.

n8nn8n

n8n 설정

n8n에서 PJT AI API를 사용하려면 HTTP Request 노드에 인증 정보를 설정하세요.

1

n8n 워크플로우에 HTTP Request 노드를 추가합니다.

2

Authentication을 'Generic Credential Type'으로 설정합니다.

3

'Header Auth' credential을 생성하고 X-API-Key와 API 키를 입력합니다.

4

Base URL을 설정하고 API 엔드포인트를 호출합니다.

Credential 설정

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

워크플로우 예제

n8n을 활용한 워크플로우 자동화 예제입니다.

Slack 메시지로 프로젝트 생성

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" }
          ]
        }
      }
    }
  ]
}

기한 초과 태스크 알림

매일 기한이 지난 태스크를 조회하여 담당자에게 Slack 알림을 보냅니다.

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 }}"
      }
    }
  ]
}

GitHub 이슈로 태스크 생성

GitHub에 새 이슈가 등록되면 자동으로 PJT AI 태스크를 생성합니다.

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" }
          ]
        }
      }
    }
  ]
}

에러 처리

API는 표준 HTTP 상태 코드를 사용하여 요청 성공 또는 실패를 나타냅니다.

상태 코드의미API는 표준 HTTP 상태 코드를 사용하여 요청 성공 또는 실패를 나타냅니다.
200OK요청이 성공적으로 처리되었습니다.
201Created리소스가 성공적으로 생성되었습니다.
204No Content요청이 성공했으며 반환할 콘텐츠가 없습니다.
400Bad Request잘못된 요청입니다. 요청 형식을 확인하세요.
401Unauthorized인증이 필요하거나 인증 정보가 올바르지 않습니다.
403Forbidden해당 리소스에 대한 접근 권한이 없습니다.
404Not Found요청한 리소스를 찾을 수 없습니다.
429Too Many Requests요청 한도를 초과했습니다. 잠시 후 다시 시도하세요.
500Internal Server Error서버 내부 오류가 발생했습니다.

에러 응답 형식

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

목표와 함께 성장하는 인텔리전스.

(주)미엘린소프트 대표 목영록

사업자등록번호 437-81-01272

통신판매업 신고 : 2024-서울강남-03035

서울특별시 강남구 강남대로92길 31, 6층 6447호

070-8680-1360

제품

  • 기능
  • 활용 사례
  • 연동
  • API

회사

  • 소개
  • 블로그
  • 문의

법적 고지

  • 개인정보처리방침
  • 이용약관
  • 보안
  • 컴플라이언스

© 2026 PJT AI. All rights reserved.

hello@pjt.ai