---
title: "The brand's Free-period settings and the dry run (every Free team computed as if it were on: blocked, ending, paused now)"
method: GET
path: "/operator/trial-settings"
tags: ["Operator"]
---

# The brand's Free-period settings and the dry run (every Free team computed as if it were on: blocked, ending, paused now)

`GET /operator/trial-settings`

## Request

- Base URL: `https://hostingsurge.com/api/v1`
- URL: `https://hostingsurge.com/api/v1/operator/trial-settings`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Host-hs_session`

## Response `200`

Settings

- object
  - `settings` object, required
    - `mode` 'off' | 'dry_run' | 'on', required: off: nothing; dry_run: computed and shown here only; on: enforced
    - `enforcedSince` string, nullable, required: set the first time mode became on (the rollout: older Free teams end at it + grandfatherDays)
    - `grandfatherDays` integer, required
    - `graceDays` integer, required: days between the end and the pause (0: paused at the end)
    - `retentionDays` integer, required: days the data of a paused team is kept before it is listed for the deletion review (never deleted automatically)
    - `pauseMode` 'never' | 'when_payments' | 'always', required: when_payments: pause only while plans can be bought (Stripe configured); always; never
    - `siteCapAction` 'block_new' | 'end_trial', required
    - `usageAction` 'warn' | 'end_trial', required
    - `usageClear` 'month_start' | 'manual', required
    - `pauseWarningDays` integer, required: the one warning (e-mail + in-app) this many days before the pause; 0 = none
    - `notices` string[], required: which customer notices are sent
    - `showCountdown` boolean, required: let customers see days left (off: the limit is not advertised)
    - `advertiseTrial` boolean, required: mention the limit on marketing and pricing (off by default)
    - `pausedPage` boolean, required: visitors of a paused site see "This site is paused"
    - `termsSection` boolean, required: the Free plan section of the Terms of Service states the limit
    - `note` string, nullable, required
    - `updatedBy` string, uuid, nullable, required
    - `updatedByEmail` string, nullable, required
    - `updatedAt` string, nullable, required: ISO-8601 timestamp
  - `preview` object, required
    - `freeTeams` integer, required
    - `active` integer, required
    - `ending` integer, required: ends within 3 days
    - `ended` integer, required
    - `siteCap` integer, required
    - `paused` integer, required
    - `exempt` integer, required
    - `wouldPauseNow` integer, required: ended teams whose pause is due now (pausing must also be possible)
    - `blocked` integer, required: teams growth is refused for (ended or paused)
  - `enforceOff` boolean, required: TRIAL_ENFORCE=off on this server: the Free period of every brand reads as off, nothing is paused
  - `billingConfigured` boolean, required: plans can be bought now (read live)
  - `pausingNow` boolean, required: whether a due pause would happen now: mode on, not TRIAL_ENFORCE=off, and pauseMode always, or when_payments while billing is configured

## Other responses

- `400`: Invalid request (code invalid_request)
- `403`: An action on an operator-console session older than 5 minutes (code forbidden, details.reauthenticate: sign in again at /admin/login), or an operator removed since the session was resolved
- `404`: Not found (code not_found); also the answer to any request without a live operator-console session (no admin cookie, a dashboard session, an API/MCP key or OAuth token, or a caller who is not a platform operator)
- `429`: Too many requests (code rate_limited); see Retry-After
- `501`: Not available on this server (code not_configured)

---

[API](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api.md) · [All operations](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/revisions/4d08337cdff1?raw)
