---
title: "Propose what an entry over a range of intervals would say, in the cloud"
method: POST
path: "/v1/entries/propose"
tags: ["pipeline"]
---

# Propose what an entry over a range of intervals would say, in the cloud

`POST /v1/entries/propose`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/entries/propose`
- Auth: HTTP bearer

The hand-made entry's ranges, as the daemon's `POST /entries/propose` takes them. Decided in the request: 202 answers the proposal and names the run it was decided as, which `GET /v1/pipeline/runs/{id}` answers too. It first waits, at most 30 s, for the cloud's own interval runs of what the device already uploaded over the ranges, as a Generate does. Over the caller's daily cap, or on a failure, the answer is `offline` with no proposal. Writes nothing but the answer. The internal firm's alone until firms outside it join (403 otherwise). It reads the activity of the device `X-Six-Minute-Device` names (without it, until the follow-up, the caller's most recently active device), and the words where each interval is an entry's evidence: under an entry generated on any of the caller's devices, that device's; under a hand-made entry or free time, the asking device's and the earlier ids `X-Six-Minute-Device-Known` names. An entry's evidence is the activity it was generated from (O12).

## Request body

- object
  - `ranges` object[], required
    - `from` string, date-time, required
    - `to` string, date-time, required
    - `matter_id` string
    - `parts` object[]
      - `from` string, date-time, required
      - `to` string, date-time, required
  - `for` 'compose' | 'split' | 'merge'

## Response `202`

The proposal, and its run.

- object
  - `run_id` string, required
  - `result` object, required
    - `proposals` object[], required
      - `matter_id` string, nullable, required
      - `how` 'chosen' | 'most' | 'tie' | 'none', required
      - `narrative` string, required
      - `attributes` object, required
    - `kept` 'no_text' | 'not_signed_in' | 'refused' | 'offline', nullable, required

## Other responses

- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.

## Changes

- **2026-11-04** `605577eadc10`: 1 info
  - added the required property `result` to the response with the `202` status

[Operation history](https://skmtc.dev/sixminute/apis/sixminute-api/changes/v1/entries/propose/post.md)

---

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