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

# Save a time estimate

> Saves or clears the time-tracking-owned estimate with optimistic concurrency.
Returns the committed canonical estimate without traversing descendants or reading
time entries. A subsequent summary failure cannot turn this successful write into
a failed save. The existing Boards effort estimate is not changed.
Omitted estimate_kind preserves the stored kind, including on cleared records;
new records default to direct. Explicit conversion supplies the current value,
current version and new kind. Zero clears the value without discarding kind/version.
Clearing a card with no stored estimate is a successful no-op returning null.
Requires estimate edit access. Existing ordinary-card time-entry logging settings
are unaffected; estimate editing is independent of a space's logging switch,
including for roadmap projects.




## OpenAPI

````yaml PATCH /{team_id}/time/estimates/{card_id}
openapi: 3.0.0
info:
  description: Superthread Public API Specification
  version: '0.1'
  title: Public API
  contact:
    email: engineering@superthread.com
servers:
  - url: https://api.superthread.com/v1
security:
  - BearerAuth: []
tags:
  - name: AI
    description: >-
      [Service: AI]. Handles AI-powered functionalities, such as
      recommendations, predictions, and automation features.
  - name: Activity
    description: >-
      [Service: Activity] Manages all activities; creating notifications and
      digests
  - name: Auth
    description: >-
      [Service: Auth] Responsible for user authentication, authorization, and
      session management.
  - name: Boards
    description: >-
      [Service: Boards] Manages core collaboration features such as "boards",
      "cards", "lists", "sprints", "epics".
  - name: Comments
    description: >-
      [Service: Comments] Handles the creation, editing, and management of
      comments across various entities.
  - name: Customers
    description: >-
      [Service: Customers] Manages customers, customer tiers and statuses,
      customer settings, and customer requests on cards and projects. Requires
      the `customers` team feature; not available to workspace guests.
  - name: Favourites
    description: >-
      [Service: Favourites] Responsible for favouriting resources in the system
      for quick access.
  - name: Files
    description: >-
      [Service: Files] Manages file uploads, storage, and retrieval for user and
      project resources.
  - name: Importer
    description: >-
      [Service: Importer] Handles data import operations from external sources
      into the platform.
  - name: Integrations
    description: >-
      [Service: Integrations] Facilitates connectivity with external tools and
      services, enabling smooth integration with third-party platforms and APIs.
  - name: Pages
    description: >-
      [Service: Pages] Manages the creation and organization of both public and
      private pages, supporting structured content and navigation and
      collaboration.
  - name: Projects
    description: '[Service: Projects] Handles all project related tasks.'
  - name: Reports
    description: >-
      [Service: Reports] Generates and manages analytical reports and insights
      for users and projects.
  - name: Search
    description: >-
      [Service: Search] Provides search functionalities, including indexing and
      retrieval of platform data.
  - name: TimeTracking
    description: >-
      [Service: TimeTracking] Manages time entries, active timers, time
      categories, billing rates, and audit/lock for time-tracking workflows.
  - name: Resourcing
    description: >-
      [Service: TimeTracking] Plans people's capacity: working patterns, time
      off, closures, public holidays, allocations of hours to projects, and
      retainer budgets. Not available to workspace guests.
  - name: Views
    description: >-
      [Feature] Provides tools to create and customize views, enabling users to
      organize and visualize their data according to their preferences and
      workflows.
  - name: OAuth2
    description: >-
      [Feature] Supports OAuth2 integration for seamless user authentication and
      authorization, ensuring secure access to external APIs and services.
  - name: Sprints
    description: >-
      [Feature] Facilitates sprint management within agile workflows, including
      planning, progress tracking, and reporting.
  - name: Cards
    description: >-
      [Feature] A Card is the core concept used in the system to describe an
      individual task or work item. They are used across Boards, Sprints, and
      Roadmaps. Cards include features like descriptions, checklists, comments,
      priorities, tags and more.
  - name: Checklists
    description: >-
      [Feature] A Checklist is a list of items that need to be completed. It is
      used to track progress on a card.
  - name: Lists
    description: >-
      [Feature] Represents a collection of tasks or items grouped within
      different contexts in the system. Lists (externally referenced as
      "statuses") are utilized across various entities such as boards, sprints,
      and roadmaps.
  - name: Notes
    description: >-
      [Feature] Enables users to create, edit, and organize notes, supporting
      rich text, attachments, transcriptions and AI enhancements.
  - name: Tags
    description: >-
      [Feature] Groups endpoints related to the creation, retrieval, updating,
      deletion, and merging of tags within teams (workspaces).
  - name: Agents
    description: >-
      [Feature] Manages agents and runs. Provides CRUD operations for agents,
      launching cloud agents, monitoring agent status, retrieving conversations,
      and sending follow-ups.
  - name: PublishedAgents
    description: >-
      [Feature] [Service: AI] External API for agents published to websites,
      apps and custom clients. Authenticated with scoped chat sessions
      (PublishedAgentSession) or host app assertions (AgentAppAssertion), never
      with workspace member credentials. Management routes for publications and
      app registrations live under the Agents tag. Base URL: these paths are
      absolute from the API origin. The real URL is
      `https://api.superthread.com/public/agents/v1/...`, and the spec's
      `basePath` `/v1` does not apply, the same as `/public/forms` (Swagger 2.0
      has no per-path base). Generated clients default to `.../v1` and would
      call `/v1/public/agents/v1/...`, so construct them with the API origin as
      the base: in TypeScript `new Api({ baseURL: 'https://api.superthread.com'
      })`, and in Go a transport whose base path is `/`. The www forms portal
      does the same, using an axios client whose `baseURL` is the API origin.
paths:
  /{team_id}/time/estimates/{card_id}:
    parameters:
      - $ref: '#/components/parameters/path_team_id'
      - $ref: '#/components/parameters/path_card_id'
    patch:
      tags:
        - TimeTracking
      summary: Save a canonical estimate independently of hierarchy summaries
      description: >
        Saves or clears the time-tracking-owned estimate with optimistic
        concurrency.

        Returns the committed canonical estimate without traversing descendants
        or reading

        time entries. A subsequent summary failure cannot turn this successful
        write into

        a failed save. The existing Boards effort estimate is not changed.

        Omitted estimate_kind preserves the stored kind, including on cleared
        records;

        new records default to direct. Explicit conversion supplies the current
        value,

        current version and new kind. Zero clears the value without discarding
        kind/version.

        Clearing a card with no stored estimate is a successful no-op returning
        null.

        Requires estimate edit access. Existing ordinary-card time-entry logging
        settings

        are unaffected; estimate editing is independent of a space's logging
        switch,

        including for roadmap projects.
      operationId: saveCardTimeEstimate
      requestBody:
        $ref: '#/components/requestBodies/UpdateCardTimeEstimateRequest'
      responses:
        '200':
          description: >-
            Committed canonical estimate, or null for an absent cleared
            estimate.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaveCardTimeEstimateResponse'
        '409':
          description: Estimate version conflict; refresh the canonical estimate and retry.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
        default:
          description: Validation, authorization or persistence error.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
components:
  parameters:
    path_team_id:
      in: path
      name: team_id
      description: >-
        Team ID is an alphanumerical string that identifies a Team. This is
        externally referred to as a "Workspace".
      required: true
      schema:
        type: string
    path_card_id:
      in: path
      name: card_id
      description: Card ID is a numerical string that identifies a card.
      required: true
      schema:
        type: string
  requestBodies:
    UpdateCardTimeEstimateRequest:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateCardTimeEstimateRequest'
      required: true
  schemas:
    SaveCardTimeEstimateResponse:
      type: object
      properties:
        card_time_estimate:
          $ref: '#/components/schemas/NullableCardTimeEstimate'
      example:
        card_time_estimate:
          card_id: '2700'
          estimate_seconds: 36000
          estimate_kind: budget
          version: 2
    Error:
      type: object
      properties:
        id:
          type: string
          example: err5f744ab
        code:
          type: integer
          format: int32
          example: 403
        sec:
          $ref: '#/components/schemas/SuperthreadErrorCode'
        message:
          type: string
          example: You do not have access to this resource
          description: A user-friendly error message
        date:
          $ref: '#/components/schemas/STime'
    UpdateCardTimeEstimateRequest:
      type: object
      required:
        - estimate_seconds
        - version
      properties:
        estimate_seconds:
          type: integer
          format: int64
          minimum: 0
          description: Planned duration in seconds. Pass zero to clear.
          example: 28800
          nullable: true
        estimate_kind:
          $ref: '#/components/schemas/TimeEstimateKind'
        version:
          type: integer
          format: int64
          minimum: 0
          description: >-
            Pass zero when no estimate exists; otherwise pass the current
            version.
          example: 1
          nullable: true
    NullableCardTimeEstimate:
      description: >
        Canonical estimate or explicit null in authoritative batch and save
        responses.

        Named composition preserves nullable object and JSON presence semantics
        in

        generated clients without changing the legacy CardTimeEstimate
        representation.
      x-omitempty: false
      allOf:
        - $ref: '#/components/schemas/CardTimeEstimate'
      nullable: true
    SuperthreadErrorCode:
      type: string
      description: |
        Superthread Error Code (`SEC`): A structured error code.
        Format: `SEC:{ServiceID}-{InternalErrorCode}`.


          - `SEC`: Prefix for all structured error codes.
          - `ServiceID`: First 3 characters identify the service, '000' is reserved for generic errors.
          - `InternalErrorCode`: the next (last) 5 characters define the specific error.
      pattern: ^SEC:\d{3}-\d{5}$
      example: SEC:000-00014
    STime:
      type: integer
      format: int64
      example: 1608742037016
      description: unix timestamp in seconds
      x-go-type:
        type: STime
        import:
          package: github.com/superthread-com/common/pkg/types
        hints:
          noValidation: true
          kind: primitive
    TimeEstimateKind:
      type: string
      description: >
        direct estimates work on this card only; budget is an inclusive ceiling
        for this

        card and its descendants. Omitted stored kind means direct. Missing or
        zero duration

        does not establish an active budget, regardless of retained kind.
      enum:
        - direct
        - budget
      nullable: true
    CardTimeEstimate:
      type: object
      description: >
        Canonical per-card duration estimate owned by time-tracking. Existing
        records

        without estimate_kind retain direct-estimate semantics; conversion to an
        inclusive

        budget is explicit. New servers always return the effective
        estimate_kind, including

        direct for legacy rows. The property remains optional for compatibility
        with older

        servers and stored payloads. A cleared record retains its version and
        kind.
      required:
        - card_id
        - estimate_seconds
        - version
      properties:
        card_id:
          type: string
          example: '2700'
        estimate_seconds:
          type: integer
          format: int64
          minimum: 0
          description: Planned duration in seconds. Zero means the estimate is cleared.
          example: 28800
        estimate_kind:
          $ref: '#/components/schemas/TimeEstimateKind'
        version:
          type: integer
          format: int64
          minimum: 1
          example: 2
        time_created:
          $ref: '#/components/schemas/STime'
        time_updated:
          $ref: '#/components/schemas/STime'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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