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

# What was done with a partner's published widgets

> Counts what the visitors of the compositions made through your account did in a period: how many times a
composition was **viewed**, how many times a visitor **interacted** with one, and how many different visitors
there were. It covers every composition of your account, your own and the ones made for your managed users;
narrow it to one managed user with `managedUserId` or `managedUserExternalId` (not both).

The numbers come from the events the embedded widgets send while they are shown (the Widgetic embed SDK sends
them by itself), counted when you ask. Only views and interactions are counted; the events that describe a
visit (its start, its end, the device and the referrer) are not.

The period runs from `startDate` (included) to `endDate` (not included): the 30 days before now when you give
neither, and at most 366 days. A date without a time is midnight UTC at the start of that day, so for all of
October give `startDate=2026-10-01` and `endDate=2026-11-01`.

The caller must be the person who administers the partner (an API key of that account works, with the
`partner:read` scope), or a Widgetic administrator.




## OpenAPI

````yaml /openapi/widgetic-api-public.json get /partners/{partnerId}/analytics/summary
openapi: 3.0.0
info:
  title: Widgetic API Gateway
  version: 1.0.0
  description: API documentation for the Widgetic API Gateway
  license:
    name: Widgetic Integration License
    url: https://docs.widgetic.com/resources/license
servers:
  - url: https://api.widgetic.com/v1
    description: Production server
    variables:
      env:
        default: production
        description: Environment
      apiUrl:
        default: https://api.widgetic.com
        description: API URL
      apiVersion:
        default: /v1
        description: API Version path prefix
security: []
tags: []
paths:
  /partners/{partnerId}/analytics/summary:
    get:
      tags:
        - Partners
      summary: What was done with a partner's published widgets
      description: >
        Counts what the visitors of the compositions made through your account
        did in a period: how many times a

        composition was **viewed**, how many times a visitor **interacted** with
        one, and how many different visitors

        there were. It covers every composition of your account, your own and
        the ones made for your managed users;

        narrow it to one managed user with `managedUserId` or
        `managedUserExternalId` (not both).


        The numbers come from the events the embedded widgets send while they
        are shown (the Widgetic embed SDK sends

        them by itself), counted when you ask. Only views and interactions are
        counted; the events that describe a

        visit (its start, its end, the device and the referrer) are not.


        The period runs from `startDate` (included) to `endDate` (not included):
        the 30 days before now when you give

        neither, and at most 366 days. A date without a time is midnight UTC at
        the start of that day, so for all of

        October give `startDate=2026-10-01` and `endDate=2026-11-01`.


        The caller must be the person who administers the partner (an API key of
        that account works, with the

        `partner:read` scope), or a Widgetic administrator.
      operationId: getPartnerAnalyticsSummary
      parameters:
        - in: path
          name: partnerId
          required: true
          schema:
            type: string
            format: uuid
          description: The partner whose widgets to report on
        - in: query
          name: startDate
          schema:
            type: string
          description: >
            Start of the period, included. An ISO 8601 date (`2026-10-01`) or
            date-time with its offset (`2026-10-01T08:00:00Z`). Default 30 days
            before `endDate`.
        - in: query
          name: endDate
          schema:
            type: string
          description: >
            End of the period, not included, in the same forms. Default now. It
            must be after `startDate`, by at most 366 days.
        - in: query
          name: managedUserId
          schema:
            type: string
            format: uuid
          description: >-
            Report only on this managed user (Widgetic's id for the user). Send
            this or `managedUserExternalId`, not both.
        - in: query
          name: managedUserExternalId
          schema:
            type: string
            maxLength: 255
          description: >-
            Report only on the managed user you registered with this
            `externalId` (your own identifier for the user). Send this or
            `managedUserId`, not both.
      responses:
        '200':
          description: What was done with the widgets in the period
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerAnalyticsSummaryResponse'
        '400':
          description: >-
            A date is not a date, `startDate` is not before `endDate`, the
            period is longer than 366 days, or the managed user is named wrongly
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: The API key is missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: The caller does not administer this partner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            There is no such partner (reported to administrators only), or no
            managed user of yours matches (MANAGED_USER_NOT_FOUND)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            The partner has no administrator account
            (PARTNER_HAS_NO_ADMINISTRATOR)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too many report requests. Wait a minute.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - apiKeyAuth: []
      x-code-samples:
        - lang: TypeScript
          label: TypeScript SDK
          source: >
            import { Configuration, PartnersApi } from '@widgetic/api-sdk-ts';


            const partnersApi = new PartnersApi(new Configuration({ apiKey:
            'YOUR_API_KEY' }));


            // How the widgets of one customer did in October:

            const { data: summary } = await
            partnersApi.getPartnerAnalyticsSummary({
              partnerId,
              startDate: '2026-10-01',
              endDate: '2026-11-01',
              managedUserExternalId: 'customer-4711'
            });


            console.log(summary.views, summary.interactions, summary.visitors);
components:
  schemas:
    PartnerAnalyticsSummaryResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          description: Always `true` on a success.
          example: true
        data:
          $ref: '#/components/schemas/PartnerAnalyticsSummary'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
    ErrorResponse:
      type: object
      required:
        - success
        - message
        - error
      additionalProperties: true
      properties:
        success:
          type: boolean
          description: Always `false` on a failure.
          example: false
        message:
          type: string
          description: The same text as `error.message`, for a caller that reads one line.
        error:
          $ref: '#/components/schemas/ErrorDetail'
    PartnerAnalyticsSummary:
      type: object
      description: What was done with the partner's published widgets in a period.
      required:
        - partnerId
        - period
        - managedUserId
        - views
        - interactions
        - visitors
        - compositionsViewed
        - managedUsersViewed
      properties:
        partnerId:
          type: string
          format: uuid
        period:
          $ref: '#/components/schemas/PartnerReportPeriod'
        managedUserId:
          type: string
          format: uuid
          nullable: true
          description: >-
            The managed user the report is narrowed to. Null for the whole
            account.
        views:
          type: integer
          format: int64
          description: How many times a composition was shown to a visitor
        interactions:
          type: integer
          format: int64
          description: How many times a visitor did something with a composition
        visitors:
          type: integer
          format: int64
          description: >
            How many different visitors viewed. A visitor is a browsing session;
            an event that carries no session is counted for the signed-in user
            instead. An event that carries neither is a view and no visitor.
        compositionsViewed:
          type: integer
          format: int64
          description: How many different compositions were viewed
        managedUsersViewed:
          type: integer
          format: int64
          description: How many different managed users had a composition viewed
      example:
        partnerId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        period: null
        managedUserId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        views: 42
        interactions: 42
        visitors: 42
        compositionsViewed: 42
        managedUsersViewed: 42
    ResponseMeta:
      type: object
      description: >-
        Extra information about the answer: where a page sits in a list, the
        cursor of the next page, or warnings about a call that succeeded with a
        caveat.
      additionalProperties: true
      properties:
        page:
          type: integer
          description: The page that was read, counting from 1.
          example: 1
        size:
          type: integer
          description: How many items one page holds.
          example: 20
        total:
          type: integer
          description: How many items the whole list has.
          example: 135
        limit:
          type: integer
          description: The same as `size`.
          example: 20
        offset:
          type: integer
          description: How many items come before this page.
          example: 0
        hasNextPage:
          type: boolean
          example: true
        hasPreviousPage:
          type: boolean
          example: false
        nextCursor:
          type: string
          nullable: true
          description: >-
            Pass this as `cursor` to read the next page of a list that is read
            by cursor. `null` on the last page.
        warnings:
          type: array
          items:
            type: string
          description: >-
            Things the call did not do, though it succeeded (for example a table
            that could not be created just now).
    ErrorDetail:
      type: object
      required:
        - code
        - message
        - timestamp
      properties:
        code:
          type: string
          description: Machine-readable error code.
          example: RESOURCE_NOT_FOUND
        message:
          type: string
          description: Human-readable explanation.
          example: Composition not found
        param:
          type: string
          description: The field that caused the error, when one did.
          example: name
        docUrl:
          type: string
          description: Where this error is explained.
        suggestedAction:
          type: string
          description: What to do about it.
        retryAfter:
          type: integer
          description: >-
            Seconds to wait before trying again (rate limits). The same number
            is in the `Retry-After` header.
          example: 60
        details:
          type: object
          additionalProperties: true
          description: >-
            More about the error: the fields that failed, a limit that was
            reached.
        correlationId:
          type: string
          description: Quote this when you ask support about the call.
          example: req_123e4567-e89b-12d3-a456-426614174000
        timestamp:
          type: string
          format: date-time
          example: '2026-10-15T10:00:00.000Z'
    PartnerReportPeriod:
      type: object
      description: The stretch of time a report covers.
      required:
        - from
        - to
      properties:
        from:
          type: string
          format: date-time
          description: Start of the period, included
        to:
          type: string
          format: date-time
          description: End of the period, not included
      example:
        from: '2026-01-15T09:30:00.000Z'
        to: '2026-01-15T09:30:00.000Z'
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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