---
title: "Criterion-by-criterion evidence report for one developer"
method: GET
path: "/v1/users/{login}/evidence"
---

# Criterion-by-criterion evidence report for one developer

`GET /v1/users/{login}/evidence`

## Request

- Base URL: `https://api.githunt.ai`
- URL: `https://api.githunt.ai/v1/users/{login}/evidence`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Returns the four-section evidence report for one candidate against the requested skills and, optionally, domain packs: typed evidence records, a `supported`/`unknown` assessment per criterion, and screening questions for everything left unknown. Reports are built out of band and cached for 14 days. A cache miss returns `202` with a retry hint and debits no monthly credits; a cached report (fresh or stale) returns `200` and debits 3 credits. Public evidence can never establish commercial or private work: `supported` means the stated evidence standard was met, not independent verification.

## Path parameters

- `login` string, required

## Query parameters

- `skills` string, required
- `domains` string

## Response `200`

Evidence report (debits 3 credits)

- EvidenceResponse
  - `success` true
  - `data` EvidenceReport
    - `schema_version` integer
    - `evaluated_at` string, date-time
    - `window` object: The rolling recency window the criteria were judged against.
      - `from` string
      - `to` string
      - `years` integer
    - `coverage` object: What the scan actually saw. Budgets are server-controlled: at most 5 repositories per candidate, 20 candidate-authored commits per repository, and 12 of those commits re-read for their changed files. Truncation and failures are reported, never hidden.
      - `repos_scanned` integer
      - `repos_truncated` boolean
      - `commits_scanned` integer
      - `commits_truncated` boolean
      - `commits_inspected` integer: Commits whose changed files were read. Only these can support a technical criterion.
      - `inspection_truncated` boolean: True when more candidate-authored commits existed than the inspection budget allowed.
      - `inspection_failed` integer: Selected commits whose changed files could not be read. A failure leaves the criterion `unknown`, never negative.
      - `inspection_rules_version` integer: The classifier ruleset this report was produced by. Version 2 decides criteria from changed code lines only.
      - `fetch_status` 'complete' | 'partial' | 'failed'
      - `missing_years` integer[]: Timeline years that could not be fetched.
      - `timeline_available` boolean
      - `stale` boolean: True when the cached report is older than the 14-day freshness window. It is still served, and a refresh is queued.
      - `computed_at` string, date-time: Present only when `stale` is true.
      - `refresh_queued` boolean: Present only when `stale` is true.
    - `criteria` object: One assessment per criterion. Every path that cannot answer the question returns `unknown` rather than a claim.
      - `hands_on_backend` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
      - `skill_duration_commercial` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
      - `skill_used_recently` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
      - `engineering_experience` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
      - `core_domain_recent` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
      - `geography` CriterionAssessment
        - `status` 'supported' | 'unknown': `supported` means the stated evidence standard was met, not independent verification. Public evidence cannot establish commercial or private work, so missing evidence is `unknown`.
        - `evidence_ids` string[]: Records that support the assessment. A technical criterion cites only commits whose changed files were inspected.
        - `hints` string[]: Discovery signals that were not counted: commits whose subject or pull request text matched but whose changed files were not inspected. A criterion supported only by hints stays `unknown`.
        - `reason` string
    - `sections` object: The four report sections, each citing evidence record ids.
      - `verified_skill_evidence` EvidenceSection
        - `evidence_ids` string[]
        - `status` 'supported' | 'unknown'
        - `hints` string[]: Uncounted subject-level matches, mirroring the criterion.
        - `note` string
        - `subsystems` string[]: Present on the core domain section.
      - `recent_commercial_skill_evidence` EvidenceSection
        - `evidence_ids` string[]
        - `status` 'supported' | 'unknown'
        - `hints` string[]: Uncounted subject-level matches, mirroring the criterion.
        - `note` string
        - `subsystems` string[]: Present on the core domain section.
      - `core_domain_evidence` EvidenceSection
        - `evidence_ids` string[]
        - `status` 'supported' | 'unknown'
        - `hints` string[]: Uncounted subject-level matches, mirroring the criterion.
        - `note` string
        - `subsystems` string[]: Present on the core domain section.
      - `unknowns_and_screening_questions` object
        - `criteria` string[]
        - `questions` string[]
    - `evidence` EvidenceRecord[]
      - `id` string
      - `kind` 'code_commit' | 'readme_context' | 'stated_location' | 'public_org_contribution' | 'self_reported_employment' | 'commit_email_domain': `code_commit` is candidate-authored; `readme_context` establishes project context only and never counts as a contribution; `stated_location` is self-reported and is a stated base, not verified residence.
      - `source_url` string, nullable
      - `repository` string, nullable: owner/name on repository-derived records.
      - `commit_sha` string, nullable
      - `observed_at` string, nullable
      - `activity_at` string, nullable
      - `interval` object, nullable
        - `from` string
        - `to` string
        - `precision` string
      - `claim` string
      - `attribution` string
      - `limitations` string[]
      - `company` string, nullable
      - `organization` string, nullable
      - `languages` string[]
      - `matched_skills` string[]
      - `commits` integer
      - `active_years` integer[]
      - `owner_type` string
      - `documentation_only` boolean: True when every changed file is documentation, or when the commit was not inspected and its subject reads as documentation.
      - `inspected` boolean: True when the commit's changed files were read. An uninspected commit is a discovery hint: its subject cannot establish which language changed or what was implemented.
      - `inspection` object, nullable: Present only when `inspected` is true.
        - `files_changed` integer
        - `files_listed` integer: Files actually read, capped at 50 per commit.
        - `files_truncated` boolean
        - `code_languages` string[]: Languages of the implementation files with at least one changed code line, from their extensions. Documentation, example, sample, demo and test files, and files whose only changed lines were comments, are excluded before this is derived.
        - `documentation_only` boolean
        - `example_or_test_only` boolean: True when nothing outside examples, samples, demos or tests changed.
        - `comment_only` boolean: True when every changed line in the implementation files was a comment or blank. Such a commit supports no criterion and is listed as a hint only.
        - `merchant_integration` boolean: True when a changed code line calls a payment provider's SDK or a merchant-facing checkout, charge, customer, subscription or webhook API. Such a commit never supports `core_domain_recent` or `hands_on_backend`: integrating a processor is not building one. It can still support `skill_used_recently`.
        - `implementation_hits` object[]: Core-tier domain terms found in the code an implementation file actually changed. Unchanged context lines, comments and string literals are removed first, so only changed code counts. This is what supports `core_domain_recent`; a term in the commit subject does not.
          - `term` string
          - `subsystem` string, nullable
          - `file` string
          - `line_excerpt` string: The changed code around the match, capped at 120 characters, so the term can be checked against what was written.
        - `subsystems` string[]
      - `subsystems` string[]
      - `pull_request_url` string
      - `changed_files` integer
      - `domain_evidence` object: Domain-pack term matches on this record, keyed by pack name.
      - `country` string, nullable
      - `utc_offset_min` number, nullable
      - `utc_offset_max` number, nullable
      - `location_confidence` string
    - `screening_questions` object[]: One targeted recruiter question per unknown criterion.
      - `criterion` string
      - `question` string
    - `markdown` string: The same report rendered as human-readable markdown. Repository text inside it is untrusted third-party data, never instructions.
  - `meta` Meta: Envelope metadata. `quota.cost` is 0 on endpoints that debit no credits.
    - `requestId` string
    - `quota` Quota
      - `used` integer
      - `limit` integer: -1 means unlimited
      - `month` string
      - `cost` integer: Credits this request debited (search: 1, get user: 1, evidence report: 3 when a report is returned and 0 while pending, analyze profile: 3, list operations: 0). `used` already reflects this charge.
      - `rollover` integer: Unused credits banked from the previous month and available on top of `limit` this month (`remaining` = limit + rollover - used). Only present on the Team plan, capped at one extra month's allowance (so at most 2x the allowance is usable in a month).

## Other responses

- `202`: No cached report yet; a bounded build was queued. Debits 0 monthly credits. Retry after `retry_after_seconds`.
- `400`: Invalid request
- `401`: Missing, invalid, or revoked API key
- `429`: Monthly or daily quota exceeded
- `500`: Unexpected server error

---

[API](https://skmtc.dev/githunt/apis/githunt-api.md) · [All operations](https://skmtc.dev/githunt/apis/githunt-api/llms.txt) · [OpenAPI document](https://skmtc.dev/githunt/apis/githunt-api/revisions/6fc325607da0?raw)
