Lovable한국어 문서
Deploy & Domains

프로젝트를 빌드하고 배포합니다.

프로젝트 게시

플랜: Business 이상

스코프: projects:write

프로젝트를 빌드하고 배포합니다. 이 엔드포인트는 202Deployment 표현을 반환합니다. 처음 상태는 running이고 url 및 오류 필드는 null입니다. 배포가 끝날 때까지 GET /v1/projects/{project_id}/publish/{deployment_id}를 poll하세요.

필요하면 audience로 게시된 앱을 열 수 있는 대상을 선택할 수 있습니다. 프로젝트 읽기 응답에서는 이 값이 publish_audience로 보고됩니다. audience를 생략하면 현재 설정을 유지합니다. audience 변경은 새 배포가 끝나기 전에 현재 게시된 버전에 즉시 적용됩니다. 앱을 다시 빌드하지 않고 접근 설정만 바꾸려면 PATCH /v1/projects/{project_id}/publish를 사용합니다. 앱을 오프라인으로 전환하려면 DELETE /v1/projects/{project_id}/publish를 사용합니다.

OpenAPI

항목
MethodPOST
Path/v1/projects/{project_id}/publish
Operation IDpublishProject
Source spechttps://api.lovable.dev/v1/openapi.yaml
Local snapshotYAML 스냅샷 (SHA-256: 2207bf766a00ae7f62efa6f199f565cd2d67ef91296d8ba7b91b26fe838c4685)
POST /v1/projects/{project_id}/publish

인증

Lovable-API-Key: lov_your-api-key 또는 Authorization: Bearer <key>를 보냅니다. 이 엔드포인트는 projects:write 스코프가 필요합니다.

매개변수

이름위치필수타입설명
project_idpathstring프로젝트 ID입니다.
Lovable-Versionheader아니요string제공받을 안정 API 버전입니다. YYYY-MM-DD 날짜 형식으로 보냅니다. 생략하면 현재 가장 오래된 지원 안정 버전인 2026-09-11이 사용됩니다.
Lovable-Betaheader아니요string안정 버전 위에 활성화할 베타 리비전 문자열입니다. 여러 개는 쉼표로 구분합니다.

요청 본문

요청 본문은 필수입니다. Content-Type은 application/json입니다. 본문은 PublishProjectRequest 스키마를 사용합니다.

필드타입필수설명
namestring아니요관리형 게시 URL의 slug입니다. 예를 들어 acme-landing-pagehttps://acme-landing-page.lovable.app을 만듭니다. 커스텀 도메인과 워크스페이스 브랜딩은 hostname을 바꿀 수 있습니다.
audiencestring아니요게시된 앱을 열 수 있는 대상입니다. public, workspace, custom 중 하나입니다. 프로젝트 읽기 응답에서는 publish_audience로 보고됩니다. UI에서 관리하는 기존 grant를 포함한 custom audience를 사용할 수 있습니다. 생략하면 현재 설정을 유지합니다.
audience_targetsPublishAudienceTarget[]아니요앱을 열 수 있는 그룹입니다. audiencecustom일 때만 허용됩니다. 목록을 제공하면 모든 그룹 및 사용자 grant를 대체하고 워크스페이스 전체 접근을 제거합니다. 빈 목록은 해당 grant를 제거합니다. UI에서 관리하는 기존 조직 접근과 이메일 초대는 보존됩니다. 생략하면 audience 변경 중에도 저장된 target을 유지합니다. custom 모드 밖에서는 target이 비활성입니다. null은 허용되지 않습니다. 최대 100개까지 보낼 수 있습니다.

PublishAudienceTargettypeid를 필수로 가집니다. 현재 typegroup만 지원하며 idGET /v1/workspaces/{workspace_id}/groups가 반환한 그룹 ID입니다. id는 빈 문자열일 수 없으며(minLength: 1), audience_targets는 최대 100개까지 보낼 수 있습니다.

예시

curl --request POST \
  --url 'https://api.lovable.dev/v1/projects/project-id/publish' \
  --header 'Lovable-API-Key: lov_your-api-key' \
  --header 'Lovable-Version: 2026-09-11' \
  --header 'Content-Type: application/json' \
  --data '{}'
const response = await fetch("https://api.lovable.dev/v1/projects/project-id/publish", {
  method: "POST",
  headers: {
    "Lovable-API-Key": process.env.LOVABLE_API_KEY ?? "lov_your-api-key",
    "Lovable-Version": "2026-09-11",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({}),
});
if (!response.ok) {
  throw new Error(`Lovable API ${response.status}: ${await response.text()}`);
}
console.log(await response.json());

응답

상태본문설명
202Deployment배포가 시작되었습니다. 반환된 id를 사용해 Location 헤더의 GET /v1/projects/{project_id}/publish/{deployment_id}를 poll합니다.
400ErrorResponse요청 본문 또는 매개변수 형식이 잘못되었거나 검증에 실패했습니다.
401ErrorResponseAPI 키, 세션 토큰 또는 OAuth access token이 없거나 유효하지 않습니다.
402ErrorResponsePublic API 접근에는 Business 이상 플랜이 필요합니다.
403ErrorResponse키 또는 호출자에게 필요한 스코프나 권한이 없습니다.
404ErrorResponse프로젝트가 존재하지 않거나 삭제되었거나 인증된 클라이언트가 접근할 수 없습니다.
406ErrorResponseAccept 헤더가 이 엔드포인트가 생성하는 모든 미디어 타입을 제외합니다.
429ErrorResponse요청이 너무 많습니다. Retry-After가 있으면 해당 간격 뒤에 재시도합니다.
503ErrorResponse서비스를 일시적으로 사용할 수 없거나 처리 기한이 만료되었습니다. 변이가 완료될 수 있으므로 재시도 전에 리소스 상태를 확인하세요.
defaultErrorResponse오류입니다. 응답 본문은 표준 오류 envelope을 사용하며 status는 HTTP 상태 코드와 같고 type은 machine-readable 오류 코드입니다.

응답 헤더

모든 응답에는 상황에 따라 다음 공통 헤더가 포함될 수 있습니다: Lovable-Version, Lovable-Beta, X-Request-Id, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-Lovable-Unknown-Query-Params, X-Lovable-Unknown-Query-Params-Omitted. X-Lovable-Unknown-Query-Params는 이 작업이 선언하지 않은 query parameter가 있을 때 URL escape된 이름을 최대 20개까지 쉼표로 제공하며, 20개를 넘으면 X-Lovable-Unknown-Query-Params-Omitted가 누락된 개수(minimum: 1)를 제공합니다. 401 응답은 string인 WWW-Authenticate를, 429 응답은 integer인 Retry-After를 포함합니다. Retry-Afterminimum: 1입니다. X-RateLimit-Reset은 지연 시간이 아니라 Unix timestamp 초 단위입니다.

POST /v1/projects/{project_id}/publish202 응답은 추가로 string인 Location 헤더를 제공하며, 이 값은 반환된 deployment 상태를 poll할 GET /v1/projects/{project_id}/publish/{deployment_id} URL입니다.

스키마

PublishAudienceTarget

필드타입필수제약설명
typestringenum: group대상 유형입니다. 현재 그룹만 설정할 수 있습니다.
idstringminLength: 1GET /v1/workspaces/{workspace_id}/groups가 반환한 그룹 ID입니다.

Deployment 응답 스키마는 게시 상태 조회와 같습니다. id, status, url, error_message, error_class는 모두 필수 필드입니다. statusrunning, completed, error, unknown 값을 사용할 수 있으며 클라이언트는 새 값을 허용해야 합니다. url, error_message, error_class는 값이 없으면 null입니다. error_classtransient, code, configuration, data, integration, policy, internal, null 중 하나이며 새 값이 추가될 수 있습니다.

ErrorResponse

공통 오류 응답입니다.

필드타입필수설명
detail`string \null`
errors`array \null`
props`object \null`
request_idstringX-Request-Id 응답 헤더에서 반복되는 이 요청의 식별자입니다.
statusinteger본문에 반복되는 HTTP 상태 코드입니다.
titlestring사람이 읽을 수 있는 오류 요약입니다.
typestring안정적인 machine-readable 오류 유형입니다.

원본에 포함된 이 작업의 OpenAPI 스냅샷은 YAML 스냅샷 (SHA-256: 2207bf766a00ae7f62efa6f199f565cd2d67ef91296d8ba7b91b26fe838c4685)로 보존했습니다. 최신 전체 OpenAPI 계약은 https://api.lovable.dev/v1/openapi.yaml에서 확인할 수 있습니다.

On this page