> ## 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.

# Choose what a connection is used for

> Sets the uses CostGraph may make of a connection: cost reads its bill, metrics reads host metrics through it. Turning metrics off keeps its settings, so turning it on again needs no new setup. Turning metrics on needs the connection to have metrics settings, which a Grafana connection has and a Grafana Cloud cost connection gets through POST /api/v1/integrations/grafana/from-connection/{id}; otherwise it answers 422. Cost cannot be switched off yet: a connection that reads a bill must keep cost, and one that does not cannot add it. A metrics-only Grafana connection accepts only metrics. At least one use must be chosen. The caller must be an organization owner, admin or billing admin.



## OpenAPI

````yaml /api-reference/costgraph/openapi.json patch /api/v1/integrations/{id}/modes
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-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: service-map
    x-group: Service map
  - 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/integrations/{id}/modes:
    patch:
      tags:
        - integrations
      summary: Choose what a connection is used for
      description: >-
        Sets the uses CostGraph may make of a connection: cost reads its bill,
        metrics reads host metrics through it. Turning metrics off keeps its
        settings, so turning it on again needs no new setup. Turning metrics on
        needs the connection to have metrics settings, which a Grafana
        connection has and a Grafana Cloud cost connection gets through POST
        /api/v1/integrations/grafana/from-connection/{id}; otherwise it answers
        422. Cost cannot be switched off yet: a connection that reads a bill
        must keep cost, and one that does not cannot add it. A metrics-only
        Grafana connection accepts only metrics. At least one use must be
        chosen. The caller must be an organization owner, admin or billing
        admin.
      parameters:
        - description: >-
            Connection id from the id field of the connection list, not the fpc_
            connection_id
          name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/integrations.connectionModesRequest'
        description: Connection uses
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/responses.SuccessResponse'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/integrations.connectionResponse'
        '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'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses.ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    integrations.connectionModesRequest:
      type: object
      required:
        - connection_modes
      properties:
        connection_modes:
          type: array
          minItems: 1
          items:
            type: string
            enum:
              - cost
              - metrics
    responses.SuccessResponse:
      type: object
      required:
        - message
        - status
      properties:
        data: {}
        message:
          type: string
          example: some message
        status:
          type: string
          example: success
    integrations.connectionResponse:
      type: object
      properties:
        ci_history:
          $ref: '#/components/schemas/integrations.ciHistory'
        connection_id:
          type: string
        connection_modes:
          type: array
          items:
            type: string
            enum:
              - cost
              - metrics
              - workflows
        created_at:
          type: string
        display_name:
          type: string
        has_metrics_source:
          type: boolean
          nullable: true
        id:
          type: string
        ingest_mode:
          type: string
          enum:
            - pull
            - push
            - telemetry
            - export
            - automation
            - ticketing
            - mcp
            - query
        last_sync_error:
          type: string
        last_synced_at:
          type: string
        needs_service_token:
          type: boolean
        provider:
          type: string
        provider_account_id:
          type: string
        recommendations_checked_at:
          type: string
        recommendations_status:
          type: string
        status:
          type: string
        tenant_id:
          type: string
        updated_at:
          type: string
        warnings:
          type: array
          items:
            type: string
    responses.ErrorResponse:
      type: object
      required:
        - message
        - status
      properties:
        message:
          type: string
          example: some message
        status:
          type: string
          example: error
    integrations.ciHistory:
      type: object
      properties:
        days_loaded:
          type: integer
        days_total:
          type: integer
  securitySchemes:
    BearerAuth:
      description: Enter "Bearer {token}"
      type: apiKey
      name: Authorization
      in: header

````

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