---
title: "Create an explicit moment set"
method: POST
path: "/api/v1/projects/{projectId}/moment-sets"
tags: ["Moments"]
---

# Create an explicit moment set

`POST /api/v1/projects/{projectId}/moment-sets`

## Request

- Base URL: `https://prismclip.com`
- URL: `https://prismclip.com/api/v1/projects/{projectId}/moment-sets`
- Auth: HTTP bearer

Create and activate a ready moment set from ordered source ranges backed by transcript words, visual scenes, or both. PrismClip validates every citation against the owned project's stored evidence and preserves caption corrections.

## Path parameters

- `projectId` string, uuid, required

## Request body

- object
  - `claim` string, required: Moment, claim, action, or exchange these passages capture
  - `target_seconds` integer, required: Target total duration, or 0 when the set contains all matching moments
  - `passages` object[], required: Ordered, non-overlapping passages with explicit evidence
    - `evidence_kind` 'speech' | 'visual' | 'mixed', required
    - `first_word` integer, nullable, required
    - `last_word` integer, nullable, required
    - `start_ms` integer, required
    - `end_ms` integer, required
    - `scene_indices` integer[], required
    - `caption_corrections` object[], required
      - `ordinal` integer, required
      - `text` string, required
    - `reason` string, required

## Response `201`

The ready moment set and its validated passages.

- object
  - `momentSet` object, required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `claim` string, required
    - `targetSeconds` integer, required
    - `selectionMode` 'moment' | 'quick_cut', required
    - `status` string, required
    - `error` string, nullable, required
    - `createdAt` string, required: ISO 8601 timestamp
    - `updatedAt` string, required: ISO 8601 timestamp
  - `passages` object[], required
    - `id` string, uuid, required
    - `position` integer, required
    - `firstWord` integer, nullable, required
    - `lastWord` integer, nullable, required
    - `startMs` integer, required
    - `endMs` integer, required
    - `reason` string, required
    - `evidence` union, required
      - object
        - `kind` 'speech', required
      - object
        - `kind` 'visual', required
        - `visualAnalysisId` string, uuid, required
        - `sceneIndices` integer[], required
      - object
        - `kind` 'mixed', required
        - `visualAnalysisId` string, uuid, required
        - `sceneIndices` integer[], required
    - `captionCorrections` object[], required
      - `ordinal` integer, required
      - `text` string, required

## Other responses

- `400`: The claim, target duration, source ranges, evidence citations, ordering, or caption corrections are invalid.
- `401`: The API key is missing or invalid.
- `403`: The API key lacks moments:write.
- `404`: The owned project or cited evidence was not found.
- `409`: The project cannot accept an explicit moment set in its current state.
- `429`: The API-key rate limit was exceeded.
- `503`: Moment or evidence storage is unavailable.

---

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