---
title: "What a change would cost today"
method: POST
path: "/workspaces/{id}/plan/preview"
tags: ["billing"]
---

# What a change would cost today

`POST /workspaces/{id}/plan/preview`

## Request

- Base URL: `https://api.swingfactor.ai/v1`
- URL: `https://api.swingfactor.ai/v1/workspaces/{id}/plan/preview`
- Auth: HTTP bearer

Changes nothing. A change that waits is nothing due today — the period is already paid for.

## Path parameters

- `id` string, uuid, required

## Request body

- PlanBody
  - `plan` 'observer' | 'investigator' | 'institute', required
  - `cycle` 'monthly' | 'annual', required
  - `quantity` integer

## Response `200`

The amount due today, or null.

- PlanChangePreview, nullable
  - `amountDuePence` integer, required
  - `currency` string, required
  - `effectiveAt` string, nullable, required
  - `timing` 'immediate' | 'scheduled', required

## Other responses

- `401`: No token, or not a valid one: `unauthorized`.
- `403`: Only the owner manages billing.

---

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