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

# Read Studio sellables analytics

> Requires analytics:read and an exact active Studio grant. Dates are inclusive from and exclusive to, at most 366 civil days, in the supplied IANA timezone. Currency USD is supported. The credential selects Test or Live; query lane overrides and unknown or repeated filters are rejected. Refunds observed later restate the original sales cohort. Null metrics and coverage disclose unavailable accounting. Returns aggregate sales only; no customer data. Cursor binds report revision and filters. Private no-store response.



## OpenAPI

````yaml https://api.batchrelay.com/openapi.json get /v1/studios/{studio_id}/analytics/sellables
openapi: 3.1.0
info:
  description: >-
    Provider-neutral print catalog and prepared-media validation. This document
    covers only routes owned by the Go service; it deliberately excludes
    migration-proxied order lifecycle routes and all provider payloads.
  license:
    name: Proprietary
    url: https://github.com/SENTINELITE/Batch-Relay-Go/blob/main/README.md
  title: Batch Relay API
  version: 1.0.1
servers:
  - url: https://api.batchrelay.com
security: []
tags:
  - description: >-
      Explicitly authorized purchaser context for studio order events. Event
      payloads remain free of contact details.
    name: Event context
  - description: Service health and the public API description.
    name: System
  - description: Test Mode session creation and API credential entry points.
    name: Authentication
  - description: >-
      Provider-neutral canonical catalog resources and platform-owned semantic
      definitions.
    name: Catalog
  - description: Studio-scoped guest checkout-link management.
    name: Checkout links
  - description: >-
      One-way operational event messages. Alert emails contain no message body
      and recipients read messages after Batch Relay authentication.
    name: Studio messages
  - description: >-
      Explicit, reviewable sandbox-to-Live promotion plans for forms, catalog,
      and storefront configuration.
    name: Sandbox promotions
  - description: Provider-neutral validation, quoting, and order lifecycle operations.
    name: Print orders
  - description: Managed fulfillment asset ingestion and metadata.
    name: Managed assets
  - description: Studio-scoped original asset upload sessions and objects.
    name: Studio assets
  - description: Prepared and confirmed event roster team changes.
    name: Event team changes
  - description: Authenticated studio, event, and form-management operations.
    name: Studio management
  - description: >-
      Authenticated studio retail catalog management. Draft and publication
      lifecycles are explicit per product or package.
    name: Studio catalog
  - description: >-
      Authenticated singular storefront assortment management. PATCH atomically
      publishes a new immutable assortment revision; no storefront draft
      lifecycle exists yet.
    name: Storefront
  - description: Managed media used by the studio retail catalog.
    name: Studio catalog assets
  - description: Template rendering job creation and retrieval.
    name: Template renders
  - description: >-
      Published browser-side template packages and short-lived server proof
      renders. Preview artifacts are never fulfillment artwork.
    name: Browser previews
  - description: API account and credential administration.
    name: API accounts
paths:
  /v1/studios/{studio_id}/analytics/sellables:
    parameters:
      - $ref: '#/components/parameters/ClientSurface'
      - $ref: '#/components/parameters/ClientVersion'
      - $ref: '#/components/parameters/InvocationMode'
    get:
      tags:
        - Studio Analytics
      summary: Read Studio sellables analytics
      description: >-
        Requires analytics:read and an exact active Studio grant. Dates are
        inclusive from and exclusive to, at most 366 civil days, in the supplied
        IANA timezone. Currency USD is supported. The credential selects Test or
        Live; query lane overrides and unknown or repeated filters are rejected.
        Refunds observed later restate the original sales cohort. Null metrics
        and coverage disclose unavailable accounting. Returns aggregate sales
        only; no customer data. Cursor binds report revision and filters.
        Private no-store response.
      operationId: listStudioTopSellables
      parameters:
        - in: path
          name: studio_id
          required: true
          schema:
            maxLength: 256
            pattern: ^stu_
            type: string
        - in: query
          name: from
          required: true
          schema:
            format: date
            type: string
        - in: query
          name: to
          required: true
          schema:
            format: date
            type: string
        - in: query
          name: timezone
          required: true
          schema:
            type: string
        - in: query
          name: currency
          required: true
          schema:
            enum:
              - USD
            type: string
        - in: query
          name: event_id
          schema:
            maxLength: 256
            pattern: ^evt_
            type: string
        - in: query
          name: limit
          schema:
            default: 10
            maximum: 100
            minimum: 1
            type: integer
        - in: query
          name: cursor
          schema:
            maxLength: 1024
            type: string
        - in: query
          name: sort_by
          schema:
            default: net_sales
            enum:
              - net_sales
              - units
              - orders
            type: string
        - in: query
          name: type
          schema:
            default: all
            enum:
              - all
              - item
              - package
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StudioSalesSellablesResponse'
          description: Studio sales report
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: invalid_analytics_request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: invalid_api_key
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: analytics_forbidden
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: analytics_revision_changed
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Rate limited; Retry-After
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          description: analytics_unavailable
      security:
        - bearerAuth: []
components:
  parameters:
    ClientSurface:
      description: >-
        Untrusted optional analytics hint naming the calling client surface. It
        never affects authorization, routing, pricing, or behavior.
      in: header
      name: X-BatchRelay-Client-Surface
      required: false
      schema:
        maxLength: 100
        minLength: 1
        type: string
    ClientVersion:
      description: >-
        Untrusted optional analytics hint naming the calling client version. It
        never affects authorization, routing, pricing, or behavior.
      in: header
      name: X-BatchRelay-Client-Version
      required: false
      schema:
        maxLength: 100
        minLength: 1
        type: string
    InvocationMode:
      description: >-
        Untrusted optional analytics hint naming the invocation mode. It never
        affects authorization, routing, pricing, or behavior.
      in: header
      name: X-BatchRelay-Invocation-Mode
      required: false
      schema:
        maxLength: 100
        minLength: 1
        type: string
  schemas:
    StudioSalesSellablesResponse:
      additionalProperties: false
      properties:
        items:
          items:
            additionalProperties: false
            properties:
              average_order_value:
                additionalProperties: false
                properties:
                  denominator:
                    maximum: 9007199254740991
                    minimum: 0
                    type:
                      - integer
                      - 'null'
                  numerator_minor:
                    maximum: 9007199254740991
                    minimum: 0
                    type:
                      - integer
                      - 'null'
                  value_minor:
                    maximum: 9007199254740991
                    minimum: 0
                    type:
                      - integer
                      - 'null'
                required:
                  - numerator_minor
                  - denominator
                  - value_minor
                type: object
              captured_orders:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              discounts_minor:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              disputed_orders:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              fully_refunded_orders:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              gross_merchandise_sales_minor:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              id:
                type: string
              merchandise_sales_before_refunds_minor:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              name:
                type:
                  - string
                  - 'null'
              net_merchandise_sales_minor:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              purchased_units:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              rank:
                minimum: 1
                type: integer
              refunds_minor:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              retained_paid_orders:
                maximum: 9007199254740991
                minimum: 0
                type:
                  - integer
                  - 'null'
              type:
                enum:
                  - item
                  - package
                type: string
            required:
              - rank
              - id
              - name
              - gross_merchandise_sales_minor
              - discounts_minor
              - merchandise_sales_before_refunds_minor
              - refunds_minor
              - net_merchandise_sales_minor
              - captured_orders
              - retained_paid_orders
              - fully_refunded_orders
              - disputed_orders
              - purchased_units
              - average_order_value
              - type
            type: object
          maxItems: 100
          type: array
        meta:
          $ref: '#/components/schemas/StudioSalesMeta'
        page:
          additionalProperties: false
          properties:
            has_more:
              type: boolean
            limit:
              maximum: 100
              minimum: 1
              type: integer
            next_cursor:
              type:
                - string
                - 'null'
            sort_by:
              enum:
                - net_sales
                - units
                - orders
              type: string
            total:
              maximum: 9007199254740991
              minimum: 0
              type:
                - integer
                - 'null'
          required:
            - limit
            - next_cursor
            - has_more
            - total
            - sort_by
          type: object
      required:
        - meta
        - items
        - page
      type: object
    Error:
      additionalProperties: false
      properties:
        code:
          description: Stable machine-readable error code.
          type: string
        docs_url:
          format: uri
          type: string
        error:
          description: Backward-compatible human-readable error.
          type: string
        message:
          type: string
        request_id:
          type: string
      required:
        - error
        - code
        - message
        - docs_url
        - request_id
      type: object
    StudioSalesMeta:
      additionalProperties: false
      properties:
        coverage:
          $ref: '#/components/schemas/StudioSalesCoverage'
        currency:
          type: string
        data_through:
          type:
            - string
            - 'null'
        environment:
          enum:
            - test
            - live
          type: string
        from:
          type: string
        generated_at:
          type: string
        metric_version:
          const: studio_sales_v1
          type: string
        revision:
          type: string
        studio_id:
          type: string
        timezone:
          type: string
        to:
          type: string
        utc_from:
          type: string
        utc_to:
          type: string
      required:
        - studio_id
        - currency
        - from
        - to
        - timezone
        - utc_from
        - utc_to
        - generated_at
        - revision
        - environment
        - metric_version
        - data_through
        - coverage
      type: object
    StudioSalesCoverage:
      additionalProperties: false
      properties:
        accounting:
          additionalProperties: false
          properties:
            line_allocation:
              enum:
                - verified
                - estimated
                - unknown
              type: string
            net_sales_estimated:
              type: boolean
            refund_policy:
              enum:
                - none
                - order_total_refund_proxy
                - unknown
              type: string
          required:
            - refund_policy
            - net_sales_estimated
            - line_allocation
          type: object
        state:
          enum:
            - complete
            - partial
            - preparing
            - unavailable
          type: string
        warning_codes:
          items:
            type: string
          type: array
      required:
        - state
        - warning_codes
        - accounting
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: Batch Relay API key or anonymous session
      description: >-
        Batch Relay scoped API key or an anonymous Test Mode session. Scope
        names document required capabilities. Anonymous sessions are
        sandbox-only and do not authorize studio, event, billing, or Live Mode
        operations.
      scheme: bearer
      type: http

````

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