The EasyEnv API
A REST API for partners and your own scripts: list roles, invite candidates to an interview, follow their progress and read the reviewer's decision.
What you can do#
The EasyEnv dashboard is built on a REST API, and the same API is open to you. The part an applicant tracking system, an HR tool or an internal script usually needs is the interview flow:
- List the roles in an account, so a recruiter can pick one.
- Invite a candidate to an offline interview on a role. EasyEnv emails them the invitation.
- Follow the interview as the candidate starts and submits it.
- Read the reviewer's decision, and link to the full review page in EasyEnv.
Example: send an interview from an ATS walks through all four with real requests. Build on the endpoints these pages document. The dashboard calls others too, and those can change without notice.
Base URL#
https://api.easyenv.io/v1/Every path ends with a slash, for example /v1/interviews/. Leave it off and the request does not match.
What every request needs#
| Field | Type | Description |
|---|---|---|
| X-Service-Tokenrequired | header | Your service token. See Authentication for how to get one. |
| Account-IDrequired | header | The id of the EasyEnv account the request is about. A user can belong to several accounts, and this says which one. List them with GET /v1/accounts/, the one call that works without this header. |
Formats and pagination#
- Responses are JSON.
- Creating an interview takes form fields, not JSON: send
multipart/form-data(whatcurl -Fsends) orapplication/x-www-form-urlencoded. A JSON body is refused with 415, because the same request can carry a resume PDF. - Ids are short strings such as
k3x9q2mf, not UUIDs. Store them as opaque text. - Lists are paginated. Pass
pageandpage_size(default 10, at most 200). The response is{"count", "total_pages", "links": {"next", "previous"}, "results": [...]}; followlinks.nextuntil it is null.
Errors#
Every error has the same shape:
{
"errors": [
{ "field": "interviewee_email", "message": ["This field is required."] }
]
}| Field | Type | Description |
|---|---|---|
| 400 | A field is missing or invalid. field names it; non_field_errors means the request as a whole. | |
| 403 | No token, an unknown token, no Account-ID, a user without the access the call needs, or an account without an active plan. The message says which. | |
| 404 | The account, role or interview does not exist, or is not visible to this user. | |
| 415 | A JSON body sent to an endpoint that takes form fields. |
Webhooks#
EasyEnv does not send webhooks yet. To know when a candidate has started, submitted or been reviewed, poll the interview; the example shows how. Interviews move at human speed, so checking every few minutes is plenty.
Getting help#
Planning an integration, or stuck on one? Write to [email protected] with "Partner integration" in the subject. See also the ATS integrations EasyEnv is building.
