---
title: "Changes to Publish project"
method: POST
path: "/v1/projects/{project_id}/publish"
---

# Changes to Publish project

`POST /v1/projects/{project_id}/publish`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 7 of 30 revisions.

- **2026-09-18** `a83f0776a896`: 1 breaking, 2 info
- **2026-09-17** `63e95b862209`: 1 info
- **2026-09-16** `1eba97261efb`: 2 breaking, 4 info
- **2026-09-15** `82dda6df74b8`: 34 breaking, 1 warning, 42 info
- **2026-09-14** `8539cafd5cb6`: 3 info
- **2026-09-11** `b19e0179b77a`: 1 info
- **2026-09-11** `c7f67a5564ac`: 1 breaking, 4 warning, 2 info

## Changes

- **2026-09-18** `a83f0776a896`: 1 breaking, 2 info
  - the request property `audience_targets` became not nullable
  - for the `header` request parameter `Lovable-Version`, the format was generalized from `date` to no format
  - added the non-success response with the status `503`
- **2026-09-17** `63e95b862209`: 1 info
  - added the non-success response with the status `404`
- **2026-09-16** `1eba97261efb`: 2 breaking, 4 info
  - removed the required property `audience` from the response with the `202` status
  - removed the required property `deployment_id` from the response with the `202` status
  - added the required property `error_class` to the response with the `202` status
  - added the required property `error_message` to the response with the `202` status
  - added the required property `id` to the response with the `202` status
  - added the required property `status` to the response with the `202` status
- **2026-09-15** `82dda6df74b8`: 34 breaking, 1 warning, 42 info
  - request property `audience` was restricted to a list of enum values
  - the request property `audience` became not nullable
  - the `audience` request property type changed from `array, null` to `string`
  - the response property `detail` became nullable for the status `400`
  - the response property `detail` became nullable for the status `401`
  - the response property `detail` became nullable for the status `402`
  - the response property `detail` became nullable for the status `403`
  - the response property `detail` became nullable for the status `406`
  - the response property `detail` became nullable for the status `429`
  - the response property `detail` became nullable for the status `default`
  - the response property `errors` became nullable for the status `400`
  - the response property `errors` became nullable for the status `401`
  - the response property `errors` became nullable for the status `402`
  - the response property `errors` became nullable for the status `403`
  - the response property `errors` became nullable for the status `406`
  - the response property `errors` became nullable for the status `429`
  - the response property `errors` became nullable for the status `default`
  - the response property `errors/items/location` became nullable for the status `400`
  - the response property `errors/items/location` became nullable for the status `401`
  - the response property `errors/items/location` became nullable for the status `402`
  - the response property `errors/items/location` became nullable for the status `403`
  - the response property `errors/items/location` became nullable for the status `406`
  - the response property `errors/items/location` became nullable for the status `429`
  - the response property `errors/items/location` became nullable for the status `default`
  - the response property `props` became nullable for the status `400`
  - the response property `props` became nullable for the status `401`
  - the response property `props` became nullable for the status `402`
  - the response property `props` became nullable for the status `403`
  - the response property `props` became nullable for the status `406`
  - the response property `props` became nullable for the status `429`
  - the response property `props` became nullable for the status `default`
  - the response property `url` became nullable for the status `202`
  - removed the required property `status` from the response with the `202` status
  - removed the required property `visibility` from the response with the `202` status
  - removed the request property `visibility`
  - added the new optional request property `audience_targets`
  - added the new `custom` enum value to the request property `audience`
  - added the new `public` enum value to the request property `audience`
  - added the new `workspace` enum value to the request property `audience`
  - the response property `deployment_id` became required for the status `202`
  - …37 more
- **2026-09-14** `8539cafd5cb6`: 3 info
  - the endpoint scheme security `BearerAuth` was added to the API
  - the endpoint scheme security `LovableAPIKey` was added to the API
  - added the non-success response with the status `400`
- **2026-09-11** `b19e0179b77a`: 1 info
  - api operation id `post-v1-projects-project_id-publish` removed and replaced with `publishProject`
- **2026-09-11** `c7f67a5564ac`: 1 breaking, 4 warning, 2 info
  - removed the success response with the status `200`
  - added the new `custom` enum value to the `visibility` response property for the response status `202`
  - added the new `pending` enum value to the `status` response property for the response status `202`
  - added the new `public` enum value to the `visibility` response property for the response status `202`
  - added the new `workspace` enum value to the `visibility` response property for the response status `202`
  - added the new optional `header` request parameter `Lovable-Beta`
  - added the new optional `header` request parameter `Lovable-Version`

---

[Operation](https://skmtc.dev/lovable/apis/lovable-api/docs/v1/projects/:project_id/publish/post.md) - [API](https://skmtc.dev/lovable/apis/lovable-api.md) - [Page](https://skmtc.dev/lovable/apis/lovable-api/changes/v1/projects/:project_id/publish/post)
