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

# Github Callback

> Complete the GitHub OAuth flow.

The frontend calls this after GitHub redirects back to the callback page
with a temporary `code`. This endpoint:
  1. Validates the CSRF ``state`` against the server-side store
  2. Exchanges the code for an access token
  3. Fetches the GitHub user profile
  4. Upserts the integration row for the current user
  5. Returns basic integration info (never the raw token)



## OpenAPI

````yaml /api-reference/openapi.json post /api/integrations/github/callback
openapi: 3.1.0
info:
  title: apowerb API
  description: REST API of the apowerb agentic framework (open-source edition).
  version: 0.1.2
  license:
    name: MIT
    url: https://github.com/apowerb/apowerb/blob/main/LICENSE
servers:
  - url: https://api.example.com
    description: Your apowerb instance
  - url: http://localhost:8000
    description: Local stack
security: []
paths:
  /api/integrations/github/callback:
    post:
      tags:
        - integrations
      summary: Github Callback
      description: |-
        Complete the GitHub OAuth flow.

        The frontend calls this after GitHub redirects back to the callback page
        with a temporary `code`. This endpoint:
          1. Validates the CSRF ``state`` against the server-side store
          2. Exchanges the code for an access token
          3. Fetches the GitHub user profile
          4. Upserts the integration row for the current user
          5. Returns basic integration info (never the raw token)
      operationId: github_callback_api_integrations_github_callback_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GitHubCallbackRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    GitHubCallbackRequest:
      properties:
        code:
          type: string
          title: Code
        state:
          type: string
          title: State
      type: object
      required:
        - code
        - state
      title: GitHubCallbackRequest
      description: Payload the frontend POSTs after GitHub redirects back.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

## Related topics

- [Integrations](/guides/integrations.md)
- [Github Connect](/api-reference/integrations/github-connect.md)
- [Google Callback](/api-reference/integrations/google-callback.md)
- [Oauth Callback](/api-reference/emailing/oauth-callback.md)
- [Microsoft Service Callback](/api-reference/integrations/microsoft-service-callback.md)
