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

# Read monthly measured usage by project and meter

> Owner-only event-month ledger totals, including signed corrections posted by as_of. Returns up to 20 projects per page in ID order; use next_cursor with the same month. Current unresolved reservations are separate from measured consumption. Null environment_id means project-shared cost, never guessed Dev allocation. Only posted measurements are included; this is not a complete provider invoice or zero-usage guarantee. Billing may arrive later. No credit is granted or charged by this read; it remains usable at zero credits.



## OpenAPI

````yaml /openapi.json get /v1/organizations/{organization_id}/credit-usage
openapi: 3.1.2
info:
  title: ohmyho.st API
  version: 0.0.0
  description: >-
    Public REST API for ohmyho.st hosting, projects, domains, email, credits and
    exports.
servers:
  - url: https://app.ohmyho.st
    description: Production control API
  - url: https://dev.app.ohmyho.st
    description: Development control API
security:
  - BearerAuth: []
paths:
  /v1/organizations/{organization_id}/credit-usage:
    get:
      summary: Read monthly measured usage by project and meter
      description: >-
        Owner-only event-month ledger totals, including signed corrections
        posted by as_of. Returns up to 20 projects per page in ID order; use
        next_cursor with the same month. Current unresolved reservations are
        separate from measured consumption. Null environment_id means
        project-shared cost, never guessed Dev allocation. Only posted
        measurements are included; this is not a complete provider invoice or
        zero-usage guarantee. Billing may arrive later. No credit is granted or
        charged by this read; it remains usable at zero credits.
      operationId: getOrganizationCreditUsage
      parameters:
        - $ref: '#/components/parameters/RequestId'
        - name: organization_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ulid'
        - name: month
          in: query
          required: true
          schema:
            type: string
            pattern: ^20[0-9]{2}-(0[1-9]|1[0-2])$
        - name: cursor
          in: query
          schema:
            $ref: '#/components/schemas/Ulid'
      responses:
        '200':
          description: Current posted usage for the selected UTC month and project page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationCreditUsage'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/ResourceNotFound'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
components:
  parameters:
    RequestId:
      name: X-Request-Id
      in: header
      description: Optional caller-provided correlation identifier.
      required: false
      schema:
        type: string
        minLength: 1
        maxLength: 128
  schemas:
    Ulid:
      type: string
      pattern: ^[0-9A-HJKMNP-TV-Z]{26}$
    OrganizationCreditUsage:
      type: object
      additionalProperties: false
      required:
        - organization_id
        - month
        - as_of
        - unit
        - data
        - next_cursor
      properties:
        organization_id:
          $ref: '#/components/schemas/Ulid'
        month:
          type: string
          pattern: ^20[0-9]{2}-(0[1-9]|1[0-2])$
        as_of:
          type: string
          format: date-time
        unit:
          type: string
          const: microcredits
        next_cursor:
          oneOf:
            - $ref: '#/components/schemas/Ulid'
            - type: 'null'
        data:
          type: array
          maxItems: 20
          items:
            type: object
            additionalProperties: false
            required:
              - project_id
              - reserved_micros
              - meters
            properties:
              project_id:
                $ref: '#/components/schemas/Ulid'
              reserved_micros:
                $ref: '#/components/schemas/UsageTotal'
              meters:
                type: array
                maxItems: 1000
                items:
                  type: object
                  additionalProperties: false
                  required:
                    - environment_id
                    - meter
                    - unit
                    - rate_card_id
                    - quantity
                    - charged_micros
                    - funded_micros
                    - platform_overrun_micros
                  properties:
                    environment_id:
                      oneOf:
                        - $ref: '#/components/schemas/Ulid'
                        - type: 'null'
                    meter:
                      type: string
                      pattern: ^[A-Za-z0-9_.:/-]{1,128}$
                    unit:
                      type: string
                      pattern: ^[A-Za-z0-9_.:/-]{1,128}$
                    rate_card_id:
                      type: string
                      pattern: ^[A-Za-z0-9_.:/-]{1,128}$
                    quantity:
                      $ref: '#/components/schemas/UsageTotal'
                    charged_micros:
                      $ref: '#/components/schemas/UsageTotal'
                    funded_micros:
                      $ref: '#/components/schemas/UsageTotal'
                    platform_overrun_micros:
                      $ref: '#/components/schemas/UsageTotal'
    UsageTotal:
      type: string
      description: >-
        Non-negative integer aggregate, serialized exactly without
        floating-point rounding.
      pattern: ^(0|[1-9][0-9]{0,37})$
    ProblemDetails:
      type: object
      description: RFC 9457 Problem Details extended with stable ohmyhost recovery fields.
      additionalProperties: false
      required:
        - type
        - title
        - status
        - code
        - request_id
        - retryable
        - suggested_action
      properties:
        type:
          type: string
          format: uri-reference
        title:
          type: string
          minLength: 1
        status:
          type: integer
          minimum: 400
          maximum: 599
        detail:
          type: string
        instance:
          type: string
          format: uri-reference
        code:
          type: string
          enum:
            - invalid_request
            - unauthenticated
            - forbidden
            - resource_not_found
            - idempotency_key_reused
            - project_handle_unavailable
            - project_identity_unavailable
            - deployment_plan_expired
            - deployment_plan_incompatible
            - confirmation_expired
            - confirmation_invalid
            - etag_mismatch
            - promotion_source_stale
            - promotion_target_stale
            - promotion_invalid_target
            - mail_domain_conflict
            - mail_domain_required
            - framework_conversion_required
            - migration_filename_noncanonical
            - environment_secret_mutation_blocked
            - container_runtime_required
            - payload_too_large
            - rate_limited
            - insufficient_organization_credits
            - paid_plan_required
            - project_budget_exceeded
            - compute_performance_paid_required
            - compute_performance_unavailable
            - compute_change_pending
            - compute_change_conflict
            - billing_purchase_conflict
            - cloudflare_authorization_closed
            - project_notes_conflict
            - project_export_not_ready
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
        request_id:
          type: string
          minLength: 1
          maxLength: 128
        retryable:
          type: boolean
        retry_after_seconds:
          type: integer
          minimum: 1
          maximum: 86400
          description: >-
            Optional machine-readable retry delay for a rate limit, matching
            Retry-After.
        suggested_action:
          type: string
          minLength: 1
  responses:
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
    ResourceNotFound:
      description: >-
        The resource does not exist or is not visible to the authenticated
        principal.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          examples:
            resourceNotFound:
              value:
                type: https://docs.ohmyho.st/errors/resource-not-found
                title: Resource not found
                status: 404
                code: resource_not_found
                request_id: req_01J00000000000000000000000
                retryable: false
                suggested_action: Check the resource identifier and your access scope.
  headers:
    XRequestId:
      description: Correlates the request with operations, events, logs, and audit records.
      required: true
      schema:
        type: string
        minLength: 1
        maxLength: 128
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        WorkOS access JWT or a user-owned WorkOS API key. User keys are bound to
        one organization and restricted to their enabled product permissions.
        Session-only onboarding and session revocation require an interactive
        access JWT. No cookie session is assumed.

````