HackerEarth OnScreen API
REST API for scheduling and managing AI-powered interviews.
Authentication
Send your API key in the X-Helix-API-Key header of every request. HackerEarth
issues API keys; contact your account manager to request one. A missing, unknown
or revoked key, or a deactivated company, returns 401 with the code
MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKED or COMPANY_INACTIVE.
Errors
Every error response, including authentication failures (401) and requests
the API rejects before reaching an endpoint (403, 406) or while reading the
request body (415), returns
{"success": false, "error": {...}}. The error object carries a code and a
message, plus a suggestion and details when available. Branch on code;
the message is for people. An HTTP method an endpoint does not support returns
405 with the code METHOD_NOT_ALLOWED.
Pagination
Listing interviews is paginated. Pass page and page_size (default 10, maximum
100). The response carries count, next, previous, results and
total_count.
Interview lifecycle
status is derived in this order, first match wins: cancelled (the interview
was cancelled), completed (the candidate finished it), ongoing (started, not
finished), expired (the deadline passed before it started), otherwise
upcoming.
candidate_status is null until the interview ends. It can be set only after
the interview ends; before that the API returns INTERVIEW_NOT_COMPLETED.
report_status appears on the interview detail. It is null until the
interview ends, then IN_PROGRESS, READY, FAILED or NOT_EVALUATED.
Datetimes
Every datetime in a response is UTC, ISO 8601 with an explicit +00:00 offset.
deadline_formatted is a UTC display string. For the deadline_time you send,
an offset inside the value wins; otherwise timezone applies, then the
timezone of the API key's creator, then UTC.
Duplicates and retries
There is no Idempotency-Key header. Scheduling the same candidate email and
template while an interview is still open returns 400 with the code
DUPLICATE_INTERVIEW and the existing interview_id. After a timeout, retry the
schedule request and handle that response, or list interviews with
candidate_email first.
Rate limits
Scheduling an interview is limited to 50 requests per second per API key. Beyond
that the API returns 429 with the code RATE_LIMITED; retry later. No
Retry-After header is sent, so back off exponentially. No other endpoint has an
application-level rate limit.
Listing interviews
Results are newest first. candidate_email is an exact, case-insensitive match.
There are no date filters. page_size is at most 100.
API keys
A key belongs to one company; a company can have several keys. Keys do not expire. HackerEarth issues and revokes keys on request through your account manager. Send a key only in the header, over HTTPS.
Environments
There is one environment, production, and no sandbox. To test, schedule an
interview for your own email on a test template. Every interview you schedule
consumes credits; without enough credits the API returns INSUFFICIENT_CREDITS.
Versioning
The version is in the URL path (/v1). New fields, error codes and enum values
may be added without notice; ignore ones you do not know. Breaking changes ship
only in a new /vN, and /v1 is retired no sooner than 6 months after notice.
Webhooks
Interview events are delivered to your company webhook, documented at
https://www.hackerearth.com/docs/webhooks/recruiter/v1/. Your account manager
configures it. The interview object in a payload has the same shape as
ExternalInterview and ExternalInterviewDetail in this API.
Personal data and retention
Responses and webhooks contain the candidate's name and email. Interview data is kept until it is deleted. Send deletion requests to support@hackerearth.com.