Skip to main content
The Harly REST API is available at:
The OpenAPI document is available from a running installation at /api/v1/openapi.json. Use it as the source of truth for exact schemas and route parameters. The repository also includes a generated snapshot at /openapi.json. With the Harly dev server running on port 3000, refresh it after changing an API contract with:

Authenticate

Create a key from Settings → Developers → API keys, copy the raw value once, and send it as a bearer token:
Keys are scoped. Give an integration only the resources it needs. Rotate or revoke keys when an owner or vendor changes.

Response envelopes

Success

Error

Common error codes: validation_error, not_found, forbidden, conflict, rate_limited.

Pagination

List endpoints use cursor-based pagination:
  • Do not assume a stable sort order or page number.
  • meta.nextCursor is absent when you have reached the last page.
  • limit defaults to 25 and caps at 100.

Idempotency

POST requests that support it accept an Idempotency-Key header. Use a unique value per logical operation — for example a UUID or a stable key derived from the operation’s inputs:
A 409 may mean a real concurrency conflict or an idempotency collision. Inspect the error envelope before retrying a mutation. Do not retry a 409 blindly — the operation may have already succeeded.

Rate limits

The API applies per-key rate limits. When a response returns 429, back off using the Retry-After header value before retrying. Do not hammer the API with immediate retries.

HTTP status codes

Main resources

Jobs, candidates, applications, interviews, offers, scorecards, tasks, pool entries, activity events, webhooks, and API keys are available through the versioned API. Use webhooks to react to changes instead of polling every resource. See API resource reference for the full scope and operation inventory.

Try it

The OpenAPI document at /api/v1/openapi.json is importable into Insomnia, Postman, or any OpenAPI-compatible tool:
See the API integration tutorial for an end-to-end walkthrough with webhook verification.