---
title: "Measure now"
method: POST
path: "/brands/{brandId}/cycles"
tags: ["measurement"]
---

# Measure now

`POST /brands/{brandId}/cycles`

## Request

- Base URL: `https://shruwd.io/api/v1`
- URL: `https://shruwd.io/api/v1/brands/{brandId}/cycles`
- Auth: HTTP bearer

Creates a `manual` cycle due immediately. The scheduler picks it up
within fifteen minutes and fans out one run per prompt × engine ×
repetition; results land over the following hours. This response does
not contain them — read `visibility` and `findings` later.

A cycle spends the period's run allowance. On the free tier this is the
one free measurement per registrable domain, which a new brand's setup
already starts; once taken it is `409 snapshot_taken`, with
`details.inProgress` true while the brand's own measurement is still
pending or running. A workspace past its billing grace period gets
`402 workspace_not_active`.

## Request body

- object

## Response `201`

Cycle created.

- CycleCreated
  - `cycleId` string, required
  - `kind` 'manual', required
  - `state` 'pending', required
  - `scheduledFor` string, date-time, required

## Other responses

- `402`: `workspace_not_active`.
- `404`: `not_found`: no such resource in this workspace.
- `409`: `snapshot_taken`, or `workspace_on_hold` (measurement paused pending review; see `GET /workspace`).
- `default`: Every failure has this body.

---

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