---
title: "Verify GitHub social link"
method: POST
path: "/v1/account/social/verify/github"
tags: ["verification"]
---

# Verify GitHub social link

`POST /v1/account/social/verify/github`

Verify ownership of a GitHub social link using an OAuth 2.0 access token.

**Flow:**
1. Client obtains a GitHub OAuth 2.0 access token via authorization code flow
2. Client sends the token to this endpoint
3. API validates the token against GitHub's `GET /user` endpoint
4. If the returned username matches the account's existing GitHub social link, it's marked as verified

**Prerequisites:**
- Account must have a GitHub social link already added (via `POST /v1/account/social-links`)
- Client must have a valid GitHub OAuth 2.0 access token

**Idempotent:** Calling this on an already-verified GitHub link returns success.

Authentication: `Authorization: Bearer <CLIENT_JWT>`

## Headers

- `authorization` string, nullable — Bearer JWT issued by Grove that identifies the account.

## Request body

- GitHubVerifyRequest — Request model for POST /v1/account/social/verify/github.
  - `access_token` string, required — GitHub OAuth 2.0 access token obtained via authorization code flow

## Response `200`

Successful Response

- GitHubVerifyResponse — Response model for POST /v1/account/social/verify/github.
  - `verified` boolean, required — Whether the GitHub link is now verified
  - `platform` string — Platform that was verified
  - `username` string, required — GitHub username that was verified
  - `verification_method` string, required — Method used for verification

## Other responses

- `400` — Invalid access token, no GitHub link on account, or username mismatch
- `401` — Missing or invalid Grove JWT
- `422` — Validation Error
- `502` — GitHub API unavailable

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
