---
title: "How many more Free teams, static sites, WordPress sites and SaaS apps fit: the Free pool's room and the host's measured room"
method: GET
path: "/operator/capacity"
tags: ["Operator"]
---

# How many more Free teams, static sites, WordPress sites and SaaS apps fit: the Free pool's room and the host's measured room

`GET /operator/capacity`

## Request

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

## Response `200`

Estimate

- object
  - `rows` object[], required
    - `kind` 'freeTeam' | 'static' | 'wordpress' | 'saas', required: freeTeam: a new Free team like today's average one; saas: an app with its database
    - `size` object, required: what one more takes of the Free pool (its default size on Free)
      - `cpus` number, required
      - `memoryMb` integer, required
    - `usage` object, required: what one more really uses on the host
      - `memoryMb` integer, required
      - `cpuCores` number, required
      - `measured` boolean, required: false: the typical figure, nothing measured yet
      - `samples` integer, required
    - `free` object, required: more on Free: held to the Free pool and the host
      - `fits` integer, nullable, required: how many more fit; null when neither limit is known
      - `limitedBy` 'pool_cpu' | 'pool_memory' | 'host_memory' | 'host_cpu' | 'null', nullable, required: the limit that runs out first
    - `anyPlan` object, required: more on any plan: held to the host only
      - `fits` integer, nullable, required: how many more fit; null when neither limit is known
      - `limitedBy` 'pool_cpu' | 'pool_memory' | 'host_memory' | 'host_cpu' | 'null', nullable, required: the limit that runs out first
  - `host` object, nullable, required: the host's room: available memory and idle CPU, minus the reserve; null without host facts
    - `cpuCores` integer, required
    - `cpuBusyPercent` number, nullable, required
    - `memoryTotalMb` integer, required
    - `memoryAvailableMb` integer, required
    - `reserveMemoryMb` integer, required
    - `roomMemoryMb` integer, required
    - `roomCpuCores` number, nullable, required
  - `pool` object, nullable, required: the Free pool; null when none is set
    - `cpus` number, nullable, required
    - `memoryMb` integer, nullable, required
    - `usedCpus` number, required
    - `usedMemoryMb` integer, required
    - `roomCpus` number, nullable, required
    - `roomMemoryMb` integer, nullable, required
  - `freeTeams` object, required
    - `organizations` integer, required
    - `active` integer, nullable, required: with at least one project or database
  - `usageSource` 'collector' | 'typical', required: collector: measured by the host collector (docs/RESOURCE_METRICS.md); typical: nothing measured yet
  - `windowMinutes` integer, nullable, required
  - `reserveShare` number, required: the share of the host's memory and CPUs kept free
  - `staticSiteSize` object, required: the size every new static site gets
    - `cpus` number, required
    - `memoryMb` integer, required

## 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)
