인증

모든 요청은 Authorization: Bearer 헤더 하나로 인증합니다. 인증 정보를 사용할 때는 Access Key와 Secret Key를 콜론으로 연결하세요. 인증 정보는 콘솔의 Credentials 페이지에서 만듭니다.

요청 예시
curl https://api.justdeploy.net/ping \
  -H "Authorization: Bearer YOUR_ACCESS_KEY:YOUR_SECRET_KEY"

기존 X-Access-Key 및 X-Secret-Key 헤더도 계속 작동합니다. 이 헤더를 이미 사용 중인 앱은 새로 빌드할 필요가 없습니다. 새로 작성하는 코드에는 단일 헤더를 사용하세요.

응답
"pong"
배포한 코드가 이 API를 호출한다면 official SDK가 가장 간단합니다. 인자 없이 클라이언트를 만들면 배포된 앱이 스스로 인증하므로 발급하거나 등록할 키가 없습니다. JustDeploy 밖에서 호출할 때, 또는 의존성을 추가하고 싶지 않을 때 위의 헤더를 쓰세요.

SDK 없이 호출한다면 키가 자동으로 주입되지 않습니다. 앱 키를 발급하고 빌드 전에 프로젝트 환경변수 JUSTDEPLOY_ACCESS_KEY와 JUSTDEPLOY_SECRET_KEY로 등록하세요. 환경변수는 빌드할 때 이미지에 포함됩니다. process.env에서 읽고 소스에 키를 직접 적지 마세요.

MCP로 연결된 AI는 Copy MCP setup 또는 OAuth로 발급된 사용자 범위 PAT를 사용합니다. 사용자가 접근할 수 있는 모든 조직을 포함합니다. MCP 클라이언트가 인증을 관리하므로 PAT를 앱이나 배포 환경에 복사하지 마세요.

GET/organizations

현재 인증으로 접근할 수 있는 조직을 조회합니다. 연결 상태를 확인하고 다른 API에 필요한 조직 ID를 얻을 때 사용하세요. 인증 정보 키를 사용하면 해당 조직 하나와 null인 role 필드가 반환됩니다. Bearer 토큰을 사용하면 로그인한 사용자가 속한 모든 조직과 역할이 반환됩니다.

응답
{
  "organizations": [
    {
      "id": "org_...",
      "name": "My Organization",
      "role": null
    }
  ]
}

키의 허용 범위

어떤 키든 자기 조직의 JustDeploy API 전체를 사용할 수 있습니다. AI가 배포된 앱을 위해 발급한 키도 마찬가지입니다. 데이터베이스 행 읽기·쓰기, 파일 이동, 이메일 발송, 프로젝트 설정 변경, 빌드 시작, 추가 키 발급까지 할 수 있습니다. 앱 키도 직접 만든 키와 똑같이 조심해서 다루세요.

데이터베이스와 파일 스토리지, 인증된 발송 도메인은 조직의 자원이라 모든 프로젝트가 함께 씁니다. 프로젝트마다 따로 연결할 것은 없고, 한 앱에 발급한 키도 전부 사용할 수 있습니다.

프로젝트는 관리 멤버만 배포하도록 제한할 수 있으며, 프로젝트 페이지의 콘솔 설정입니다. 이 설정은 사람을 대상으로 합니다. 로그인한 사용자나 MCP 토큰은 그 사용자가 명단에 있을 때만 빌드 생성·재빌드·재배포를 할 수 있고, 역할은 영향을 주지 않아 명단에 없는 owner도 거절됩니다. 거절은 관리 멤버를 알려주는 403이며 재시도해도 통하지 않습니다. 이 설정이 막는 대상은 API 키가 아니므로, 키를 막는 수단이 아니라 "우리 팀에서 누가 배포할 수 있나"의 답으로 쓰세요.

앱용 키 발급

배포된 앱은 더 이상 이 키가 필요하지 않습니다. SDK가 스스로 인증합니다. JustDeploy 밖에서 같은 조직에 접근하는 코드를 실행할 때 발급하세요. 프로젝트에 이미 있는 키를 먼저 확인하고 새로 발급하기보다 재사용하세요.

POST/organizations/:organizationId/projects/:projectId/credentials

프로젝트에 연결된 수동 앱 키를 발급하며, 권한은 조직 전체에 적용됩니다. 비밀값은 한 번만 반환하므로 사용할 곳에 맞게 소스 밖에 안전하게 보관하세요. SDK를 사용하는 배포 앱은 자동 인증하므로 프로젝트 설정에 키를 자동으로 추가하지 마세요. 수동 앱 키는 프로젝트당 최대 3개이며, 한도를 넘으면 기존 키 목록과 함께 409를 반환합니다.

409를 받으면 자리를 비우지 말고 기존 키 중 하나를 재사용하세요. 임의로 판단해 키를 삭제하지 마세요. 이 프로젝트의 JUSTDEPLOY_ACCESS_KEY에 없는 키라도 로컬 개발이나 아직 서비스 중인 이전 배포본이 사용하고 있을 수 있고, lastUsedAt은 근사값입니다. 프로젝트 담당자에게 어떤 키를 폐기해도 되는지 확인하고, 지목된 키만 삭제한 뒤 다시 시도하세요.

응답
{
  "credential": {
    "id": 12,
    "access": "ak_...",
    "secret": "sk_...",
    "description": "App key for project prj_...",
    "expiredAt": null,
    "createdAt": "2026-07-27T00:00:00.000Z"
  }
}
GET/organizations/:organizationId/projects/:projectId/credentials

프로젝트의 앱 키를 조회합니다. secret은 절대 포함되지 않습니다.

DELETE/organizations/:organizationId/projects/:projectId/credentials/:credentialId

앱 키를 폐기합니다. 해당 키를 직접 사용하는 요청은 거절되지만, 이미 발급된 임시 인증은 최대 10분 더 유효할 수 있습니다. 삭제하기로 승인한 키만 폐기하세요. 앱이 수동 인증을 계속 사용해야 한다면 대체 키를 설정하고 재빌드한 뒤 이전 키를 폐기하세요.