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

# Read GitHub Actions cost and savings estimates

> Returns the shared onboarding/monthly report for connected repositories. Benchmark projections are separate from measured before/after comparisons.



## OpenAPI

````yaml https://api.ravion.com/openapi.yaml get /github/actions/usage/report
openapi: 3.0.0
info:
  title: Ravion
  version: 0.0.0
servers:
  - url: https://api.ravion.com
security:
  - BearerAuth: []
tags:
  - name: Projects
  - name: Environments
  - name: FeatureFlags
  - name: Pipelines
  - name: PipelineRuns
  - name: TerraformResources
  - name: TerraformExecutionSummaries
  - name: PipelineStepExecutions
  - name: AwsCloudWatch
  - name: PipelineVersions
  - name: Organizations
  - name: Stacks
  - name: StackWorkspaces
  - name: Auth
  - name: OAuth
  - name: User
  - name: Health
  - name: Memberships
  - name: ServiceAccounts
  - name: Integrations
  - name: AwsDefaultNetworks
  - name: AwsAccounts
  - name: ApiKeys
  - name: AwsAmp
  - name: EksPrometheus
  - name: EksLoki
  - name: ExecutionEnvironments
  - name: ModuleDefinitions
  - name: ModuleCategories
  - name: ModuleVersions
  - name: ModuleInstances
  - name: DefaultValueDefinitions
  - name: DefaultValues
  - name: CodeSources
  - name: Github
  - name: GitHub Actions
  - name: Gitlab
  - name: Git
  - name: Values
  - name: Deployments
  - name: DeploymentResources
  - name: InfrastructureEvents
  - name: WebSocket
  - name: Domains
  - name: AcmCertificates
  - name: Describe
  - name: Reports
  - name: BillingPlans
  - name: BillingAccounts
  - name: BillingCycles
  - name: BillingUsageSummaries
  - name: BillingAddOns
  - name: BillingInvoices
  - name: Authorization
paths:
  /github/actions/usage/report:
    get:
      tags:
        - GitHub Actions
      summary: Read GitHub Actions cost and savings estimates
      description: >-
        Returns the shared onboarding/monthly report for connected repositories.
        Benchmark projections are separate from measured before/after
        comparisons. Costs are estimates before account-wide discounts and
        credits, not invoice charges.
      operationId: GetGithubActionsUsageReport
      parameters:
        - in: query
          name: period
          schema:
            enum:
              - latest
              - previous_month
            nullable: true
            type: string
        - in: query
          name: organizationId
          schema:
            nullable: true
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    $ref: '#/components/schemas/GithubActionsUsage.Report'
                  retryAfterSeconds:
                    format: int32
                    type: integer
                  stale:
                    type: boolean
                required:
                  - data
                type: object
          description: The request has succeeded.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: The request is invalid or malformed.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You are not authenticated
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: You do not have permission to access this resource.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: The server cannot find the requested resource.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: Client error
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors.UserFacingErrorData'
          description: Server error
components:
  schemas:
    GithubActionsUsage.Report:
      additionalProperties: false
      properties:
        assumptions:
          items:
            type: string
          type: array
        generatedAt:
          type: string
        id:
          type: string
        jobCount:
          format: int32
          type: integer
        jobs:
          items:
            $ref: '#/components/schemas/GithubActionsUsage.JobReport'
          type: array
        measured:
          $ref: '#/components/schemas/GithubActionsUsage.Summary'
        periodEnd:
          type: string
        periodStart:
          type: string
        pricingVersion:
          type: string
        projection:
          allOf:
            - $ref: '#/components/schemas/GithubActionsUsage.Projection'
          nullable: true
          type: object
        projectionJobs:
          format: int32
          type: integer
        ravionJobs:
          format: int32
          type: integer
        repositories:
          items:
            $ref: '#/components/schemas/GithubActionsUsage.RepositoryCoverage'
          type: array
        status:
          type: string
        unpricedJobs:
          format: int32
          type: integer
      required:
        - id
        - status
        - periodStart
        - periodEnd
        - generatedAt
        - pricingVersion
        - repositories
        - jobs
        - jobCount
        - unpricedJobs
        - projectionJobs
        - ravionJobs
        - projection
        - measured
        - assumptions
      type: object
    Errors.UserFacingErrorData:
      additionalProperties: false
      description: |-
        User-facing error presentation data.
        This is what the API returns to the frontend after formatting ErrorData
        using CEL templates from the error registry.

        Used for both:
        - Error fields on domain models (e.g., PipelineRun.error)
        - API error response bodies (HTTP 4xx/5xx responses)
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Errors.Action'
          description: Optional action to help resolve the error
        code:
          description: Full error code, e.g., "Ravion:Pipeline:NOT_FOUND"
          type: string
        description:
          description: Additional description with more details
          type: string
        details:
          description: Structured details rendered as user-facing sections.
          items:
            $ref: '#/components/schemas/Errors.UserFacingErrorDetailSection'
          type: array
        isInternal:
          description: >-
            Indicates whether this error is internal (only set when
            ShowInternal=true).

            This allows SUPERADMINs to identify internal errors while viewing
            full details.
          type: boolean
        message:
          description: Main error message (required)
          type: string
        metadata:
          additionalProperties: {}
          description: >-
            Error params/metadata. Stripped for internal errors unless
            superadmin.
          type: object
        requestId:
          description: Request ID for correlating errors with server logs.
          type: string
      required:
        - code
        - message
      type: object
    GithubActionsUsage.JobReport:
      additionalProperties: false
      properties:
        baseline:
          allOf:
            - $ref: '#/components/schemas/GithubActionsUsage.Calibration'
          nullable: true
          type: object
        comparedJobs:
          format: int32
          type: integer
        current:
          $ref: '#/components/schemas/GithubActionsUsage.Stats'
        family:
          type: string
        name:
          type: string
        previousUsd:
          format: double
          nullable: true
          type: number
        ravionUsd:
          format: double
          nullable: true
          type: number
        repository:
          type: string
        workflow:
          type: string
      required:
        - family
        - repository
        - workflow
        - name
        - current
        - baseline
        - ravionUsd
        - comparedJobs
        - previousUsd
      type: object
    GithubActionsUsage.Summary:
      additionalProperties: false
      properties:
        comparedJobs:
          format: int32
          type: integer
        jobs:
          format: int32
          type: integer
        previousUsd:
          format: double
          type: number
        ravionUsd:
          format: double
          nullable: true
          type: number
        savingsPercent:
          format: double
          nullable: true
          type: number
        savingsUsd:
          format: double
          nullable: true
          type: number
        sendEligible:
          type: boolean
      required:
        - jobs
        - comparedJobs
        - previousUsd
        - ravionUsd
        - savingsUsd
        - savingsPercent
        - sendEligible
      type: object
    GithubActionsUsage.Projection:
      additionalProperties: false
      properties:
        githubUsd:
          format: double
          type: number
        method:
          type: string
        ravionUsd:
          format: double
          type: number
        savingsUsd:
          format: double
          type: number
        speedup:
          format: double
          type: number
      required:
        - githubUsd
        - ravionUsd
        - savingsUsd
        - speedup
        - method
      type: object
    GithubActionsUsage.RepositoryCoverage:
      additionalProperties: false
      properties:
        coverageStart:
          type: string
        products:
          items:
            type: string
          type: array
        repository:
          type: string
        repositoryId:
          type: string
        status:
          type: string
        syncedThrough:
          nullable: true
          type: string
      required:
        - repositoryId
        - repository
        - products
        - status
        - coverageStart
        - syncedThrough
      type: object
    Errors.Action:
      additionalProperties: false
      description: Action to help user resolve the error
      properties:
        label:
          description: Button/link label text
          type: string
        url:
          description: URL to navigate to for resolution
          type: string
      required:
        - label
        - url
      type: object
    Errors.UserFacingErrorDetailSection:
      additionalProperties: false
      description: Structured user-facing error detail section.
      properties:
        items:
          description: List of detail values for this section.
          items:
            type: string
          type: array
        object:
          additionalProperties: {}
          description: Structured detail payload for object rendering.
          type: object
        render:
          description: Rendering hint for clients. Valid values are list or object.
          type: string
        title:
          description: Detail section title shown in the UI.
          type: string
      required:
        - title
        - render
      type: object
    GithubActionsUsage.Calibration:
      additionalProperties: false
      properties:
        after:
          $ref: '#/components/schemas/GithubActionsUsage.Stats'
        afterRunner:
          type: string
        before:
          $ref: '#/components/schemas/GithubActionsUsage.Stats'
        beforeRate:
          $ref: '#/components/schemas/GithubActionsUsage.Rate'
        calibrationEnd:
          type: string
        family:
          type: string
        historicalSeconds:
          format: double
          type: number
        migrationAt:
          type: string
        speedup:
          format: double
          nullable: true
          type: number
        status:
          type: string
      required:
        - family
        - status
        - migrationAt
        - calibrationEnd
        - before
        - after
        - beforeRate
        - afterRunner
        - historicalSeconds
        - speedup
      type: object
    GithubActionsUsage.Stats:
      additionalProperties: false
      properties:
        cancelled:
          format: int32
          type: integer
        failed:
          format: int32
          type: integer
        grossUsd:
          format: double
          type: number
        jobs:
          format: int32
          type: integer
        medianQueueSeconds:
          format: double
          nullable: true
          type: number
        medianRuntimeSeconds:
          format: double
          type: number
        rerunJobs:
          format: int32
          type: integer
        runtimeSeconds:
          format: double
          type: number
        unpricedJobs:
          format: int32
          type: integer
      required:
        - jobs
        - failed
        - cancelled
        - rerunJobs
        - runtimeSeconds
        - medianRuntimeSeconds
        - medianQueueSeconds
        - grossUsd
        - unpricedJobs
      type: object
    GithubActionsUsage.Rate:
      additionalProperties: false
      properties:
        architecture:
          type: string
        freePublic:
          type: boolean
        os:
          type: string
        provider:
          type: string
        quantumSeconds:
          format: int32
          type: integer
        runner:
          type: string
        source:
          type: string
        usdPerMinute:
          format: double
          nullable: true
          type: number
        version:
          type: string
      required:
        - provider
        - runner
        - version
        - usdPerMinute
        - quantumSeconds
        - freePublic
      type: object
  securitySchemes:
    BearerAuth:
      scheme: Bearer
      type: http

````

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