GoodHire Reports API

Order and track background check reports.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/goodhire-reports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

goodhire-reports-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: GoodHire Packages Reports API
  version: '1.0'
  x-endpointsModeled: true
  description: 'RESTful, FCRA-compliant employment background check API for GoodHire (a Checkr company). Background checks are ordered by creating a report object tied to a candidate and a screening package (product bundle); status changes are delivered via outbound webhooks. The API is split into a Customer API (a single company ordering its own reports) and a Partner API (HR platforms ordering on behalf of embedded employer requestors).


    Access is gated - request an API key from api@goodhire.com and build against the sandbox (https://api-sandbox.goodhire.com), which returns dummy report data, before moving to production.


    NOTE: This document mixes endpoints confirmed from GoodHire''s public docs with endpoints and schemas honestly modeled from documented resource patterns (x-endpointsModeled: true). It is a discovery aid, not a byte-for-byte mirror of GoodHire''s official reference.'
  contact:
    name: GoodHire API Team
    email: api@goodhire.com
    url: https://www.goodhire.com/api/
servers:
- url: https://api.goodhire.com
  description: Production
- url: https://api-sandbox.goodhire.com
  description: Sandbox (returns dummy report data)
security:
- ApiKeyAuth: []
tags:
- name: Reports
  description: Order and track background check reports.
paths:
  /company/{company_id}/requestor/{requestor_id}/report/queue:
    post:
      tags:
      - Reports
      summary: Queue a background report
      description: Create and queue a new background check report for a candidate under a given company and requestor, selecting the screening package and passing candidate details plus request options (e.g. mark all info as submitted, add billing codes, suppress the receipt email). Confirmed endpoint.
      operationId: queueReport
      parameters:
      - $ref: '#/components/parameters/CompanyId'
      - $ref: '#/components/parameters/RequestorId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportOrder'
      responses:
        '200':
          description: Report queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /company/{company_id}/requestor/{requestor_id}/report/{report_id}:
    get:
      tags:
      - Reports
      summary: Get report status
      description: Retrieve the status and available results of a report by ID. Confirmed endpoint.
      operationId: getReport
      parameters:
      - $ref: '#/components/parameters/CompanyId'
      - $ref: '#/components/parameters/RequestorId'
      - name: report_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Report not found
  /company/{company_id}/requestor/{requestor_id}/report:
    get:
      tags:
      - Reports
      summary: List reports
      description: List reports for a requestor. Endpoint modeled from documented resource patterns (x-endpointsModeled).
      operationId: listReports
      x-endpointModeled: true
      parameters:
      - $ref: '#/components/parameters/CompanyId'
      - $ref: '#/components/parameters/RequestorId'
      responses:
        '200':
          description: A page of reports
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Report'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Report:
      type: object
      description: A background check report. Schema modeled from documented fields.
      properties:
        id:
          type: string
        status:
          type: string
          enum:
          - queued
          - pending_candidate
          - in_progress
          - complete
          - action_required
          - canceled
        result:
          type: string
          description: Overall outcome once complete (e.g. clear or needs review).
        candidate:
          $ref: '#/components/schemas/Candidate'
        productBundleId:
          type: string
        createdAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
    ReportOrder:
      type: object
      description: Request body for queuing a report. Schema modeled from documented fields.
      required:
      - candidate
      - productBundleId
      properties:
        candidate:
          $ref: '#/components/schemas/Candidate'
        productBundleId:
          type: string
          description: Identifier of the screening package to run.
        requestOptions:
          type: object
          description: Options such as allInfoSubmitted, billingCode, or suppressReceiptEmail.
          additionalProperties: true
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    Candidate:
      type: object
      description: The person being screened. Schema modeled from documented fields.
      properties:
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
          format: email
        phone:
          type: string
        ssn:
          type: string
          description: Provided when the requestor submits candidate info directly rather than via candidate self-consent.
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    RequestorId:
      name: requestor_id
      in: path
      required: true
      schema:
        type: string
    CompanyId:
      name: company_id
      in: path
      required: true
      schema:
        type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key sent as: Authorization: ApiKey <API_KEY>. Request keys from api@goodhire.com.'