> ## 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 your partner account was told

> Lists the notifications of a partner, the newest first: the invoices Widgetic issued and their payments, the
reminders to pay them, a warning when your credits run low, and the changes to the standing of the account
(activated, paused, resumed). It is the same list your dashboard shows, and each entry is what your webhook
receives as `data` when you have one (`updatePartnerNotificationSettings`).

A page holds `limit` notifications (20 by default, at most 100). When there are older ones `nextBefore` is
set: ask again with it as `before` to get the next page.

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}/notifications
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}/notifications:
    get:
      tags:
        - Partners
      summary: What your partner account was told
      description: >
        Lists the notifications of a partner, the newest first: the invoices
        Widgetic issued and their payments, the

        reminders to pay them, a warning when your credits run low, and the
        changes to the standing of the account

        (activated, paused, resumed). It is the same list your dashboard shows,
        and each entry is what your webhook

        receives as `data` when you have one
        (`updatePartnerNotificationSettings`).


        A page holds `limit` notifications (20 by default, at most 100). When
        there are older ones `nextBefore` is

        set: ask again with it as `before` to get the next page.


        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: listPartnerNotifications
      parameters:
        - in: path
          name: partnerId
          required: true
          schema:
            type: string
            format: uuid
          description: The partner whose notifications to list
        - in: query
          name: limit
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          description: How many notifications to list at most
        - in: query
          name: before
          schema:
            type: string
            format: date-time
          description: >-
            Only the notifications made before this moment. Give the
            `nextBefore` of the previous page.
      responses:
        '200':
          description: The notifications, the newest first
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerNotificationPageResponse'
        '400':
          description: '`limit` or `before` is not valid'
          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'
        '429':
          description: Too many 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' }));


            // The latest notifications, then the ones before them:

            const { data: page } = await partnersApi.listPartnerNotifications({
            partnerId, limit: 20 });

            const older = page.nextBefore
              ? await partnersApi.listPartnerNotifications({ partnerId, before: page.nextBefore })
              : null;
components:
  schemas:
    PartnerNotificationPageResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          description: Always `true` on a success.
          example: true
        data:
          $ref: '#/components/schemas/PartnerNotificationPage'
        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'
    PartnerNotificationPage:
      type: object
      description: A page of notifications, the newest first.
      required:
        - notifications
        - nextBefore
      properties:
        notifications:
          type: array
          items:
            $ref: '#/components/schemas/PartnerNotification'
        nextBefore:
          type: string
          format: date-time
          nullable: true
          description: >-
            Send as `before` to get the next, older page. Null when there is
            none.
      example:
        notifications:
          - Example PartnerNotification
        nextBefore: '2026-01-15T09:30:00.000Z'
    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'
    PartnerNotification:
      type: object
      description: >-
        One thing that happened to your partner account. The same object is what
        your webhook receives as `data` of a call (beside `id`, `type`,
        `createdAt` and `partnerId`), and what the list in your dashboard shows.
      required:
        - id
        - type
        - title
        - body
        - tone
        - data
        - createdAt
      properties:
        id:
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/PartnerNotificationEventType'
        title:
          type: string
          description: One line that says what happened
        body:
          type: string
          description: A few sentences that say what happened and what to do about it
        tone:
          type: string
          enum:
            - info
            - success
            - warning
            - error
          description: How serious it is
        data:
          type: object
          additionalProperties: true
          description: >-
            The facts of the event, named in camelCase. An invoice event carries
            `invoiceNumber`, `subtotal`, `taxAmount`, `total`, `currency`,
            `dueDate`, `hostedInvoiceUrl` (the page where it is paid) and
            `purpose` (`contract`, or `extra_credits` for credits you bought on
            top of the contract: an unpaid invoice for extra credits never stops
            the account, the credits are just not added until it is paid); a
            payment adds `paidAt`, a failed payment `reason`, a reminder
            `daysUntilDue` or `daysOverdue`. A credits event carries `band`
            (`low` or `empty`), `balance` and `threshold`.
            `credits.managed_user_cap_reached` (one of your managed users used
            its monthly credits and a request was refused) goes to your webhook
            only when subscribed, once per managed user each month, and carries
            `managedUserId`, `externalId`, `monthlyCredits`, `creditsUsed`,
            `resetsAt` and `reachedAt`. A standing event carries `status`,
            `previousStatus` and `reason`; `partner.paused` with `status:
            payment_arrears` means that an overdue invoice stopped the account
            (nobody paused it, and `reason` names the invoice), and
            `partner.resumed` with `previousStatus: payment_arrears` means that
            its payment ended that. A storage event carries `reason` and
            `checkedAt`. Content events (`composition.created`,
            `composition.updated`, `widget.published`, `upload.created`,
            `entry.created`, `workflow.created`, `workflow.published`,
            `workflow.state_changed`, `workflow.deleted`) go to your webhook
            only when subscribed; they do not appear in the dashboard list.
            `composition.created` carries `compositionId`, `widgetId`, `name`,
            `managedUserId`, `externalId` and `createdAt`; `composition.updated`
            carries `compositionId`, `widgetId`, `name`, `managedUserId`,
            `externalId`, `contentVersion` and `savedAt`, and is sent for the
            first save of a composition in each five minutes (read the
            composition for its current state); `widget.published` carries
            `widgetId`, `name`, `managedUserId`, `externalId`, `version` and
            `publishedAt`; `upload.created` carries `uploadId`, `name`,
            `mimeType`, `sizeBytes`, `address`, `managedUserId`, `externalId`,
            `purpose` and `createdAt`; `entry.created` carries `compositionId`,
            `table`, `entryId`, `createdAt` and `context` (the host attribution
            of the embedding page, or null), and none of the values the visitor
            entered: read those with the entries routes. The four workflow
            events are about the workflows your managed users make (only a
            workflow made for a managed user is told; one your own people made
            is not). `workflow.created` carries `workflowId`, `name`,
            `managedUserId`, `externalId`, `createdAt` and `presetKey` (the key
            you gave the starting point the workflow was started from with
            `setPartnerWorkflowPreset`, or null when it was drawn new or
            copied), and is sent for a copy of a workflow and for a start from a
            starting point too; `workflow.published` carries `workflowId`,
            `name`, `managedUserId`, `externalId`, `versionId`, `versionNumber`
            (1 for the first publication) and `publishedAt`;
            `workflow.state_changed` carries `workflowId`, `name`,
            `managedUserId`, `externalId`, `action` (`pause`, `resume`,
            `archive` or `unarchive`), `previousStatus` and `status` (each
            `draft`, `live`, `paused` or `archived`) and `changedAt`;
            `workflow.deleted` carries `workflowId`, `name`, `managedUserId`,
            `externalId`, `previousStatus` (the state it was in when it was
            deleted: `draft`, `live`, `paused` or `archived`) and `deletedAt`,
            and means that the workflow with its versions and counts is gone
            (the compositions it chained are not touched). Read the workflow for
            what it holds now (a deleted one is not found). Ignore an event type
            you do not know: more may be added.
            `sendPartnerNotificationTestEvent` sends a sample of every one of
            them.
        createdAt:
          type: string
          format: date-time
      example:
        id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        type: null
        title: Example title
        body: Example body
        tone: Example tone
        data: {}
        createdAt: '2026-01-15T09:30:00.000Z'
    PartnerNotificationEventType:
      type: string
      description: What happened. The event types you can be told about.
      enum:
        - invoice.issued
        - invoice.due_soon
        - invoice.overdue
        - invoice.paid
        - invoice.failed
        - credits.low
        - credits.managed_user_cap_reached
        - partner.activated
        - partner.paused
        - partner.resumed
        - storage.check_failed
        - composition.created
        - composition.updated
        - widget.published
        - upload.created
        - entry.created
        - workflow.created
        - workflow.published
        - workflow.state_changed
        - workflow.deleted
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

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