Site-Level Publish API Fails with 500 Internal Server Error (internal_error)

Hi Webflow team,

I’m using the Webflow Data API v2 to trigger a site-level publish after updating CMS items in multiple locales. My API call is: POST /v2/sites/{site_id}/publish

Payload example:
{
“customDomains”: [
mydomain.com”,
mydomain-de.com
],
“publishToWebflowSubdomain”: true
}
But I always get this error:

[Site Publish] Failed: 500 Internal Server Error {“message”:“An Internal Error Occurred”,“code”:“internal_error”,“externalReference”:null,“details”:}

Context:

  • My use case is to keep all locales and domains in sync after automated CMS updates.
  • Manual publishing in the Webflow Designer works, but the API call fails.
  • This is blocking our automation workflow.

Details:

  • The error happens even though all CMS item publishing (per-locale) succeeds.
  • The site has multiple custom domains and two locales (English and German).
  • I’m using the correct site_id and an API token with full permissions.
  • The error occurs whether I include all custom domains or just one.
  • The error is not intermittent; it happens every time.
  • The API call is made after all CMS items are published, with a delay to avoid rate limits.
  • The error message does not provide any actionable details or external reference.
  • I have also tested this API call in Postman:
    The site does get published, but the API still returns the same 500 error with the same message.

Questions:

  1. What are the possible causes of a 500 internal_error for the site-level publish endpoint?
  2. Are there any known issues or limitations when publishing sites with multiple locales or custom domains via the API?
  3. Is there a way to get more detailed error information or logs for this API call?

Any help or insight would be greatly appreciated!

Thank you.

Hi Abdul, make sure to file a support ticket so this reaches Webflow.

Sure, Thanks Michael

Hi @abdulquadir - not sure if you were able to get past these errors, but the reason may be because you are passing in the names of your domains to the customDomains array, where it should be the id’s of your domains. See more in the docs reference here

You can find the domain ID’s from the List/Get Site APIs