Aveiro API
Authentication
Sites
List Sites
List Templates
Create Site
Update Site Layout
Chrome Strings
Update Collection
Pages
Create a Page
Delete a Page
List Pages
Reorder Pages
Update a Page
Site Media
Publish Site
Link Translation
Import Media from URL
Audience
Newsletter API Overview
Newsletter Campaigns
Social
Social API Overview
Social Accounts
Social Media
Social Posts
Social Performance
Website Mockup Video
TrademarkTrademark
Ctrl k
Search…
Sign up
Aveiro API
Authentication
Sites
List Sites
List Templates
Create Site
Update Site Layout
Chrome Strings
Update Collection
Pages
Create a Page
Delete a Page
List Pages
Reorder Pages
Update a Page
Site Media
Publish Site
Link Translation
Import Media from URL
Audience
Newsletter API Overview
Newsletter Campaigns
Social
Social API Overview
Social Accounts
Social Media
Social Posts
Social Performance
Website Mockup Video
Sponsored
Aveiro
aveiro.app
Sponsored
Aveiro
aveiro.app
TrademarkTrademark
AveiroBlogContact
© Aveiro. All rights reserved.
Built with Aveiro

Publish Site

POST /api/v1/sites/{siteId}/publish pushes dirty draft pages live. Default scope is the site's default locale only; pass locale_scope or content_ids for translations.
Updated yesterday
Site Media
Link Translation
In short
POST /api/v1/sites/{siteId}/publish pushes dirty draft pages live. By default only the site's default locale is published — translation variants are excluded unless you pass locale_scope or an explicit content_ids list. Requires publish:write.

Request

POST /api/v1/sites/{siteId}/publish Authorization: Bearer av_live_… Content-Type: application/json { "content_ids": ["optional-content-uuid"], "locale_scope": "default" }
Required scope: publish:write Both body fields are optional. When omitted, Aveiro publishes every dirty page in the site's default locale only.

Locale scope

locale_scope controls which locales are included when you do not pass content_ids:
Value
Behavior
default (or omit)
Publish only default-locale pages — matches the editor Publish menu when no per-language translation switches are enabled
allPublish dirty pages in every locale
locale list, e.g. de and fr
Publish dirty pages in those locales only — send a JSON array of locale codes
An explicit content_ids array always wins: publish exactly those rows regardless of locale_scope. Use that when a script knows the variant ids it touched. Unrecognized locale_scope values fall back to "default" — a typo cannot widen a publish into translation variants.

Example

Publish default-locale changes only:
curl -s -X POST 'https://www.aveiro.app/api/v1/sites/SITE_ID/publish' \ -H 'Authorization: Bearer av_live_…' \ -H 'Content-Type: application/json' \ -d '{}'
Publish German variants only (locale_scope is a JSON array):
curl -s -X POST 'https://www.aveiro.app/api/v1/sites/SITE_ID/publish' \ -H 'Authorization: Bearer av_live_…' \ -H 'Content-Type: application/json' \ -d '{"locale_scope": ["de"]}'

Response

200 OK
When you omit both content_ids and locale_scope, Aveiro publishes default-locale dirty pages only. Linked locale variants with unpublished changes are left behind; the response may include skipped_variants and a hint so automations do not assume a silent full-site publish.
Pages with broken blocks are skipped and reported in the error payload. See List pages to find dirty drafts before publishing.

Related

  • Authentication — publish:write scope and site restrictions
  • List pages — dirty flag and review workflow
  • Translations overview — per-locale publish in the editor and opt-in switches in the publish menu
{
  "published": 3,
  "published_version_ids": ["…"],
  "public_content_live": true,
  "first_publish": false,
  "skipped_variants": 2,
  "hint": "2 linked translation variants have unpublished changes and were not published. Pass locale_scope:"all" (or a list of locales) to publish them."
}