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

# Sign in from GitHub Actions

> Exchanges a GitHub Actions OIDC token (audience https://api.costgraph.ai) for a CostGraph token that lasts until the OIDC token expires, at most one hour. The organization that owns the repository must be connected to CostGraph through the GitHub App. The CostGraph token can choose runners for that workflow run, read CI cost for that one repository and look up prices; send it as the X-API-Key header.



## OpenAPI

````yaml /api-reference/costgraph/openapi.json post /api/v1/ci/github-actions/token
openapi: 3.0.0
info:
  description: Read and manage your CostGraph organization, spend, alerts, and settings.
  title: CostGraph API
  contact: {}
  version: '1.0'
servers:
  - url: https://api.costgraph.ai
security: []
tags:
  - name: ai
    x-group: AI
  - name: ai-serving
    x-group: AI serving
  - name: anomalies
    x-group: Anomalies
  - name: auth
    x-group: Auth
  - name: billing
    x-group: Billing
  - name: billing-export
    x-group: Billing export
  - name: budgets
    x-group: Budgets
  - name: ci
    x-group: CI
  - name: compute-recommendations
    x-group: Compute recommendations
  - name: config
    x-group: Config
  - name: context-graph
    x-group: Context graph
  - name: cost
    x-group: Cost
  - name: gpus
    x-group: GPUs
  - name: graphai
    x-group: Graph AI
  - name: integrations
    x-group: Integrations
  - name: invitations
    x-group: Invitations
  - name: kubernetes-clusters
    x-group: Kubernetes clusters
  - name: marketplace
    x-group: Marketplace
  - name: network
    x-group: Network
  - name: network-requests
    x-group: Network requests
  - name: notifications
    x-group: Notifications
  - name: oauth
    x-group: OAuth
  - name: oauth-clients
    x-group: OAuth clients
  - name: opencost
    x-group: OpenCost
  - name: organization
    x-group: Audit log
  - name: organizations
    x-group: Organizations
  - name: placement-alternatives
    x-group: Placement alternatives
  - name: reports
    x-group: Reports
  - name: settings
    x-group: Settings
  - name: sso
    x-group: Single sign-on
  - name: tenants
    x-group: Tenants
  - name: ticketing
    x-group: Ticketing
  - name: user
    x-group: Users
  - name: virtual-machines
    x-group: Virtual machines
  - name: virtual-tags
    x-group: Virtual tags
  - name: workflows
    x-group: Workflows
paths:
  /api/v1/ci/github-actions/token:
    post:
      tags:
        - ci
      summary: Sign in from GitHub Actions
      description: >-
        Exchanges a GitHub Actions OIDC token (audience
        https://api.costgraph.ai) for a CostGraph token that lasts until the
        OIDC token expires, at most one hour. The organization that owns the
        repository must be connected to CostGraph through the GitHub App. The
        CostGraph token can choose runners for that workflow run, read CI cost
        for that one repository and look up prices; send it as the X-API-Key
        header.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ci.TokenExchangeRequest'
        description: GitHub Actions OIDC token
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/responses.SuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/ci.TokenExchangeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
components:
  schemas:
    ci.TokenExchangeRequest:
      type: object
      required:
        - token
      properties:
        token:
          type: string
    responses.SuccessResponse:
      type: object
      required:
        - message
        - status
      properties:
        data: {}
        message:
          type: string
          example: some message
        status:
          type: string
          example: success
    ci.TokenExchangeResponse:
      type: object
      required:
        - expires_at
        - token
      properties:
        expires_at:
          type: string
        token:
          type: string
    responses.ErrorResponse:
      type: object
      required:
        - message
        - status
      properties:
        message:
          type: string
          example: some message
        status:
          type: string
          example: error

````

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