Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: GoodHire 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: GoodHire API
paths: {}
webhooks:
reportStatusChanged:
post:
summary: Report status changed
description: Outbound HTTP callback GoodHire POSTs to the subscriber-configured URL when a report changes status. Payload shape modeled from documented behavior (x-endpointsModeled). This is a one-way HTTP webhook, not a WebSocket.
x-endpointModeled: true
requestBody:
content:
application/json:
schema:
type: object
properties:
event:
type: string
example: report.status_changed
report:
$ref: '#/components/schemas/Report'
responses:
'200':
description: Acknowledged by the subscriber
tags:
- GoodHire API
components:
schemas:
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.
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
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
description: 'API key sent as: Authorization: ApiKey <API_KEY>. Request keys from api@goodhire.com.'