---
title: "Start or restart the measurement"
method: POST
path: "/trackers/{id}/start"
tags: ["Trackers"]
---

# Start or restart the measurement

`POST /trackers/{id}/start`

## Request

- Base URL: `https://api.epovest.com/v1`
- URL: `https://api.epovest.com/v1/trackers/{id}/start`
- Auth: HTTP bearer

Starts the measurement against the credit balance, and its first survey runs there and then,
whatever the frequency, unless a chosen `next_survey_at` is still in the future: with one set,
nothing runs until that moment, and that holds for a date chosen while the tracker was paused.
Restarting a paused tracker picks its schedule back up, at whatever configuration it carries
now. Replaying it on a tracker already measuring answers with that tracker. Owner only.

## Response `200`

The tracker, measuring.

- object
  - `tracker` Tracker, required
    - `id` string, uuid, required
    - `title` string, required
    - `project` ProjectRef, nullable, required: The project a tracker is filed under, null for the virtual `Default` project.
      - `id` string, uuid
      - `name` string
    - `chain` string, required: The name of the chain the versions of this tracker share.
    - `version` integer, required
    - `status` 'draft' | 'active' | 'paused' | 'retired' | 'abandoned', required
    - `engines` Engine[], required
    - `frequency` 'monthly' | 'weekly' | 'daily' | 'on_demand', required: The pace of the surveys. `on_demand` puts the tracker on no schedule: starting it runs one survey, and every survey after that comes from `POST /trackers/{id}/survey`.
    - `resolution` 'hd' | 'full_hd' | '4k' | '8k', required: Repetitions of every question per engine and survey: `hd`=1, `full_hd`=3, `4k`=6, `8k`=9.
    - `repetitions` integer, required: Repetitions of every question per engine and survey, as the resolution sets them.
    - `prompts` string[], required: The questions asked to the engines at every survey.
    - `keywords` Keyword[], required
      - `keyword` string, required
      - `favorite` boolean, required
    - `analysts` AnalystType[], required
    - `custom_prompt` string, nullable, required
    - `discovery` boolean, required: Suggests new keywords spotted in the answers. It works from the keywords of the tracker, so read it back here rather than assuming it took.
    - `notify_on_survey` boolean, required: Emails the account owner and managers each time a survey closes with fresh data. On by default.
    - `cost_per_survey_minor` integer, required: Recalculated from the configuration on every read, in minor units of `currency`.
    - `monthly_estimate_minor` integer, required: What a month at this configuration consumes. `0` on an `on_demand` tracker, which is the true figure: nothing runs on a pace, and `cost_per_survey_minor` is what one reading costs.
    - `currency` string, required: The wallet currency of the account.
    - `created_at` string, date-time, required
    - `activated_at` string, date-time, nullable, required
    - `next_survey_at` string, date-time, nullable, required: When the next survey runs. A past instant means within the hour; null when there is no date to give, which is a tracker whose measurement is stopped and which carries no chosen date, one whose first survey runs at start, a retired version, or an `on_demand` tracker, whose next survey is a call rather than a date. A PAUSED tracker with a date set for later carries it: that is when the measurement comes back once it is started.
    - `pause_reason` 'manual' | 'credit_exhausted' | 'null', nullable, required: `manual`: the measurement was stopped on purpose, and it waits for `POST /trackers/{id}/start`. `credit_exhausted`: the balance no longer covered a survey when it was due, and a top-up resumes the tracker on its own. Null on any status other than paused.
    - `archived` boolean, required: The FOLDER, next to the measurement rather than inside it: a filed tracker keeps its status, and `GET /trackers` lists the ones still followed first.
    - `archived_at` string, date-time, nullable, required

## Other responses

- `401`: `unauthenticated`: missing, unknown or revoked key.
- `402`: `insufficient_credits`: the balance does not cover one survey. The answer carries `cost_per_survey_minor` and `available_minor`, so you can name the shortfall to the person, and `top_up_url`, the page where they add credit: hand it to them.
- `403`: `insufficient_scope`: the credential may not do this, either because the key lacks the scope, or, on a one-click connection, because the person lacks the role the action needs (manager, or owner to start, pause and top up). On that path, read it as "this person may not do this" and tell them which role the action needs.
- `404`: `not_found`: unknown for this account.
- `409`: `tracker_archived`: bring it back first with `POST /trackers/{id}/archive` and `{"archived": false}`. `not_startable`: a retired version never restarts, work on the current version instead.
- `429`: `rate_limited`: 120 requests per minute per credential, sliding window. Retry after `Retry-After` seconds.
- `503`: `service_unavailable`: a backend is unreachable; retry later.

---

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