Skip to contentDevelopersPrezly website
Newsroom administration

Create and configure a newsroom

Create the right destination, update its settings, and manage hosted availability without confusing it with story publication.

A newsroom groups stories, languages, public contact cards, and website settings. Create it once, store its UUID, and configure it before importing or publishing content. A retry that creates a second newsroom is not a recovery strategy for a lost creation response.

For an existing destination, begin with Newsrooms, languages, and categories. This guide covers account configuration; Publishing stories covers a story's own lifecycle.

Check your access and intended starting state

Personal tokens need sites:read to inspect configuration and sites:write for the mutations below. The owner also needs newsroom management permission; creation additionally requires permission to create newsrooms. Account limits and feature access still apply. Load PREZLY_API_TOKEN using Your first API request.

Choose the initial name, an available Prezly subdomain, and an explicit default locale. Start with status: "inactive" when the site should remain offline during setup. Creating an active newsroom can bring its hosted site online; creating a newsroom is not merely reserving an identifier.

Create the destination

Save this as newsroom-create.json, choosing your own unused subdomain before sending it:

{
  "name": "Acme Press",
  "subdomain": "acme-press-example",
  "status": "inactive",
  "cultures": ["en"],
  "default_culture": "en",
  "with_demo_content": false
}
curl --fail-with-body --silent --show-error --request POST 'https://api.prezly.com/v2/newsrooms' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-binary @newsroom-create.json

The response is 201 Created with a newsroom envelope. Persist newsroom.uuid; do not derive the identifier from the subdomain or use the human-readable name as an upsert key. You can also select an available active_theme and send uploaded logo objects. Theme availability is checked for the account; image representations are explained in Images and files.

with_demo_content: false avoids creating sample content. Omitting the language selection lets account defaults influence creation, which is usually undesirable in repeatable provisioning. Additional languages require the account's multilingual capabilities.

Create Newsroom →

Read before changing settings

Replace YOUR_NEWSROOM_UUID in subsequent examples:

curl --fail-with-body --silent --show-error 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Accept: application/json'

Check the returned UUID, status, is_online, timezone, and public url. Keep a record of the settings you intend to change. A successful API read does not establish that the public website is available.

PATCH accepts selected properties; omitted settings are preserved. For example, rename the newsroom and set the time zone without copying its whole response into a write:

curl --fail-with-body --silent --show-error --request PATCH 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data '{"name":"Acme News","timezone":"Europe/Brussels"}'

The response is 200 OK with newsroom. Re-read and verify the resulting values. A newsroom's display time zone does not change the requirement to send explicit timestamps when scheduling stories.

Treat language selection, public URL, and status changes as separate decisions. Sending cultures replaces the selection. Changing default_culture on an account without multilingual newsrooms can migrate company information and existing stories to the new code. Use Manage newsroom languages to plan those changes. is_indexable controls indexing presentation; it is not an access-control mechanism or a substitute for taking the site offline.

Get Newsroom → · Update Newsroom →

Manage public availability deliberately

The lifecycle operations return 200 OK with newsroom:

OperationResult and use
OfflineSets an unarchived newsroom to inactive and takes its hosted website offline.
OnlineSets an unarchived newsroom to active and brings its hosted website online.
ArchiveArchives the newsroom while retaining stored content. It also removes coverage integrations.
UnarchiveRestores active status; it additionally requires creation permission. Review availability before restoring.

For a setup that has been reviewed and is ready to go live:

curl --fail-with-body --silent --show-error --request POST 'https://api.prezly.com/v2/newsrooms/YOUR_NEWSROOM_UUID/online' \
  --header "Authorization: Bearer $PREZLY_API_TOKEN" \
  --header 'Accept: application/json'

Online/offline operations reject archived newsrooms. Restoring an archive and activating an inactive site are different operations. Unarchiving does not recreate removed coverage integrations.

These operations govern the Prezly-hosted newsroom. They do not unpublish each story or withdraw content already copied to your own website, CDN, feed, or downstream integration. Apply the corresponding availability policy and cache handling in a custom website. After changes, inspect the API state and test the intended public URL; network provisioning is separate from accepting the API request.

Retire a newsroom without accidental deletion

Choose offline when you need a temporary pause, or archive when you want to retain content for later use. Delete is a separate DELETE /newsrooms/{newsroom_id} operation that returns 204 No Content in the current implementation. There is no public restore operation for deletion. Confirm the UUID, stored content, connected integrations, and URLs already shared before choosing it; there is no safeguard that prevents deleting the last active newsroom.

On a timeout after a write, inspect state before retrying. For creation, list newsrooms and reconcile the intended subdomain and account. A subdomain conflict may indicate a completed earlier request or another site's reservation. For a configuration or lifecycle change, re-read the same UUID and check the requested values. Handling errors explains deliberate retries.

Continue with categories, languages, custom domains, and themes.

On this page