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 . Request keys from api@goodhire.com.'