> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tiro.ooo/llms.txt
> Use this file to discover all available pages before exploring further.

# Reset Paragraph Contents (Dev Only)

> Resets one content kind across every paragraph in a note atomically.
This endpoint is available only when content editing is enabled in the
environment. It is being tested in dev and is not available in production.
Requires `note:write` and permission to edit the note.

`original` resets plain and speaker-attributed transcripts, including
speaker assignments. It preserves translations and paragraph summaries.
`translated` resets only translations. `summary` resets only paragraph
summaries. Note summaries and documents are separate resources and remain unchanged.

Read `GET /v1/external/notes/{noteGuid}/paragraphs` from the same dev base
URL, `https://api.tiro-ooo.dev`. Production reads omit editState.
Copy `editState.etag` and check
`editState.canResetByKind` for the selected kind. The availability map
applies to the entire note, even though it appears on each paragraph.
Previous Undo history ends for the reset content. Other content and its
Undo history remain available. Original reset also prevents Undo of
affected earlier speaker changes. If any target cannot be reset, no
paragraph content is changed.

The existing single-paragraph reset keeps its three-field behavior.
This operation does not change that endpoint's contract.




## OpenAPI

````yaml /openapi.yaml post /v1/external/notes/{noteGuid}/paragraphs:reset
openapi: 3.1.0
info:
  title: Tiro API
  description: AI-powered note-taking and voice file processing API
  version: 1.0.0
  contact:
    name: Tiro Support
    email: support@tiro.ooo
    url: https://tiro.ooo
servers:
  - url: https://api.tiro.ooo
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Note
    description: Operations for managing notes and their paragraphs
  - name: Note Share Link
    description: Manage share links for notes
  - name: Note Summary
    description: Operations for retrieving note summaries
  - name: Note Document
    description: Template-based document generation from notes
  - name: Note Document Template
    description: Operations for managing note document templates
  - name: Folder
    description: Operations for retrieving folders
  - name: Voice File
    description: Operations for voice file processing
  - name: Word Memory
    description: >
      Manage word memories to improve voice transcription accuracy. Register
      important terms like company names, people's names, and product names so
      Tiro recognizes them precisely during recording. Each term has an `entry`
      and an optional `subEntry` (an alternate spelling or notation). Personal
      (User), workspace-shared (Workspace), and organization-shared
      (Organization) word memories are managed separately, and each scope
      supports bulk create/update/delete (up to 1000 items per request).
  - name: Wiki
    description: |
      Access workspace wikis — unified knowledge graphs built from notes.
      Requires a workspace with wiki plan and activation enabled.
  - name: Organization
    description: >
      Endpoints for organization API keys. An organization key is issued by an

      organization admin, carries fixed scopes chosen at issuance, and can reach

      the notes in every workspace that belongs to the organization. Built for

      server-to-server integrations such as CRM sync — receive `note.ended`
      webhook

      events, generate documents for notes, and reconcile with the organization

      notes list.
  - name: Organization Management
    description: Operations for the authenticated user's organization.
paths:
  /v1/external/notes/{noteGuid}/paragraphs:reset:
    post:
      tags:
        - Note
      summary: Reset Paragraph Contents (Dev Only)
      description: >
        Resets one content kind across every paragraph in a note atomically.

        This endpoint is available only when content editing is enabled in the

        environment. It is being tested in dev and is not available in
        production.

        Requires `note:write` and permission to edit the note.


        `original` resets plain and speaker-attributed transcripts, including

        speaker assignments. It preserves translations and paragraph summaries.

        `translated` resets only translations. `summary` resets only paragraph

        summaries. Note summaries and documents are separate resources and
        remain unchanged.


        Read `GET /v1/external/notes/{noteGuid}/paragraphs` from the same dev
        base

        URL, `https://api.tiro-ooo.dev`. Production reads omit editState.

        Copy `editState.etag` and check

        `editState.canResetByKind` for the selected kind. The availability map

        applies to the entire note, even though it appears on each paragraph.

        Previous Undo history ends for the reset content. Other content and its

        Undo history remain available. Original reset also prevents Undo of

        affected earlier speaker changes. If any target cannot be reset, no

        paragraph content is changed.


        The existing single-paragraph reset keeps its three-field behavior.

        This operation does not change that endpoint's contract.
      operationId: resetParagraphContents
      parameters:
        - name: noteGuid
          in: path
          required: true
          description: GUID of the note whose paragraphs are reset.
          example: 550e8400-e29b-41d4-a716-446655440000
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - kind
                - etag
              properties:
                kind:
                  type: string
                  enum:
                    - original
                    - translated
                    - summary
                  description: Content kind to reset across every paragraph.
                  example: original
                etag:
                  type: string
                  minLength: 1
                  description: >-
                    Exact editState.etag from the latest paragraph read
                    response.
                  example: value-from-read-response
      responses:
        '200':
          description: >
            Reset completed. Returns the new etag with undoAvailable and
            canReset

            set to false for this command target. Read the paragraphs again for

            updated content and availability for other actions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecoveryEditState'
        '400':
          description: >-
            Bad request (code 400000). Invalid kind or missing or blank etag.
            Correct the request body.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: >-
            Authentication failed (code 401001), or the API key is invalid,
            expired, or revoked (code 401009). Send a valid credential in the
            Authorization header.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Missing note:write scope (code 403013) or note edit permission (code
            403001). Use a credential with both permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >
            Note unavailable (code 404002): verify noteGuid and access using the

            same credential. Missing route (code 404000): verify the dev base
            URL

            and feature availability. Production does not expose this endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >
            CONTENT_CONFLICT (code 409035) means the etag is stale. Read again
            and

            review the changes before choosing reset again. Do not automatically

            retry with a new etag. CONTENT_NOT_EDITABLE (code 409036) means
            reset is

            unavailable, for example during generation or when required
            generated

            content is missing. Read the current availability before another
            attempt.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      servers:
        - url: https://api.tiro-ooo.dev
          description: Development server only
components:
  schemas:
    RecoveryEditState:
      type: object
      required:
        - etag
        - undoAvailable
        - canReset
      properties:
        etag:
          type: string
          description: >-
            Opaque token for the updated content state. Never derive or
            increment this value.
        undoAvailable:
          type: boolean
          description: Whether Undo is available for the command target. False after reset.
        canReset:
          type: boolean
          description: >-
            Whether reset is available for the command target. False after
            reset.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - errorType
            - message
          properties:
            code:
              type: integer
              description: >
                6-digit error code in `AAABBB` form: first 3 digits match the
                HTTP status,

                last 3 digits are a per-status serial (e.g. `404018`). Use only
                when you need

                to distinguish specific error cases within the same HTTP status
                — values may be

                added or renumbered across releases. For general client
                branching, prefer `errorType`.
              example: 404018
            errorType:
              type: string
              description: >
                Stable, coarse-grained error category. Recommended default for
                client-side

                branching: the value-to-status mapping is part of the API
                contract and will not

                change without a breaking-change notice. Typical use:
                  - `unauthorized` → trigger re-authentication
                  - `forbidden` → surface a permission error to the user
                  - `not_found` → treat as missing resource
                  - `too_many_requests` → back off and retry
                  - `internal_error` → retry with exponential backoff
              enum:
                - bad_request
                - unauthorized
                - forbidden
                - not_found
                - not_acceptable
                - conflict
                - payload_too_large
                - unprocessable_entity
                - too_many_requests
                - internal_error
              example: not_found
            message:
              type: string
              description: >-
                Human-readable error message. Not stable; do not use for
                branching.
              example: 'No team found for user #217'
            detail:
              description: >-
                Additional error details. Authorization failures may include a
                reason and required scopes.
              oneOf:
                - type: string
                  nullable: true
                - type: object
                  additionalProperties: true
                  properties:
                    reason:
                      type: string
                      example: insufficient_scope
                    required:
                      type: array
                      items:
                        type: string
                      example:
                        - folder:read
              example: null
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        API key in format `{id}.{secret}`.


        The notes an endpoint returns depend on the key type. A **user key**
        reaches the

        notes that user can see in the app, including notes in their own private
        folders.

        A **system key** (workspace or organization, no user identity) reaches
        only notes

        that sit in a folder shared with all workspace members. Notes in a
        private folder,

        in a folder shared with only some members, or in no folder at all fall
        outside a

        system key's read scope, and scopes do not widen that boundary.


        List and search endpoints drop out-of-scope notes from the response
        without an

        error. Single-note reads and their sub-resources return `404`, the same
        response

        as a deleted note. See [What notes a system key
        reads](https://docs.tiro.ooo/en/developers/fundamentals/system-key-note-scope).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.