---
title: "Find person by GitHub username (single)"
method: POST
path: "/v1/github-to-linkedin/single"
tags: ["GitHub"]
---

# Find person by GitHub username (single)

`POST /v1/github-to-linkedin/single`

Given a GitHub username, find the person's LinkedIn profile and extract work emails.
Use `outputType` to control what data is returned and charged for.
For outputType=linkedin we only return LinkedIn fields, for outputType=email we only return emails, for outputType=both we return both.
To avoid 429 errors, spread requests evenly instead of sending a burst.

<span>⚡ <strong>Rate limit:</strong> 120 requests per 1 minute</span>

<span>💰 <strong>Cost:</strong> 5 credits per person (LinkedIn lookup) + 3 credits per person (email extraction)&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary.">ⓘ</span></span>

<span>⏱ <strong>Recommended timeout:</strong> 2 minutes&nbsp;<span title="Recommended timeout: set your HTTP client timeout to at least 2 minutes for this endpoint.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `githubUsername` string, required — The GitHub username to look up.
  - `context` string, nullable — Optional descriptor of who this person is (e.g. "Engineer at Fiber AI" or "YC founder 2021 batch"). Improves disambiguation on common names. Max 1000 characters.
  - `outputType` 'linkedin' | 'email' | 'both' — What to extract from GitHub profile. 'linkedin' finds LinkedIn profile, 'email' extracts work emails from commits, 'both' returns both.
  - `customerProvidedId` string, nullable — Optional customer-provided ID to tie results back to original input.

## Response `200`

Default Response

- object
  - `output` object, required
    - `githubUsername` string, required — The GitHub username that was resolved.
    - `customerProvidedId` string, nullable — Echoes the optional customer-provided ID from the request.
    - `linkedInUrl` string, uri, nullable — Resolved LinkedIn profile URL when available.
    - `linkedInSlug` string, nullable — Resolved LinkedIn profile slug when available.
    - `confidenceOutOf10` integer, required — Confidence score (0-10) for this resolution.
    - `rationale` string, nullable — Optional explanation for the selected match.
    - `extractedEmails` string[], required — Extracted work email addresses from GitHub commits/cache.
    - `githubProfile` object, nullable — Basic GitHub profile fields used by the resolver.
      - `name` string, nullable
      - `company` string, nullable
      - `location` string, nullable
      - `bio` string, nullable
      - `blog` string, nullable
      - `avatarUrl` string, nullable
      - `followers` integer, nullable
      - `publicRepos` integer, nullable
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `402` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response
- `429` — Default Response
- `500` — Default Response
- `503` — Default Response

---

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