Documentation navigation
GET /v2/deep-research/reports/repos/{owner}/{name}/contributors

List every contributor on a repository report

Access
Authenticated
search:deep
Cost
Free
Rate limit
120 / minute per account
Quota
None

Everyone a repository report holds as doing the work, one page at a time. The report and its PDF show the top contributors; this lists all of them: the builders ranked by recency-weighted work (pushes and merged pull requests over the last year, with GitHub’s own pull request and commit authorship), then the reviewers and mergers who keep the project moving without pushing much themselves. Each person carries the same fields as a contributor on the report: activity counts, first and last seen, pace, what they author, merge and review, the file types they touch, and identity facts with devRank where Vamo knows them. windowTotal and complete say whether the repository has more builders than a report keeps. Read from the stored report, so it is free and readable only for a repository this account has already researched; a repository the account has not researched is a 404.

Path parameters

  • owner string required
    min 1 chars, max 39 chars
  • name string required
    min 1 chars, max 100 chars

Query parameters

  • cursor string

    The `nextCursor` from the page before, to read the next page. Omit it for the first page.

    max 256 chars
  • limit integer default: 100

    People per page, 100 by default.

    min 1, max 250

Responses

  • 200 One page of the full contributor list
    • repoName string required

      The `owner/name` the research was run on.

    • contributors array of object required

      This page of the list, in rank order: builders by recency-weighted work, then reviewers.

      • rank integer required

        Position in the whole list, 1 for the person who does the most recent weighted work.

      • login string required

        The contributor’s GitHub handle.

      • role string required

        `builder` when they pushed code or authored merged pull requests in the window, ranked by recency-weighted work. `reviewer` when they only merged or reviewed other people’s pull requests in the sampled merged pull requests, so they carry `depth` but no weight. Builders come first, then reviewers.

        builderreviewer
      • workShare number | null required

        A builder’s share, 0 to 1, of the recency-weighted work of every builder this report holds, so the shares across the whole list add up to 1. Null for a reviewer.

      • depth object | null

        What this person does here, read off the repository’s sampled merged pull requests: pull requests authored and how they were merged, other people’s pull requests merged, reviews given, and the file types their own pull requests touch (the area of the codebase they work in). Null or absent when they are not in the sample.

        • login string required

          The contributor’s GitHub handle.

        • authoredPrsMerged number | null

          AUTHORED work: merged PRs this contributor opened here, over the most recently updated merged PRs of this repository (up to 50) the research sampled. Absent or null means unknown, never zero.

          min 0
        • authoredPrsMergedByOthers number | null

          AUTHORED work: of those, how many another person (not a bot) merged, which is outside validation, over the most recently updated merged PRs of this repository (up to 50) the research sampled. Absent or null means unknown, never zero.

          min 0
        • selfMergedPrs number | null

          AUTHORED work: of those, how many the contributor merged themselves, which shows write access rather than validation, over the most recently updated merged PRs of this repository (up to 50) the research sampled. Absent or null means unknown, never zero.

          min 0
        • mergedForOthers number | null

          MERGED-FOR-OTHERS work: other people’s PRs this contributor merged here, over the most recently updated merged PRs of this repository (up to 50) the research sampled. A gatekeeping fact, never added to the authored counts. Absent or null means unknown, never zero.

          min 0
        • reviewsGiven number | null

          REVIEW work: reviews this contributor left on other people’s PRs here, over the most recently updated merged PRs of this repository (up to 50) the research sampled. A floor, since each PR’s reviews are read up to a cap. Absent or null means unknown, never zero.

          min 0
        • topExtensions array | null

          The extensions this contributor’s own merged PRs here touch most, at most 5, vendored, generated and lockfile paths excluded. Absent or null means unknown, never zero.

          max 5 items
          • extension string required

            The lowercased final extension without the dot (`ts`, `rs`), a known bare file name (`dockerfile`), or `(none)`.

          • filesTouched number required

            Changed files with this extension across the contributor’s own sampled merged PRs here, counted from paths (never line counts).

            min 0
      • identity object | null

        Identity facts where Vamo’s index knows the person, the same block a report contributor carries: name, title, LinkedIn URL, city and country, company, devRank (`crackedScore` and `crackedTier`), gem score, seniority, years of experience, and `hasEmail`. Null when the index does not know them, and always null for a reviewer.

    • total integer required

      People in the whole list, builders and reviewers, across every page.

      min 0
    • builders integer required

      Builders in the whole list.

      min 0
    • windowTotal integer | null required

      Distinct people who pushed code or merged pull requests in the window, counted before any cap. Null on a report produced before this count was recorded.

    • complete boolean | null required

      True when the list holds every builder in the window. False when the repository has more builders than a report keeps (the research keeps the 300 with the most recent weighted work; reports produced before 2026-09-10 keep 30), so `windowTotal` is larger than `builders`. Null when the report cannot say. Run the research again with `force: true` for a report with the current ceiling.

    • nextCursor string | null required

      Pass as `cursor` to read the next page. Null on the last page.

    • researchedAt string required

      When the research finished, as an ISO 8601 instant.

  • 400 A cursor or limit that is not valid
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 401 No or invalid credential
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 402 Plan lacks search:deep
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 403 Missing search:deep (role)
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 404 This account has not researched this repository (or nobody has)
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.

  • 429 A rate limit or a usage quota is exhausted. Back off and retry; the `x-quota-*` response headers report the remaining allowance.
    • code string required

      Stable machine-readable error code. Branch on this, never on the numeric status.

      bad_requestunauthorizedsignature_requiredpayment_requiredforbiddennot_foundconflictgonepayload_too_largeunprocessable_entitytoo_many_requestsinternal_errornot_implementedbilling_unavailablenot_contactablemailbox_link_unavailablemailbox_requiredmail_engine_unavailablewebhook_publisher_unavailabledatabase_unavailableclient_errorbuild_failed
    • message string required

      Human-readable explanation of the refusal.

    • status integer required

      The HTTP status code, repeated in the body.

    • remedy object

      A self-serve path forward, when one exists (a 402 points at how to restore access).

      • kind string required

        What kind of remedy this is, so a client can route it: whether the caller can clear the condition through the API, or a person must act in the web app.

        topupconnect_mailbox
      • url string required

        Where to go to clear the condition: an API path, or a web app page when only a person can.