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

# Credit spend by day

> The workspace's credit spend over a REQUIRED period: spent (the confirmed debits), charged (their count, the units of work), granted and expired, counted by type, status, operation, day, product, feature, thing, container, person and starter. group_by created_date is the burn per day; filter.product with group_by container_sid reads a product by its tables or sender profiles, object_sid a table by its columns, actor_sid the people. The balance now is get_credit_lots_metrics.

Contract:
- MCP tool `get_credit_transactions_metrics`, registry package `mcp.id/credit_transactions`, mount `id.billing`.
- Operation `metrics`, response envelope `metrics`.
- Flags: read only.



## OpenAPI

````yaml /api-reference/id/openapi.yaml post /api/credit-transactions/metrics
openapi: 3.0.3
info:
  title: 'GetSales public contract: gs.service.id'
  description: >-
    The identity service: the signed-in account, its workspaces and their
    members, the sessions and the gtm-api workspaces a team reaches; the API
    keys, OAuth clients and standing consents; the Paddle billing of the pool a
    buyer holds (catalog, subscriptions, transactions, payment methods); the
    partner's surface (white label brands, their clients, the shares handed to
    workspaces, the certificates behind the brand domains); and the notification
    feed.


    GENERATED. This document is projected from the Zod MCP tool registry in
    `product/mcp/gs.mcp` (one tool per public endpoint, 1:1). Do not edit it by
    hand; edit the tool definition and regenerate with `pnpm openapi:public`.


    Surface: the public `/api` contract of `gs.service.id`, 88 operations. This
    is the only OpenAPI document the platform publishes. Internal (`/internal`)
    and health endpoints are deliberately absent: they are not part of any
    contract, they can change without notice, and the service source is their
    only description.


    Conventions:

    - Auth is a bearer JWT, optionally narrowed by the `Team-SID` header.

    - Every success body is an MCP envelope: `success: true` plus one typed
    `operation` shape (`search`, `get`, `create`, `update`, `delete`, `metrics`,
    `group_by`, `action`), and a `meta` block with `trace_id` for support.

    - Every failure is the same `McpError` envelope with a code from a fixed
    16-code taxonomy, so a client maps errors once.

    - Lists page with `page_size` (0 to 500, default 50) plus an opaque forward
    `cursor`; `page_size: 0` returns counts only.

    - On `GET` and `DELETE`, object-valued query parameters (`filter`, `sort`)
    travel as JSON text and array-valued ones repeat as `name[]=value`.

    - The MCP-only `_meta` field (usage analytics) never reaches the backend and
    is not part of this contract.
  version: '1.0'
  contact:
    name: GetSales
    url: https://getsales.io
    email: support@getsales.io
  license:
    name: Proprietary
    url: https://getsales.io/terms
servers:
  - url: https://beta.getsales.io/id/v1
    description: >-
      Production (the gateway path on the beta ring; the origin is provisioned
      per DEPLOY_MAP.md)
security:
  - BearerJwt: []
    TeamSid: []
tags:
  - name: api_keys
    description: Registry package `mcp.id/api_keys`, served on MCP mount `id.access`.
  - name: billing_payment_methods
    description: >-
      Registry package `mcp.id/billing_payment_methods`, served on MCP mount
      `id.billing`.
  - name: billing_products
    description: >-
      Registry package `mcp.id/billing_products`, served on MCP mount
      `id.billing`.
  - name: billing_subscriptions
    description: >-
      Registry package `mcp.id/billing_subscriptions`, served on MCP mount
      `id.billing`.
  - name: billing_transactions
    description: >-
      Registry package `mcp.id/billing_transactions`, served on MCP mount
      `id.billing`.
  - name: credit_lots
    description: Registry package `mcp.id/credit_lots`, served on MCP mount `id.billing`.
  - name: credit_transactions
    description: >-
      Registry package `mcp.id/credit_transactions`, served on MCP mount
      `id.billing`.
  - name: gtm_connections
    description: >-
      Registry package `mcp.id/gtm_connections`, served on MCP mount
      `id.identity`.
  - name: notifications
    description: >-
      Registry package `mcp.id/notifications`, served on MCP mount
      `id.notifications`.
  - name: oauth_authorizations
    description: >-
      Registry package `mcp.id/oauth_authorizations`, served on MCP mount
      `id.access`.
  - name: oauth_clients
    description: Registry package `mcp.id/oauth_clients`, served on MCP mount `id.access`.
  - name: sessions
    description: Registry package `mcp.id/sessions`, served on MCP mount `id.identity`.
  - name: ssl_certificates
    description: >-
      Registry package `mcp.id/ssl_certificates`, served on MCP mount
      `id.partner`.
  - name: subscription_allocations
    description: >-
      Registry package `mcp.id/subscription_allocations`, served on MCP mount
      `id.partner`.
  - name: team_members
    description: Registry package `mcp.id/team_members`, served on MCP mount `id.identity`.
  - name: teams
    description: Registry package `mcp.id/teams`, served on MCP mount `id.identity`.
  - name: user_profiles
    description: >-
      Registry package `mcp.id/user_profiles`, served on MCP mount
      `id.identity`.
  - name: users
    description: Registry package `mcp.id/users`, served on MCP mount `id.identity`.
  - name: whitelabel_clients
    description: >-
      Registry package `mcp.id/whitelabel_clients`, served on MCP mount
      `id.partner`.
  - name: whitelabels
    description: Registry package `mcp.id/whitelabels`, served on MCP mount `id.partner`.
  - name: workspace_profiles
    description: >-
      Registry package `mcp.id/workspace_profiles`, served on MCP mount
      `id.identity`.
paths:
  /api/credit-transactions/metrics:
    post:
      tags:
        - credit_transactions
      summary: Credit spend by day
      description: >-
        The workspace's credit spend over a REQUIRED period: spent (the
        confirmed debits), charged (their count, the units of work), granted and
        expired, counted by type, status, operation, day, product, feature,
        thing, container, person and starter. group_by created_date is the burn
        per day; filter.product with group_by container_sid reads a product by
        its tables or sender profiles, object_sid a table by its columns,
        actor_sid the people. The balance now is get_credit_lots_metrics.


        Contract:

        - MCP tool `get_credit_transactions_metrics`, registry package
        `mcp.id/credit_transactions`, mount `id.billing`.

        - Operation `metrics`, response envelope `metrics`.

        - Flags: read only.
      operationId: get_credit_transactions_metrics
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetCreditTransactionsMetricsRequest'
      responses:
        '200':
          description: '`metrics` success envelope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCreditTransactionsMetricsResponse'
        4XX:
          $ref: '#/components/responses/McpClientError'
        5XX:
          $ref: '#/components/responses/McpServerError'
components:
  schemas:
    GetCreditTransactionsMetricsRequest:
      type: object
      description: Request body of `get_credit_transactions_metrics`.
      properties:
        filter:
          type: object
          properties:
            kind:
              type: string
              enum:
                - platform
              description: The wallet axis; platform is the one kind, the default.
            type:
              type: string
              enum:
                - allocation
                - debit
                - refund
                - expiry
              description: One movement type.
            status:
              type: string
              enum:
                - pending
                - confirmed
                - released
                - expired
              description: One status.
            operation:
              type: string
              maxLength: 64
              description: >-
                One wallet operation label (gtm_tool_call, llm.generate,
                ai_sdr_turn, creator_turn...).
            product:
              type: string
              enum:
                - playtables
                - ai_sdr
                - creator
                - voice
              description: >-
                One product: playtables (the columns, the searches, the work
                emails), ai_sdr (the agent), creator (its chats), voice
                (dictation and a voice message).
            feature:
              type: string
              pattern: ^[a-z][a-z0-9_]{0,31}$
              description: >-
                One kind of work in the product's own word: use_ai, ai_search,
                enrichment, email_find, dialog_reply, draft, knowledge, chat,
                dictation...
            object_sid:
              type: string
              minLength: 18
              maxLength: 18
              description: >-
                One thing: a column (pt_fd_), a data source (ds_sc_), a
                conversation (ub_cv_), a Creator chat (ct_ss_).
            container_sid:
              type: string
              minLength: 18
              maxLength: 18
              description: >-
                One holder of things: a playtable (pt_tb_), a sender profile
                (ub_sp_).
            actor_sid:
              type: string
              minLength: 18
              maxLength: 18
              description: >-
                One person (us_mb_) the credits count for: who ran it, who asked
                Creator, who set up the column that runs on new rows.
            started_by:
              type: string
              enum:
                - user
                - creator
                - api
                - automation
                - agent
                - lead
              description: >-
                Who set it going: user, creator (for a person), api, automation
                (a column on new rows), agent (the AI SDR by itself), lead (a
                voice message).
          description: >-
            Scopes the rows the metrics are computed over: the search filter
            operators. Omit for all rows.
        period:
          type: object
          properties:
            from:
              type: string
              description: ISO 8601 UTC window start (inclusive).
            to:
              type: string
              description: ISO 8601 UTC window end (exclusive); must be >= from.
          required:
            - from
            - to
          description: >-
            Required. Half-open [from, to) window on created_at, the UTC day a
            movement belongs to (a hold is born at reserve and captured inside
            its 15 minutes).
        group_by:
          type: string
          enum:
            - type
            - status
            - operation
            - created_date
            - product
            - feature
            - object_sid
            - container_sid
            - actor_sid
            - started_by
          description: >-
            One axis: created_date (the burn per UTC day), product,
            container_sid (tables, sender profiles), object_sid (columns,
            chats), actor_sid (people), feature, started_by, operation, type or
            status; adds groups[] with counts and metrics. Cap 500.
      required:
        - period
    GetCreditTransactionsMetricsResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        operation:
          type: string
          enum:
            - metrics
        metrics:
          type: object
          properties:
            filter:
              anyOf:
                - type: object
                  additionalProperties: {}
                - type: array
                  items: {}
              description: Echo of the kind and the pinned axis values the numbers are for.
            period:
              type: object
              properties:
                from:
                  type: string
                to:
                  type: string
              required:
                - from
                - to
            aggregated:
              type: object
              properties:
                counts:
                  type: object
                  properties:
                    total_count:
                      type: integer
                      minimum: 0
                      description: 'Movements in [from, to): every type and status.'
                    groups:
                      type: object
                      properties:
                        type:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {type: rows}: allocation | debit | refund |
                            expiry.
                        status:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {status: rows}: pending (a hold in flight) |
                            confirmed | released (a hold voided) | expired (a
                            hold that lapsed).
                        operation:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {operation: rows}: what spent, gtm_tool_call (a
                            column), find_people_search (a Find people walk),
                            creator_turn (the Creator); "" for rows that carry
                            none.
                        created_date:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {'YYYY-MM-DD': rows}: movements per UTC day of
                            created_at.
                        product:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {product: rows}: playtables | ai_sdr | creator
                            | voice; "" for a movement that says nothing (an
                            allocation, an expiry, a debit before 2026-10-23).
                        feature:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {feature: rows}: the kind of work in the
                            product's own word.
                        object_sid:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: 'Flat {sid: rows}: the thing the movement belongs to.'
                        container_sid:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {sid: rows}: the playtable or the sender
                            profile that holds the thing.
                        actor_sid:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: 'Flat {sid: rows}: the person the credits count for.'
                        started_by:
                          anyOf:
                            - type: object
                              additionalProperties:
                                type: integer
                                minimum: 0
                            - type: array
                              items: {}
                          description: >-
                            Flat {starter: rows}: user | creator | api |
                            automation | agent | lead.
                      required:
                        - type
                        - status
                        - operation
                        - created_date
                        - product
                        - feature
                        - object_sid
                        - container_sid
                        - actor_sid
                        - started_by
                      description: >-
                        One axis per CreditTransactionGroupableFieldsEnum value:
                        row counts, never credits.
                  required:
                    - total_count
                    - groups
                metrics:
                  type: object
                  properties:
                    spent:
                      type: number
                      minimum: 0
                      description: >-
                        Credits the confirmed debits took in [from, to), two
                        decimals (five 0.1 verifications are 0.5): a pending
                        hold is reserved, not spent; a released or expired hold
                        never left the wallet.
                    granted:
                      type: number
                      minimum: 0
                      description: >-
                        Credits the confirmed allocations and refunds brought in
                        [from, to).
                    expired:
                      type: number
                      minimum: 0
                      description: >-
                        Credits that lapsed unspent in [from, to): a period's
                        lot dies with the period.
                    charged:
                      type: integer
                      minimum: 0
                      description: >-
                        How many confirmed debits there were: the units of work
                        paid for (a cell, a page, a found address, a turn is one
                        each); a count of all debit rows would read the voided
                        holds too.
                  required:
                    - spent
                    - granted
                    - expired
                    - charged
              required:
                - counts
                - metrics
            groups:
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                    nullable: true
                    description: >-
                      Value of the group_by axis: a 'YYYY-MM-DD' day, a type, a
                      status, an operation, a product, a feature, a sid or a
                      starter; null = rows without a value on the axis (an
                      allocation has no operation, no product).
                  counts:
                    type: object
                    properties:
                      total_count:
                        type: integer
                        minimum: 0
                        description: 'Movements in [from, to): every type and status.'
                      groups:
                        type: object
                        properties:
                          type:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {type: rows}: allocation | debit | refund |
                              expiry.
                          status:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {status: rows}: pending (a hold in flight) |
                              confirmed | released (a hold voided) | expired (a
                              hold that lapsed).
                          operation:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {operation: rows}: what spent, gtm_tool_call
                              (a column), find_people_search (a Find people
                              walk), creator_turn (the Creator); "" for rows
                              that carry none.
                          created_date:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {'YYYY-MM-DD': rows}: movements per UTC day
                              of created_at.
                          product:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {product: rows}: playtables | ai_sdr |
                              creator | voice; "" for a movement that says
                              nothing (an allocation, an expiry, a debit before
                              2026-10-23).
                          feature:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {feature: rows}: the kind of work in the
                              product's own word.
                          object_sid:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {sid: rows}: the thing the movement belongs
                              to.
                          container_sid:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {sid: rows}: the playtable or the sender
                              profile that holds the thing.
                          actor_sid:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {sid: rows}: the person the credits count
                              for.
                          started_by:
                            anyOf:
                              - type: object
                                additionalProperties:
                                  type: integer
                                  minimum: 0
                              - type: array
                                items: {}
                            description: >-
                              Flat {starter: rows}: user | creator | api |
                              automation | agent | lead.
                        required:
                          - type
                          - status
                          - operation
                          - created_date
                          - product
                          - feature
                          - object_sid
                          - container_sid
                          - actor_sid
                          - started_by
                        description: >-
                          One axis per CreditTransactionGroupableFieldsEnum
                          value: row counts, never credits.
                    required:
                      - total_count
                      - groups
                  metrics:
                    type: object
                    properties:
                      spent:
                        type: number
                        minimum: 0
                        description: >-
                          Credits the confirmed debits took in [from, to), two
                          decimals (five 0.1 verifications are 0.5): a pending
                          hold is reserved, not spent; a released or expired
                          hold never left the wallet.
                      granted:
                        type: number
                        minimum: 0
                        description: >-
                          Credits the confirmed allocations and refunds brought
                          in [from, to).
                      expired:
                        type: number
                        minimum: 0
                        description: >-
                          Credits that lapsed unspent in [from, to): a period's
                          lot dies with the period.
                      charged:
                        type: integer
                        minimum: 0
                        description: >-
                          How many confirmed debits there were: the units of
                          work paid for (a cell, a page, a found address, a turn
                          is one each); a count of all debit rows would read the
                          voided holds too.
                    required:
                      - spent
                      - granted
                      - expired
                      - charged
                required:
                  - key
                  - counts
                  - metrics
              description: >-
                Present only when group_by was set: one entry per axis value in
                the window, ascending by key.
          required:
            - period
            - aggregated
        applied_filters:
          type: object
          additionalProperties: {}
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - operation
        - metrics
        - meta
    McpError:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_failed
                - nothing_to_update
                - not_found
                - relation_not_found
                - invalid_transition
                - limit_exceeded
                - payment_required
                - duplicate_rejected
                - conflict
                - delete_blocked
                - unauthorized
                - forbidden
                - rate_limited
                - internal_error
                - service_unavailable
                - not_implemented
            message:
              type: string
            recoverable:
              type: boolean
            suggestion:
              type: string
            field_errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
                  properties:
                    rule:
                      type: string
                    message:
                      type: string
                  required:
                    - rule
                    - message
            blockers:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: >-
                      Machine-readable blocker type (active_flow, pending_tasks,
                      …).
                  severity:
                    type: string
                    enum:
                      - hard
                      - soft
                    description: >-
                      hard = external action required; soft = acknowledge is
                      enough.
                  description:
                    type: string
                  entity_sid:
                    type: string
                    nullable: true
                  count:
                    type: integer
                  resolution:
                    type: string
                    description: 'Hard: tool name to call. Soft: code for acknowledge[].'
                  resolution_hint:
                    type: string
                required:
                  - type
                  - severity
                  - description
                  - entity_sid
                  - resolution
                  - resolution_hint
            context:
              type: object
              additionalProperties: {}
          required:
            - code
            - message
            - recoverable
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            team_sid:
              type: string
              nullable: true
              description: >-
                The team this call ran in (the token team, or the team_sid
                override). Null when unauthenticated; absent from pre-2026-08-20
                backends.
            actor_type:
              type: string
              nullable: true
              description: >-
                user | agent | api_key | system. Null when unauthenticated;
                absent from pre-2026-08-20 backends.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
      required:
        - success
        - error
  responses:
    McpClientError:
      description: >-
        MCP error envelope. `error.code` is one of validation_failed,
        nothing_to_update, not_found, relation_not_found, invalid_transition,
        limit_exceeded, payment_required, duplicate_rejected, conflict,
        delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
    McpServerError:
      description: >-
        MCP error envelope with `error.code` internal_error or
        service_unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
  securitySchemes:
    BearerJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token issued by gs.service.id. Its `access_identity` claim
        carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is
        authoritative.
    TeamSid:
      type: apiKey
      in: header
      name: Team-SID
      description: >-
        Team scope for tokens that do not carry one. Ignored when the token
        already names a team.

````

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