Skip to main content
The production origin is https://api.join.tl. These are the only Jointl endpoints in the Greenhouse integration. Greenhouse Harvest calls are upstream dependencies and are not Jointl endpoints.

Accepted webhook actions

  • ping
  • job_created
  • job_deleted
  • new_candidate_application
  • application_updated
  • candidate_stage_change
  • hire_candidate
  • unhire_candidate
  • reject_candidate
  • unreject_candidate
  • delete_candidate

Receive webhook

POST /api/apps/greenhouse/v1/webhook/{installationId} Authentication: the Signature header plus Greenhouse-Event-ID. Example request and response:

List tests

GET /api/apps/greenhouse/v1/assessment/list_tests Authentication: installation API key with HTTP Basic authentication. Example request and response:

Send test

POST /api/apps/greenhouse/v1/assessment/send_test Authentication: installation API key with HTTP Basic authentication. Example request and response:

Test status

GET /api/apps/greenhouse/v1/assessment/test_status Authentication: installation API key with HTTP Basic authentication. Example request and response:

Response error

POST /api/apps/greenhouse/v1/assessment/response_error Authentication: installation API key with HTTP Basic authentication. Example request and response:

Limits and retry behavior

  • Maximum request body: 1048576 bytes.
  • POST bodies must be JSON objects; invalid or missing JSON returns 400 without echoing request content, and an oversized body returns 413.
  • Network: 600 requests per minute.
  • Webhook installation: 300 requests per minute.
  • Assessment reads: 120 requests per minute.
  • Assessment mutation: 20 requests per minute.
Preserve the exact webhook event ID and body when retrying. 409 means the event identity was reused for different content; 503 can mean the same event is already processing.