You can schedule interviews using following API endpoint:
https://api.hackerearth.com/partner/hackerearth/interviews/
The client authentication is done using your unique client_id and client_secret.
You can refer to your Dashboard settings, for client_id and client_secret under API details.
Type: String
Description: client_id is a 67 character random key that serves as an identification for a particular client. It must be provided when communicating with the API as a parameter to the API endpoint.
Example: d8a20ae8e475209er4b1faa72ede88a174423cc2029c.api.hackerearth.com
Type: String
Description: client_secret is a 40 character random key that serves as an identification for a particular client. It must be provided when communicating with the API as a parameter to the API endpoint.
Example: 2b0ff29f4f8751487540604cdab5611e6135f41c
All the requests to the API must be made using the POST request method.
client_id, client_secret, title, start_datetime, candidate_details and interviewers are the required parameters for making the request to this API endpoint. eval_params, inform_candidate and inform_interviewers are optional parameters. All these parameters have been explained below.
client_id and client_secret are explained above.
Type: String
Description: title should contain the interview title.
Example: Technical Interview
Type: String
Description: start_datetime should contain the start date and start time of the interview in ISO8601 date-time format.
Example: 2019-07-31T21:25:02+05:30
Type: Dictionary
Description: candidate_details should consist of full_name, email_id and contact_number fields which contain candidate's full name, email address and contact number respectively. full_name and email_id are the required fields while contact_number is optional.
Type: List
Description: interviewers should be a list of dictionaries where each dictionary represents an interviewer's details.
Each interviewer's details should consist of full_name, email_id and feedback_redirect_url fields which contain interviewer's full name, email address and the redirect url for feedback submission respectively. full_name and email_id are the required fields while feedback_redirect_url is optional.
If feedback_redirect_url is specified then the interviewer would be redirected to that url for feedback submission as soon as he/she ends the interview at HackerEarth.
Note: The length of interviewers list should range between 1 and 5. That is, minimum 1 and maximum 5 interviewers details can be specified in this list.
Type: List
Description: eval_params should be a list of strings containing evaluation parameters/criteria for the interview.
Type: Boolean value (True/False)
Description: The value of this field indicates whether to send interview invite email to the candidate. If this field is not provided, then by default inform_candidate will be True and candidate will receive interview invite email.
Type: Boolean value (True/False)
Description: The value of this field indicates whether to send interview invite email to the interviewers. If this field is not provided, then by default inform_interviewers will be True and interviewers will receive interview invite email.
Sample request using python
#!/usr/bin/env python
import json
import requests
CLIENT_ID = "abcdefghijklm123456789nopqrstuvwxyz.api.hackerearth.com"
CLIENT_SECRET = "abcdefghijklm123456789nopqrstuvwxyz"
TITLE = "Technical Interview"
START_DATETIME = "2020-05-31T21:25:02+05:30"
CANDIDATE_DETAILS = {
"full_name": "Sergio Marquina",
"email_id": "sergio.marquina@gmail.com",
"contact_number": "+919603329860"
}
INTERVIEWERS = [
{
"full_name": "John Smith",
"email_id": "john.smith55@gmail.com",
"feedback_redirect_url": "https://beceptor.com/11254/feedback"
},
{
"full_name": "Martha Jones",
"email_id": "martha.jones66@gmail.com",
"feedback_redirect_url": "https://beceptor.com/11256/feedback"
}
]
EVAL_PARAMS = ["Algorithms", "Python", "Number Theory"]
INFORM_CANDIDATE = True
INFORM_INTERVIEWERS = True
payload = {
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"title": TITLE,
"start_datetime": START_DATETIME,
"candidate_details": CANDIDATE_DETAILS,
"interviewers": INTERVIEWERS,
"eval_params": EVAL_PARAMS,
"inform_candidate": INFORM_CANDIDATE,
"inform_interviewers": INFORM_INTERVIEWERS
}
r = requests.post("https://api.hackerearth.com/partner/hackerearth/interviews/", data=json.dumps(payload))
print r.json()
Using cURL
curl --data '{
"client_id": "abcdefghijklm123456789nopqrstuvwxyz.api.hackerearth.com",
"client_secret": "abcdefghijklm123456789nopqrstuvwxyz",
"title": "Technical Interview",
"start_datetime": "2020-05-31T21:25:02+05:30",
"candidate_details": {
"full_name": "Sergio Marquina",
"email_id": "sergio.marquina@gmail.com",
"contact_number": "+919603329860"
},
"interviewers": [
{
"full_name": "John Smith",
"email_id": "john.smith55@gmail.com",
"feedback_redirect_url": "https://beceptor.com/11254/feedback"
},
{
"full_name": "Martha Jones",
"email_id": "martha.jones66@gmail.com",
"feedback_redirect_url": "https://beceptor.com/11256/feedback"
}
],
"eval_params": ["Algorithms", "Python", "Number Theory"],
"inform_candidate": true,
"inform_interviewers": true
}' https://api.hackerearth.com/partner/hackerearth/interviews/
The response returned will be in the JSON format. A success response status code will be 201.
Sample response
{
"mcode": "success" ,
"message": "success" ,
"ecode": [],
"emessage": [],
"interview_id": "49f6b922b2feee3be3ec79e88d6ff36" ,
"candidate_interview_link": "https://www.hackerearth.com/interview/49f6b922b2feee3be3ec79e88d6ff36/login=43555lk5435lk35",
"interviewer_interview_links": {
"john.smith55@gmail.com": "https://www.hackerearth.com/interview/49f6b922b2feee3be3ec79e88d6ff36/login=43534lk5435lk35" ,
"martha.jones66@gmail.com": "https://www.hackerearth.com/interview/49f6b922b2feee3be3ec79e88d6ff36/login=43534lk5435lk35"
}
}
Type : String
Description: The message code abbreviated as mcode.
Type: String
Description: A message for user regarding the success of request.
The message and mcode attributes are related to each other according to the following table:
mcode | message |
---|---|
SUCCESS | Request successful |
FAILED | Request failed |
Type: List
Description: The error codes are abbreviated as ecode.
Type: List
Description: It represents a message explaining the error that occurred during request processing.
The emessage and ecode attributes are related to each other according to the following table:
ecode | emessage |
---|---|
AUTHFAILED | Authentication Failed |
ACCESSERROR | You are not authorized to access this feature. Please contact support@hackerearth.com. |
ARGMISSING | Request argument missing. |
BADDATA | Invalid request data. |
INVALIDEMAIL | Invalid email(s) exist. |
FACECODENOTAVAILABLE | FaceCode feature is not available for your company. |
BUYCREDITS | You do not have sufficient credits to create interviews, please purchase more credits. |
INTERVIEWERCANDIDATECONFLICT | Interviewer and candidate cannot be the same. |
DUPLICATEINTERVIEWER | Multiple interviewers cannot have the same email ID. |
MINONEINTERVIEWERREQUIRED | You must add at least one interviewer. |
MAXINTERVIEWERSLIMITCROSSED | Maximum interviewers limit crossed. |
MAXEVALPARAMSLIMITCROSSED | Maximum eval params limit crossed. |
RATELIMITEXCEEDED | The rate at which the API requests are made has reached. Please try again after some time. |
Type: String
Description: interview_id will contain universally unique identifier (UUID) for the interview.
Type: String
Description: candidate_interview_link will contain an auto-login interview url for the candidate.
Type: Dictionary (JSON)
Description: interviewer_interview_links will contain interviewers emails mapped to their auto-login interview urls.
If the client_id or client_secret attribute is incorrect, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"AUTHFAILED"
],
"emessage": [
"Authentication Failed"
],
"mcode": "FAILED"
}
If user is not authorized to create an interview, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"ACCESSERROR"
],
"emessage": [
"You are not authorized to access this feature. Please contact support@hackerearth.com."
],
"mcode": "FAILED"
}
If mandatory POST arguments are not provided, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"ARGMISSING"
],
"emessage": [
"Request argument missing: '<argument_name>'"
],
"mcode": "FAILED"
}
If the provided data is invalid, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"BADDATA"
],
"emessage": [
"Invalid request data."
],
"mcode": "FAILED"
}
If invalid email id provided, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"INVALIDEMAIL"
],
"emessage": [
"Invalid email(s) exist."
],
"mcode": "FAILED"
}
If FaceCode feature is not enabled for your company account, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"FACECODENOTAVAILABLE"
],
"emessage": [
"FaceCode feature is not available for your company."
],
"mcode": "FAILED"
}
If your company account does not have sufficient credits to create interviews, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"BUYCREDITS"
],
"emessage": [
"You do not have sufficient credits to create interviews, please purchase more credits."
],
"mcode": "FAILED"
}
If the candidate's email ID is found matching with any of the interviewers email ID, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"INTERVIEWERCANDIDATECONFLICT"
],
"emessage": [
"Interviewer and candidate cannot be the same."
],
"mcode": "FAILED"
}
If multiple interviewers are found having the same email ID, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"DUPLICATEINTERVIEWER"
],
"emessage": [
"Multiple interviewers cannot have the same email ID."
],
"mcode": "FAILED"
}
If no interviewers details are provided, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"MINONEINTERVIEWERREQUIRED"
],
"emessage": [
"You must add at least one interviewer."
],
"mcode": "FAILED"
}
If more than 5 interviewers details are provided, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"MAXINTERVIEWERSLIMITCROSSED"
],
"emessage": [
"Maximum interviewers limit crossed."
],
"mcode": "FAILED"
}
If more than 10 evaluation parameters/criteria are provided, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"MAXEVALPARAMSLIMITCROSSED"
],
"emessage": [
"Maximum eval params limit crossed."
],
"mcode": "FAILED"
}
If the rate (60 per min or 5000 per day) at which API requests are made by a specific user is reached, then the JSON response that is returned is as follows:
{
"message": "Request failed",
"ecode": [
"RATELIMITEXCEEDED"
],
"emessage": [
"The rate at which the API requests are made has reached. Please try again after some time."
],
"mcode": "FAILED"
}
If any other issue occurred do reach us out at api@hackerearth.com