> ## 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.

# Export time reports

> Applies the same filters and access controls as the JSON time report and returns
an authoritative CSV file. The default `entries` view has one row per actual time
entry and includes task and category labels, human-readable member, space, and board
names alongside stable IDs, durations, billing snapshots, calculated billable amounts,
currency, source, and review state. The `timesheet` view groups entries by card and
local calendar day.

The `entries` view appends Roadmap Project ID and Roadmap Project columns, distinct
from Space and Board. Project identity comes only from each entry's logged membership
snapshot, so moving a card does not change historical attribution. Missing historical
membership has a blank project ID and the label No project; never reconstruct it
from the current card hierarchy. Names are current authorized display names, not
historical name snapshots. Deleted or unresolved projects use Unavailable project;
restricted project identities and names must not be disclosed. Entries belonging to
inaccessible projects are excluded according to the same authorization as the report.

The `project_summary` view groups that same complete filtered, deduplicated entry
dataset by historical roadmap project ID. Each project appears once, with an additional
No project row only when such entries exist. Direct parent and descendant entries
each contribute once. Columns are Roadmap Project ID, Roadmap Project, Period from,
Period to, Timezone, Tracked seconds, Tracked hours, Billable seconds, Billable hours.
Period bounds are ISO 8601 instants (from inclusive, to exclusive); Timezone is the
effective IANA report timezone. Seconds are integers and hours are decimal seconds / 3600
rounded to six decimal places. Totals cover the selected period only; no lifetime
budget, planned duration, remaining or overrun columns are included. Project grouping
is fixed; a non-empty `group_by` parameter is rejected rather than silently ignored.

All export views consume every matching page before returning success. Empty results
return the view's header row only. CSV uses UTF-8 and proper quoting for commas,
newlines and quotes; text cells are protected against spreadsheet formula execution.
Failures, deadlines and dataset limits return an error, never a successful partial file.
Existing entries columns and timesheet layout retain their meanings.




## OpenAPI

````yaml GET /{team_id}/time/reports/export
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/reports/export:
    parameters:
      - $ref: '#/components/parameters/path_team_id'
      - $ref: '#/components/parameters/query_time_report_from'
      - $ref: '#/components/parameters/query_time_report_to'
      - $ref: '#/components/parameters/query_time_timezone'
      - $ref: '#/components/parameters/query_time_logger_ids'
      - $ref: '#/components/parameters/query_time_assignee_ids'
      - $ref: '#/components/parameters/query_time_space_ids'
      - $ref: '#/components/parameters/query_time_project_ids'
      - $ref: '#/components/parameters/query_time_board_ids'
      - $ref: '#/components/parameters/query_time_sprint_ids'
      - $ref: '#/components/parameters/query_time_card_ids'
      - $ref: '#/components/parameters/query_time_category_ids'
      - $ref: '#/components/parameters/query_time_tag_ids'
      - $ref: '#/components/parameters/query_time_tag_match'
      - $ref: '#/components/parameters/query_time_report_billable'
      - $ref: '#/components/parameters/query_time_sources'
      - $ref: '#/components/parameters/query_time_rollup_mode'
      - $ref: '#/components/parameters/query_time_report_csv_view'
    get:
      tags:
        - TimeTracking
      summary: Export a time report CSV
      description: >
        Applies the same filters and access controls as the JSON time report and
        returns

        an authoritative CSV file. The default `entries` view has one row per
        actual time

        entry and includes task and category labels, human-readable member,
        space, and board

        names alongside stable IDs, durations, billing snapshots, calculated
        billable amounts,

        currency, source, and review state. The `timesheet` view groups entries
        by card and

        local calendar day.


        The `entries` view appends Roadmap Project ID and Roadmap Project
        columns, distinct

        from Space and Board. Project identity comes only from each entry's
        logged membership

        snapshot, so moving a card does not change historical attribution.
        Missing historical

        membership has a blank project ID and the label No project; never
        reconstruct it

        from the current card hierarchy. Names are current authorized display
        names, not

        historical name snapshots. Deleted or unresolved projects use
        Unavailable project;

        restricted project identities and names must not be disclosed. Entries
        belonging to

        inaccessible projects are excluded according to the same authorization
        as the report.


        The `project_summary` view groups that same complete filtered,
        deduplicated entry

        dataset by historical roadmap project ID. Each project appears once,
        with an additional

        No project row only when such entries exist. Direct parent and
        descendant entries

        each contribute once. Columns are Roadmap Project ID, Roadmap Project,
        Period from,

        Period to, Timezone, Tracked seconds, Tracked hours, Billable seconds,
        Billable hours.

        Period bounds are ISO 8601 instants (from inclusive, to exclusive);
        Timezone is the

        effective IANA report timezone. Seconds are integers and hours are
        decimal seconds / 3600

        rounded to six decimal places. Totals cover the selected period only; no
        lifetime

        budget, planned duration, remaining or overrun columns are included.
        Project grouping

        is fixed; a non-empty `group_by` parameter is rejected rather than
        silently ignored.


        All export views consume every matching page before returning success.
        Empty results

        return the view's header row only. CSV uses UTF-8 and proper quoting for
        commas,

        newlines and quotes; text cells are protected against spreadsheet
        formula execution.

        Failures, deadlines and dataset limits return an error, never a
        successful partial file.

        Existing entries columns and timesheet layout retain their meanings.
      operationId: exportTimeReport
      responses:
        '200':
          description: Authoritative time report CSV.
          content:
            text/csv:
              schema:
                type: string
                format: binary
        default:
          description: client error
          content:
            text/csv:
              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
    query_time_report_from:
      in: query
      name: from
      description: >-
        Lower bound (inclusive) for the report window, as a Unix timestamp in
        seconds.
      required: true
      schema:
        type: integer
        format: int64
    query_time_report_to:
      in: query
      name: to
      description: >-
        Upper bound (exclusive) for the report window, as a Unix timestamp in
        seconds.
      required: true
      schema:
        type: integer
        format: int64
    query_time_timezone:
      in: query
      name: timezone
      description: IANA timezone used for day, week, and month boundaries.
      required: false
      schema:
        type: string
    query_time_logger_ids:
      in: query
      name: logger_ids
      description: Restrict to entries logged by these member IDs.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_assignee_ids:
      in: query
      name: assignee_ids
      description: Restrict to cards currently assigned to any of these member IDs.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_space_ids:
      in: query
      name: space_ids
      description: >-
        Restrict to entries whose card was in these spaces when the time was
        logged.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_project_ids:
      in: query
      name: project_ids
      description: >-
        Restrict to entries on cards currently in these projects, including time
        logged before the cards joined.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_board_ids:
      in: query
      name: board_ids
      description: >-
        Restrict to entries whose card was in these boards when the time was
        logged.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_sprint_ids:
      in: query
      name: sprint_ids
      description: >-
        Restrict to entries whose card was in these sprints when the time was
        logged.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_card_ids:
      in: query
      name: card_ids
      description: >-
        Restrict to these cards. Descendant roll-up uses the ancestor path
        captured when each entry was logged.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_category_ids:
      in: query
      name: category_ids
      description: Restrict to entries assigned to these time categories.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_tag_ids:
      in: query
      name: tag_ids
      description: Restrict to cards currently carrying the selected tags.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
    query_time_tag_match:
      in: query
      name: tag_match
      description: Match cards carrying any selected tag or every selected tag.
      required: false
      schema:
        type: string
        enum:
          - any
          - all
    query_time_report_billable:
      in: query
      name: billable
      description: >-
        Optional filter — restrict to billable (`true`) or non-billable
        (`false`) entries.
      required: false
      schema:
        type: boolean
    query_time_sources:
      in: query
      name: sources
      description: >-
        Restrict to entries created manually, by a timer, or by idle-time
        handling.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
          enum:
            - manual
            - timer
            - idle
    query_time_rollup_mode:
      in: query
      name: rollup_mode
      description: >-
        Direct includes only cards in the selected scope; descendants
        recursively includes every child card.
      required: false
      schema:
        type: string
        enum:
          - direct
          - descendants
    query_time_report_csv_view:
      in: query
      name: csv_view
      description: >
        CSV layout. `entries` (default) returns one row per

        actual time entry. `timesheet` returns one row per card with a column
        for

        each local calendar day in the selected report window.

        `project_summary` returns one row per historical roadmap project with

        reporting-period tracked and billable totals, plus a No project group
        when present.

        It does not include lifetime estimates, budgets, remaining time or
        secondary grouping.
      required: false
      schema:
        type: string
        enum:
          - entries
          - timesheet
          - project_summary
  schemas:
    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'
    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
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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