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

> ## Agent Instructions
> For account actions, read https://ohmyho.st/skills/ohmyhost-get-started/SKILL.md and use the authenticated ohmyho.st CLI or local product MCP. Mintlify search only reads documentation. Preserve the customer’s selected project, environment and authentication provider.

# Complete the bound GitHub browser authorization

> Browser callback only. Revalidates the original user session or user API key, workspace Owner/Admin authority and authorization expiry, then privately verifies the GitHub account and installation. A valid installation callback without an OAuth code continues automatically through OAuth. Completion records the workspace connection without building or returning provider credentials. Previously issued project authorizations remain supported during rollout.



## OpenAPI

````yaml /openapi.json get /v1/github/oauth/callback
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/github/oauth/callback:
    get:
      summary: Complete the bound GitHub browser authorization
      description: >-
        Browser callback only. Revalidates the original user session or user API
        key, workspace Owner/Admin authority and authorization expiry, then
        privately verifies the GitHub account and installation. A valid
        installation callback without an OAuth code continues automatically
        through OAuth. Completion records the workspace connection without
        building or returning provider credentials. Previously issued project
        authorizations remain supported during rollout.
      operationId: completeGithubSourceAuthorization
      parameters:
        - name: state
          in: query
          required: true
          schema:
            type: string
            maxLength: 70
        - name: code
          in: query
          schema:
            type: string
            maxLength: 4096
        - name: error
          in: query
          schema:
            type: string
            maxLength: 256
        - name: error_description
          in: query
          schema:
            type: string
            maxLength: 4096
        - name: iss
          in: query
          description: GitHub authorization-response issuer, checked exactly when supplied.
          schema:
            type: string
            enum:
              - https://github.com/login/oauth
        - name: installation_id
          in: query
          schema:
            type: string
            pattern: ^[1-9][0-9]{0,19}$
        - name: setup_action
          in: query
          schema:
            type: string
            enum:
              - install
              - update
              - request
      responses:
        '303':
          description: >-
            Return to the same platform entry without the OAuth code/state in
            the URL.
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/Problem'
        '403':
          description: >-
            The authorizing GitHub account lacks the required installation
            access or account authority.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
      security: []
components:
  responses:
    Problem:
      description: The request failed.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
  schemas:
    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
            - organization_required
            - 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
            - mail_capacity_unavailable
            - storage_jurisdiction_conflict
            - shared_data_requires_promotion
            - production_deployment_required
            - framework_conversion_required
            - repository_configuration_missing
            - migration_filename_noncanonical
            - environment_secret_mutation_blocked
            - workers_runtime_incompatible
            - project_handle_invalid
            - project_handle_taken
            - project_handle_unchanged
            - project_rename_blocked
            - payload_too_large
            - rate_limited
            - insufficient_organization_credits
            - paid_plan_required
            - project_budget_exceeded
            - compute_performance_paid_required
            - compute_performance_unavailable
            - database_write_pending
            - database_access_limit
            - compute_change_pending
            - compute_change_conflict
            - billing_purchase_conflict
            - billing_recharge_conflict
            - github_connection_required
            - github_connection_revoked
            - repository_not_installed
            - cloudflare_zone_not_bound
            - cloudflare_authorization_closed
            - project_notes_conflict
            - project_export_not_ready
            - powered_by_flag_required
            - interactive_login_required
            - api_key_creation_uncertain
            - api_key_permissions_unavailable
            - reconciliation_exhausted
            - service_unavailable
            - source_commit_not_found
            - domain_hostname_taken
            - domain_dns_conflict
            - data_change_blocked
            - data_change_in_progress
            - data_change_not_applicable
            - rollback_target_data_changed
            - project_domain_delete_required
        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
  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.

````

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