API Reference
API endpoint:
https://api.jobscore.com/v1
The JobScore Hire API is a RESTful API designed to have predictable, resource-oriented URLs.
We use built-in HTTP features, like HTTP authentication and HTTP verbs, which can be understood by off-the-shelf HTTP clients. We use HTTP response codes to indicate API errors. We support cross-origin resource sharing to allow you to interact securely with our API from a client-side web application, but please never expose your secret API token in any public website’s client-side code.
- JSON will be returned in all responses from the API, including errors.
- Our API conforms to the JSON-API 1.0 specification.
- All strings must be UTF-8 encoded.
- All dates are encoded in ISO 8601 format (e.g.
1969-10-05T13:14:15.926+01:00
).
Use Cases
The JobScore Hire API lets you build a variety of applications and integrations. Here are some examples of things you can do with the API:
- Pull candidate data from JobScore into background check, HRIS and onboarding software
- Pull data out of JobScore to build custom reports
- Show JobScore candidate data in other productivity software (e.g. sales productivity tools)
- Build dashboards or other visual representations of your candidate data
The JobScore Hire API is not designed for you to build a customized careers site / jobs page. Please build your careers site using the Job Feed API.
The JobScore Hire API is available to Enterprise customers and select partners. Interested partners should contact partners@jobscore.com.
Authentication
Example request using Token Authentication:
curl -X "GET" "https://api.jobscore.com/v1/users" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN"
Example request using Basic Authentication:
curl -X "GET" "https://api.jobscore.com/v1/users" \
-u YOUR_PERSONAL_ACCESS_TOKEN:
cURL uses the -u flag to pass basic auth credentials (adding a colon after your API token prevents cURL from asking for a password).
You authenticate to our API by providing your Personal Access Token in the request. Your tokens carry many privileges, so be sure to keep them secret and secure!
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. You must authenticate for all requests.
HTTP Token Authentication
You can authenticate via HTTP Token Authentication by sending an Authorization header with the Token parameter.
HTTP Basic Authentication
Alternatively, authentication to the API may occur via HTTP Basic Auth. Provide your personal access token as the basic auth username. You do not need to provide a password (we ignore it).
Impersonation
Example request using impersonation:
curl -X "GET" "https://api.jobscore.com/v1/candidates" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN"
-H "X-On-Behalf-Of: user=ZrYIlgUtgCTUNhhSWxQmmw"
You can impersonate a different user by sending the X-On-Behalf-Of
header. Only users with the Owner role can use such feature.
The content for the header must be a user’s id prefixed by “user=”, which you can fetch with the List Users method. Please refer to the example shown to the right.
Rate Limits
cURL uses the -v flag to print return headers.
curl -X "GET" "https://api.jobscore.com/v1/users" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN" \
-v
Among other headers, you will find the following ones:
(...)
< X-Ratelimit-Limit: 3600
< X-Ratelimit-Remaining: 2891
(...)
We rate limit by user. By default, we allow 3,600 requests/hour. On every request, both HTTP headers X-RateLimit-Limit
and X-RateLimit-Remaining
will be returned. We use a fixed window implementation, meaning that your number of requests will be reset exactly 1 hour after you made the first request.
Rate limits are important to prevent abuse and keep the service available for everyone. If you need a higher rate limit for your integration(s), please contact api@jobscore.com and we’ll be happy to consider granting an exception.
Media Type
To conform to the JSON API specification, the Content-Type
HTTP header must always be application/vnd.api+json
.
Also, if you want to specify the application/vnd.api+json
in the the Accept
HTTP header, there must be at least one of such media type without any parameters.
Required HTTP Headers
JSON-API 1.0 requires the Content-Type header to be set. The Accept header is not required, but is recommended.
HTTP Method | Headers |
---|---|
GET | Accept: application/vnd.api+json |
POST | Content-Type: application/vnd.api+json (required)Accept: application/vnd.api+json |
PATCH | Content-Type: application/vnd.api+json (required)Accept: application/vnd.api+json |
DELETE | No specific headers required. |
Responses and Errors
In order to allow usage from client-side web applications, the JobScore Hire API enables Cross-origin Resource Sharing, though you should never expose API tokens in visible source on public websites.
We use HTTP response codes to indicate success or failure of a request.
Response codes in the range 2xx
indicate a successful request; 4xx
range indicates an error with your request (this could be an invalid Content-Type, missing parameters, etc), and 5xx
range indicates an error on our servers.
Code | Description |
---|---|
200 | OK: If data was requested, it will be available in the data field at the top level of the response body. |
201 | Created: Resource was successfully created and information is available in the data field at the top level of the response body. |
400 | Bad Request: The request data is invalid in some way. |
401 | Unauthorized: You are not authorized to access a resource. It could be that your authentication token is invalid. |
403 | Forbidden: You are sending an ID attribute when creating a resource. We do not support client-generated ids. |
404 | Not Found: The requested resource does not exist. |
405 | Method Not Allowed: You are using the wrong HTTP method. Use POST to create a resource, GET to get them and PATCH to update. |
406 | Not Acceptable: The Accept header you sent has not even one application/vnd.api+json media type without parameter. This check exists to conform to the JSON API specification. |
415 | Unsupported Media Type: The Content-Type header you sent is not application/vnd.api+json . This check exists to conform to the JSON API specification. |
422 | Unprocessable Entity: The request was formatted correctly but cannot be processed in its current form. Often used when the specified parameters fail validation errors. |
429 | Too Many Requests: You used more requests than you’re allowed to. Keep an eye on HTTP headers X-RateLimit-Limit and X-RateLimit-Remaining to prevent that from happening again. |
500 | Internal Server Error: Houston, we have a problem. Please try again, and report continued problems to api@jobscore.com |
503 | Service Unavailable: We’re offline for maintenance. Try again later. |
Pagination
Example request:
curl -X "GET" "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=2&page%5Bsize%5D=10" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN"
{
"data": ["REDACTED"],
"links": {
"self": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=2&page%5Bsize%5D=10",
"first": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"prev": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=1&page%5Bsize%5D=10",
"next": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=3&page%5Bsize%5D=10",
"last": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=4&page%5Bsize%5D=10"
},
"meta": {
"pagination": {
"resources": 39,
"pages": 4
}
}
}
All resources with a list (candidates, jobs, etc) have pagination support. We follow the Pagination section from JSON API v1.0.
We accept pagination as query parameters. The page[number]
parameter denotes the page number, starting from 1, with 0 being interpreted as 1. The page[size]
denotes the number of records shown in each page. This number is 100 if omitted. The maximum is 100.
In order to help navigation, we return a links
attribute in the JSON body response, with up to five keys containing URLs: first (the first page), last (the last page), prev (the previous page), next (the next page), and self (the current page).
We display the total counts under the meta.pagination
dictionary. You can check how many records your search yielded under meta.pagination.resources
, while you can see how many pages are there by reading meta.pagination.pages
.
Sorting
Example request:
curl -X "GET" "https://api.jobscore.com/v1/candidates?sort=created_on" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN"
All resources with a list (candidates, jobs, etc.) support sorting. We follow the Sorting section from JSON API v1.0.
We accept sorting order as query parameters. The sort
parameter denotes the sort field. Sorting is ascending by default, unless noted with a prefixed minus sign (“-”), which makes it descending. Most of the lists have default sort order as “-created_on”, showing an descending list of the created_on field, thus showing the most recently created resources.
Filtering
Example request:
curl -X "GET" "https://api.jobscore.com/v1/candidates?filter%5Bcreated_on_before%5D=2016-12-31T23:59:59Z" \
-H "Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN"
Most resources with a list (candidates, jobs, etc) support filtering. We follow the Filtering section from JSON API v1.0.
We accept filters as query parameters. The filter[]
array denotes a list of filters that are ANDed. Different lists support different specific filters as noted below.
Candidates
Candidates represent specific people you are trying to hire right now — or at some point in the future.
- Candidates can add themselves to your account by applying; be submitted by search firm recruiters; added by your team as referrals or or added as part of sourcing/research efforts.
- Candidate records include personally identifiable information like name, phone number, email, address, work experience and education history.
- Candidates may be associated with documents (resumes, cover letters), notes, emails and tasks.
- Candidates are connected to jobs through job assignments. Each assignment has a workflow stage (e.g. interviewing) and a history of status change events.
- Candidates have a Source is how you originally found / came into contact with a candidate. Each candidate has only one source.
The source represents who “gets credit” for finding a candidate. A source may include up to three parts:
- Source which explains how the candidate was added to you JobScore account. For example,someone may have applied because they found one of your jobs on a job board, a sourcer may have done research and found them using Google, or an employee may have added a friend’s resume directly into the system.
- Source detail provides more detail about the primary source. For instance, a candidate who found your job on a job board would have the primary source “Job Board” and the secondary source “Indeed” where a resume found on Google would have the primary source “Database” and secondary source “Google.”
- Referral data is information about the individual who referred someone. Referrals can be added to JobScore using different primary / secondary source combinations (directly entered by a user, replied to an email campaign, found through a social network share), but referral data captures who referred the candidate (first name, last name, email) so that person gets credit.
Each primary source has it’s own set of specific metadata that can be entered and customized. Learn more about sources in JobScore in this support article.
The Candidate Object
Attributes
- first_name required, string
- First name.
- last_name required, string
- Last name.
- email string
- Email address according to RFC 5322.
- home_phone string
- Phone number. If country is “US”, must be a valid 10-digit string, otherwise it is free text.
- home_street1 string
- Street address.
- home_street2 string
- Additional street address.
- home_city string
- City name.
- home_state string
- State name. If country is “US”, must be a valid 2 letters state, otherwise it is free text.
- home_postal_code string
- Postal code or Zip code. If country is “US”, must be Zip-5 or Zip-9.
- home_country string
- Country code, 2 letters.
- profile_links[] list
-
Profile links, such as URLs for Facebook, Twitter and others.
- profile_links[].url string
- Social profile URL address
- profile_links[].type string
-
Social profile URL type. Automatically detected. Optionally, three special types are allowed:
other
portfolio
blog
- tags[] list
- Tags provide additional context or information about candidates. They are a great way to group or categorize candidates with specific attributes. Want to learn more about tags? Read more about different ways to use tags in JobScore in this support article.
- schools[] list
-
Education history.
- schools[].degree_type string
-
degree_type code. Valid options:
certification
some_high_school
high_school
vocational
associates
some_college
bachelors
some_post_graduate
masters
doctorate
postdoctorate
- schools[].degree_major string
- Major.
- schools[].name string
- School name.
- schools[].graduation_year string
- Graduation year, with 4 digits (e.g.: 2010).
- employers[] list
-
Employment history.
- employers[].employer_name string
- Company name for a candidate’s employer.
- employers[].titles[] list
-
List of titles the candidate had in the former employer.
- employers[].titles[].start_year integer
- Start year.
- employers[].titles[].end_year integer or string
- End year number or special string `to_present`, which indicates that this title is the current position of the candidate.
- employers[].titles[].title string
- Title.
- source string
-
Identifier for source. If left empty, it defaults to ‘user’ pointing to the logged in user. Valid options:
-
job_board:
This candidate found your job opening on a Job Board.
When using this source, it is required to setsource_detail
, and it must contain a name for an existing Job Board. You can get a list of job board names with the List Job Boards method. -
company_website:
This candidate found the job opening through your company’s website. -
social_network:
This candidate found the job opening through a social network share.
When using this source, it is required to setsource_detail
, and it must contain a name for an existing Social Network. You can get a list of social network names with the List Social Networks method.
When using this source, it is optional to set a referrer:source_referral_first_name
,source_referral_last_name
andsource_referral_email
. -
user:
This candidate was referred by a user.
When using this source, it is required to setrelationships.source_user
, and it must contain an object referencing to a user. It must be referenced as a JSON API Resource linkage. You can fetch the list of all existing valid users through the List Users method.
When using this source, it is optional to set a referrer:source_referral_first_name
,source_referral_last_name
andsource_referral_email
. -
internal:
This is a current employee that applied for an open job. -
email:
This candidate found the job opening because of referral email sent through JobScore
When using this source, it is required to setsource_detail
, and it must contain the email address that referred him to the job.
When using this source, it is optional to set referrer:source_referral_first_name
,source_referral_last_name
andsource_referral_email
. -
search_firm:
This candidate was sourced by a Search Firm.
When using this source, it is required to setrelationships.source_search_firm
, and it must contain an object referencing to a search firm. It must be referenced as a JSON API Resource linkage. You can fetch the list of all existing valid search firm through the List Search Firms method.
When using this source, it is required to setrelationships.source_search_firm_recruiter
, and it must contain an object referencing to a search firm recruiter. It must be referenced as a JSON API Resource linkage. You can fetch the list of all existing valid search firm recruiter through the List Search Firm Recruiters method.
-
database:
This candidate was found through a resume database.
When using this source, it is required to setsource_detail
, and it must contain a name for an existing Database. You can get a list of database names with the List Databases method. -
event:
This candidate was found through an event.
When using this source, it is required to setsource_detail
, and it must contain the Event’s name.
When using this source, it is required to setsource_detail
, and it must contain a name for an existing Event. You can get a list of Event names with the List Events method.
When using this source, it is optional to set a referrer:source_referral_first_name
,source_referral_last_name
andsource_referral_email
. -
other:
This candidate was found through other means not listed here.
When using this source, it is required to setsource_detail
, and it must contain a plain free-text field with details about how the candidate was sourced. HTML is not allowed. It must contain between 1 and 255 characters.
When using this source, it is optional to set a referrer:source_referral_first_name
,source_referral_last_name
andsource_referral_email
. -
jobscore_network (read-only):
This is shown when your company purchased a candidate’s profile from JobScore. You can find candidates with this source, but you can’t set a candidate to have this source.
-
job_board:
- source_detail hash
-
Details of the candidate’s source. This field’s content changed according to the
source
. It is required wheneversource
is job_board, social_network, user, email, search_firm, database, event or other. - source_referral_first_name string
-
Referral first name. Referral is someone that referred the job.
When this attribute is set, it is required to setsource_referral_last_name
andsource_referral_email
.
Only available ifsource
is social_network, event, user, email or other. - source_referral_last_name string
-
Referral first name. Referral is someone that referred the job.
When this attribute is set, it is required to setsource_referral_first_name
andsource_referral_email
.
Only available ifsource
is social_network, event, user, email or other. - source_referral_email string
-
Referral’s email address according to RFC 5322. Referral is someone that referred the job.
When this attribute is set, it is required to setsource_referral_first_name
andsource_referral_last_name
.
Only available ifsource
is social_network, event, user, email or other. - created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
Note: The source_id
and source_detail
must not be set when the source of the candidate is a Search Firm. Currently we do not support writing Search Firms sources.
A candidate also has the following relationships:
assignments
: The assignments of this candidatenotes
: The notes of this candidatesource_user
: Referral user. Only available (and required) ifsource_id
is source_ats_usersource_social_network
: Referral user. Only available (and required) ifsource_id
is source_social_networksource_event
: Referral user. Only available (and required) ifsource_id
is source_eventsource_resume_database
: Referral user. Only available (and required) ifsource_id
is source_database
To facilitate the retrieval of related resources, relationships are also provided in the form of JSON API links.
List Candidates
curl -X GET https://api.jobscore.com/v1/candidates?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "IvV2eM3TnFb2X5J7nlW35g",
"type": "candidates",
"attributes": {
"first_name": "Peter",
"last_name": "Smith",
"email": "petesmith29@example.org",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z",
"home_phone": "555-555-5555",
"home_street1": "104 Example St",
"home_street2": "Apt. 2",
"home_city": "Exampletown",
"home_state": "CA",
"home_postal_code": "94000",
"home_country": "US",
"source": "user",
"source_detail": null,
"profile_links": [
{
"url": "https://www.facebook.com/PeterSmithExample",
"type": "facebook"
},
{
"url": "https://twitter.com/PeterSmithExample",
"type": "twitter"
}
],
"tags": [
"expert"
],
"schools": [
{
"degree_type": "masters",
"degree_major": "Physics",
"name": "King's College London",
"graduation_year": "1952"
}
],
"employers": [
{
"employer_name": "Physics Enterprise",
"titles": [
{
"start_year": 2010,
"end_year": 2014,
"title": "Physics Specialist"
}
]
}
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null
},
"relationships": {
"source_user": {
"data": {
"id": "aU0UzeSUur6Ak63kKeJOM4",
"type": "users"
}
},
"primary_resume": {
"data": {
"id": "5aIc9hJH9ru8LgvhuitM_g",
"type": "documents"
}
},
"candidate_emails": {
"data": [
]
}
},
"links": {
"notes": {
"href": "/v1/candidates/IvV2eM3TnFb2X5J7nlW35g/notes"
},
"assignments": {
"href": "/v1/candidates/IvV2eM3TnFb2X5J7nlW35g/assignments"
}
}
},
{
"id": "TYbRbNaTBB0jp3uFWsuOaQ",
"type": "candidates",
"attributes": {
"first_name": "François",
"last_name": "Higgs",
"email": "f_higgs@example.org",
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z",
"home_phone": "555-555-5555",
"home_street1": "101 Demonstration St",
"home_street2": "",
"home_city": "Sometown",
"home_state": "CA",
"home_postal_code": "95000",
"home_country": "US",
"source": "other",
"source_detail": "Read article about him.",
"profile_links": [
{
"url": "https://www.facebook.com/FHiggsExample",
"type": "facebook"
},
{
"url": "https://twitter.com/Official_Higgs_Example",
"type": "twitter"
}
],
"tags": [
],
"schools": [
{
"degree_type": "masters",
"degree_major": "Physics",
"name": "Université Libre de Bruxelles",
"graduation_year": "1977"
}
],
"employers": [
{
"employer_name": "Gravity Inc",
"titles": [
{
"start_year": 2007,
"end_year": null,
"title": "Physics Expert"
}
]
}
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null
},
"relationships": {
"primary_resume": {
"data": null
},
"candidate_emails": {
"data": [
]
}
},
"links": {
"notes": {
"href": "/v1/candidates/TYbRbNaTBB0jp3uFWsuOaQ/notes"
},
"assignments": {
"href": "/v1/candidates/TYbRbNaTBB0jp3uFWsuOaQ/assignments"
}
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/candidates?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of candidates.
HTTP Request
GET /candidates
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[email] string
- Filter that returns only records with exact match for the given email address (case insensitive). Email address must follow RFC 5322.
- filter[has_status] string
- Filter that returns only candidate cards which have at least one job assignment with the given status. Valid parameters are: brandnew, active, active:sub_status_id, hired, declined and withdrawn.
- included_relationships[] string
- Include record relationships in the returned query, which are placed inside a field names included. Valid options are: job_assignments
Meta Attributes
This action returns a meta attribute that cointains information related with your pagination. Those attributes are no specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Candidate
curl -X GET https://api.jobscore.com/v1/candidates/IvV2eM3TnFb2X5J7nlW35g \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "IvV2eM3TnFb2X5J7nlW35g",
"type": "candidates",
"attributes": {
"first_name": "Peter",
"last_name": "Smith",
"email": "petesmith29@example.org",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z",
"home_phone": "555-555-5555",
"home_street1": "104 Example St",
"home_street2": "Apt. 2",
"home_city": "Exampletown",
"home_state": "CA",
"home_postal_code": "94000",
"home_country": "US",
"source": "user",
"source_detail": null,
"profile_links": [
{
"url": "https://www.facebook.com/PeterSmithExample",
"type": "facebook"
},
{
"url": "https://twitter.com/PeterSmithExample",
"type": "twitter"
}
],
"tags": [
"expert"
],
"schools": [
{
"degree_type": "masters",
"degree_major": "Physics",
"name": "King's College London",
"graduation_year": "1952"
}
],
"employers": [
{
"employer_name": "Physics Enterprise",
"titles": [
{
"start_year": 2010,
"end_year": 2014,
"title": "Physics Specialist"
}
]
}
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null
},
"relationships": {
"source_user": {
"data": {
"id": "a3yxNySUur6Ar93kKeJOM4",
"type": "users"
}
},
"primary_resume": {
"data": {
"id": "5aIc9hJH9ru8LgvhuitM_g",
"type": "documents"
}
},
"candidate_emails": {
"data": [
]
}
},
"links": {
"notes": {
"href": "/v1/candidates/IvV2eM3TnFb2X5J7nlW35g/notes"
},
"assignments": {
"href": "/v1/candidates/IvV2eM3TnFb2X5J7nlW35g/assignments"
}
}
}
}
Get existing candidates.
HTTP Request
GET /candidates/:id
Parameters
- id required, uid
- Candidate’s unique identifier.
- included_relationships[] string
- Include record relationships in the returned query, which are placed inside a field names included. Valid options are: job_assignments
Candidate Documents
Candidate documents represent resumes and cover letters. They are always associated with a candidate. Resumes and cover letters may be used in job assignments.
A candidate may have more than one resumes attached, but has only one primary resume. This is determined by the primary_resume
relationship in the candidates
resource.
The Candidate Document Object
Attributes
- file_name required, string
-
The file name, such as
resume.pdf
. When fetching records, it is always present. When creating a new document, we will deduce the `file_name` from the attribute `filename` sent via `multipart/form-data`. - mime_type required, string, read-only
- The MIME type of the file. This attribute is read-only and will be deduced from the file we receive.
- purpose required, string
-
The purpose of this file. Valid options:
resume
: A candidate resume.cover_letter
: A cover letter used when applying for a job by creating a new assignment.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
List Documents
curl -X GET https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "IFnHJqU3v-kq13Y_yuXPWQ",
"type": "documents",
"attributes": {
"file_name": "resume.doc",
"mime_type": "application/msword",
"purpose": "resume",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
},
{
"id": "HJTgCBHzkp62anvLOQ9RaQ",
"type": "documents",
"attributes": {
"file_name": "cover_letter.html",
"mime_type": "text/html",
"purpose": "cover_letter",
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of attached documents. You may only list documents for a specific candidate.
HTTP Request
GET /candidates/:candidate_id/documents/:id
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Meta Attributes
This action returns a meta attribute that cointains information related to your pagination. Those attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Document
curl -X GET https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents/IFnHJqU3v-kq13Y_yuXPWQ \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "IFnHJqU3v-kq13Y_yuXPWQ",
"type": "documents",
"attributes": {
"file_name": "resume.doc",
"mime_type": "application/msword",
"purpose": "resume",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
}
}
Get existing candidate document metadata (not the file itself). You’ll need to use the Download method in order to download the file.
HTTP Request
GET /candidates/:candidate_id/documents/:id
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- id required, uid
- Candidate Document’s unique identifier.
Download Document
cURL uses the -v flag to print return headers.
curl -X GET https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/documents/IFnHJqU3v-kq13Y_yuXPWQ/download \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
-v
Among other headers, you will find the following:
(...)
< Location: https://s3.amazonaws.com/jobscore-filestore/3cdd753c67638b901d27ca753ad54f89?X-Amz-Expires=600&X-Amz-Date=20160218T152302Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAILXAOYR2FWDLAARQ/20160218/us-east-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=b3ebac245c3fbc5d205a362de36e23c5de70adae918a8d058461df054acab0bf
(...)
Downloads candidate document. It will return a redirect to a new address from Amazon S3, valid for 10 minutes after you make the request. Keep an eye out for the Location
key in the HTTP headers section, follow that URL to download the file.
HTTP Request
GET /candidates/:candidate_id/documents/:id/download
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- id required, uid
- Candidate Document’s unique identifier.
Candidate Notes
Candidate Notes are how your team enters information about candidates and discusses them.
- Candidate Notes are stored as HTML so your team can use bolding, bullet points, numbered lists and more when they add feedback.
- The ability to read a Candidate Note may be restricted by making it private.
The Candidate Note Object
Attributes
- content required, string
- Note’s content, exclusively in HTML format. When creating a new note or updating, this field will be sanitized.
- private boolean
- Whether this is a private note (true) or not (false). Default is false.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
List Notes
curl -X GET https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "8olEVH44vvdUPXdzdojZLA",
"type": "notes",
"attributes": {
"content": "<p>Good candidate for this job opportunity. I say we should hire him.</p>",
"private": false,
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
},
{
"id": "4B-SQeQJGf-JxVoIbusWIw",
"type": "notes",
"attributes": {
"content": "<p>According to this candidate's LinkedIn profile, he already worked at the same company as Mark from R&D. We should inquire him if they knew each other.</p>",
"private": false,
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of notes. You may only list notes for a specific candidate.
HTTP Request
GET /candidates/:candidate_id/notes
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Meta Attributes
This action returns a meta attribute that cointains information related to your pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Note
curl -X GET https://api.jobscore.com/v1/candidates/l4hjLAjTtrLDJje6kmpU9w/notes/8olEVH44vvdUPXdzdojZLA \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "8olEVH44vvdUPXdzdojZLA",
"type": "notes",
"attributes": {
"content": "<p>Good candidate for this job opportunity. I say we should hire him.</p>",
"private": false,
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
}
}
Get existing notes.
HTTP Request
GET /candidates/:candidate_id/notes/:id
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- id required, uid
- Note’s unique identifier.
Job Assignments
When you consider a candidate for a job, an job assignment is created.
- Each time you consider a candidate for a role, a new job assignment is created.
- Every job assignment has it’s own workflow stage. All candidates start out in the ‘new’ workflow stage.
- Each candidate in the system may have multiple job assignments, or none at all. This means a single candidate may have multiple job assignments and be ‘declined’ for one role while ‘interviewing’ for another.
- There are three ways to create an job assignment in JobScore:
- A candidate can apply directly for a job.
- An external search firm recruiter can submit them for a specific job opportunity.
- A user (employee) can assign them to a job. Employees often assign candidates to roles when making referrals and in-house recruiters usually do this when sourcing passive candidates.
The Job Assignment Object
Attributes
- origin string, read-only
-
The origin of the job assignment. Valid options are:
user
: When job assignment done by a user from your account (your or a coworker).candidate
: When the job assignment was done by the candidate itself. In other words, when the candidate applied to the job himself.jobscore_network
: When the job assignment was created through JobScore Network recommendations.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
- offer_extended_on timestamp ISO8601, read-only
- Record offer extended date in ISO 8601 format.
- offer_accepted_on timestamp ISO8601, read-only
- Record offet accepted date in ISO 8601 format.
- start_date timestamp ISO8601, read-only
- Record start date in ISO 8601 format.
A job assignment also has the following relationships:
candidates
: The candidate that is applying.job
: The job the candidate is applying for.workflow_stage
: The workflow stage this job assignment is currently in.resume
: The resume file the candidate used when applying for the job.cover_letter
: The cover letter the candidate used when applying for the job.
To facilitate the retrieval of related resources, relationships are also provided in the form of JSON API links.
List Job Assignments
curl -X GET https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "D1QM7aZIvCd_Ee2MFcNbKQ",
"type": "assignments",
"attributes": {
"origin": "candidate",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z",
"offer_extended_on": null,
"offer_accepted_on": null,
"start_date_on": null
},
"relationships": {
"candidate": {
"data": {
"id": "zSbCGzFu1FGIRzfeXGaZaw",
"type": "candidates"
}
},
"job": {
"data": {
"id": "LO6cKciop0lMO2UvCyzrwQ",
"type": "jobs"
}
},
"resume": {
"data": {
"id": "IFnHJqU3v-kq13Y_yuXPWQ",
"type": "documents"
}
},
"cover_letter": {
"data": {
"id": "HJTgCBHzkp62anvLOQ9RaQ",
"type": "documents"
}
},
"workflow_stage": {
"data": {
"id": "brandnew",
"type": "workflow_stages"
}
}
},
"links": {
"self": {
"href": "/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments/D1QM7aZIvCd_Ee2MFcNbKQ"
}
}
},
{
"id": "TBnOFWKqasmOhh128uUJ8Q",
"type": "assignments",
"attributes": {
"origin": "user",
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z",
"offer_extended_on": null,
"offer_accepted_on": null,
"start_date_on": null
},
"relationships": {
"candidate": {
"data": {
"id": "zSbCGzFu1FGIRzfeXGaZaw",
"type": "candidates"
}
},
"job": {
"data": {
"id": "vIsygSK2JKab_dlhrbUCwg",
"type": "jobs"
}
},
"workflow_stage": {
"data": {
"id": "active:brhLAoSUur6AA_3kKeJOM4",
"type": "workflow_stages"
}
}
},
"links": {
"self": {
"href": "/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments/TBnOFWKqasmOhh128uUJ8Q"
}
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of job assignments.
HTTP Request
GET /candidates/:candidate_id/assignments
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Job Assignment
curl -X GET https://api.jobscore.com/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments/aQJtsWGyCr5BVHndy7X6hw \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "D1QM7aZIvCd_Ee2MFcNbKQ",
"type": "assignments",
"attributes": {
"origin": "candidate",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z",
"offer_extended_on": null,
"offer_accepted_on": null,
"start_date_on": null,
"offer": {
"id": "cWNHSmTvir6yjuJiwqpjOO",
"offer_status": "Draft",
"created_on": "2019-08-02T18:23:58.458Z",
"updated_on": "2019-08-19T20:46:55.847Z",
"values": [
{
"id": "cWRiduTvir6yjuJiwqpjOO",
"name": "Today's Date",
"value": "08/02/2019",
"position": 1
},
{
"id": "cWRjrMTvir6yjuJiwqpjOO",
"name": "Anticipated Start Date",
"value": "08/05/2019",
"position": 2
},
{
"id": "cWRlz2Tvir6yjuJiwqpjOO",
"name": "Job Title",
"value": "QA Automation Engineer",
"position": 3
},
{
"id": "cWRnr2Tvir6yjuJiwqpjOO",
"name": "Hiring Manager Title",
"value": "HR Manager, Engineering Manager",
"position": 5
},
{
"id": "cWRoneTvir6yjuJiwqpjOO",
"name": "Office Location - City, State",
"value": "San Francisco, CA",
"position": 6
},
{
"id": "cWRph-Tvir6yjuJiwqpjOO",
"name": "Compensation Interval",
"value": "per week",
"position": 7
},
{
"id": "cWRqh4Tvir6yjuJiwqpjOO",
"name": "Compensation Amount",
"value": "$ 200.00",
"position": 8
}
],
"links": {
"offer_letter": {
"href": "/v1/candidates/avSWGaMcmr5Azu3kKeJOM4/documents/b6r0AmWSir6zn9JiwqpjOO/download"
},
"signed_offer_letter": null
}
}
}
},
"relationships": {
"candidate": {
"data": {
"id": "zSbCGzFu1FGIRzfeXGaZaw",
"type": "candidates"
}
},
"job": {
"data": {
"id": "LO6cKciop0lMO2UvCyzrwQ",
"type": "jobs"
}
},
"resume": {
"data": {
"id": "IFnHJqU3v-kq13Y_yuXPWQ",
"type": "documents"
}
},
"cover_letter": {
"data": {
"id": "HJTgCBHzkp62anvLOQ9RaQ",
"type": "documents"
}
},
"workflow_stage": {
"data": {
"id": "brandnew",
"type": "workflow_stages"
}
}
},
"links": {
"self": {
"href": "/v1/candidates/zSbCGzFu1FGIRzfeXGaZaw/assignments/D1QM7aZIvCd_Ee2MFcNbKQ"
}
}
}
}
Job assignment data can be retrieved with a GET to the /v1/candidates/:candidate_id/:assignment_id
endpoint, where :candidate_id
is the Candidates’s ID
and :assignment_id
is the Job Assignment’s ID
.
HTTP Request
GET /candidates/:candidate_id/assignments/:id
Parameters
- candidate_id required, uid
- Candidate’s unique identifier.
- id required, uid
- Job Assignment’s unique identifier.
Workflow Stages
Workflow Stages are the steps in your hiring process. All candidates that are assigned to a job have a workflow stage. A candidate may have more than one job assignment, hence they have more than one workflow stage. Stages may be customized per-account and per-job
- The first stage for a candidate is always “New”
- Candidates can be moved through a configurable set of “Active” stages like screening, interviewing or offer
- There are three “ending” stages for candidates: Declined, Withdrawn, and Hired.
Workflow stages only indicate where a candidate is in the hiring process right now. Candidate activity is recorded separately as emails (correspondence between your team and the candidate), tasks (for scheduled events like phone screens and interviews) and notes (feedback entered by users about the candidate).
The Workflow Stage Object
Attributes
- name required, string
- Workflow stage name.
List Workflow Stages
curl -X GET https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "brandnew",
"type": "workflow_stages",
"attributes": {
"name": "brandnew"
}
},
{
"id": "active:bc7XhuSUur6Av53kKeJOM4",
"type": "workflow_stages",
"attributes": {
"name": "Interview"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages?page%5Bnumber%5D=5&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 10,
"pages": 5
}
}
}
Get list of workflow stages. As stages may be customized per job, you must build a list of stages for a specific job.
HTTP Request
GET /jobs/:job_id/workflow_stages
Parameters
- job_id required, uid
- Job’s unique identifier.
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Workflow Stage
curl -X GET https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg/workflow_stages/active:5aM8oe4uk_8Zo0YqQcWqUg \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "active:be5YUySUur6AxB3kKeJOM4",
"type": "workflow_stages",
"attributes": {
"name": "Interviewing"
}
}
}
Get existing workflow stage.
HTTP Request
GET /jobs/:job_id/workflow_stages/:id
Parameters
- job_id required, uid
- Job’s unique identifier.
- id required, uid
- Workflow stage’s unique identifier.
Jobs
Jobs represent specific roles you are trying to hire candidates for. In JobScore there are 6 different job statuses: Draft, Internal, Open, On-Hold, Closed and Filled.
- Draft Jobs are jobs that are not ready to start receiving candidate applies.
- Internal Jobs are roles you are trying to fill with current company employees. They are not displayed in your careers site, but can be accessed by anyone with the URL.
- Open Jobs are roles you are actively trying to fill, and will appear publicly on your careers site.
- On Hold Jobs are roles that you are not working on yet or that you have paused working on for a while.
- Closed Jobs are roles that you tried to fill but have stopped working on and don’t plan to reopen or work on anymore.
- Filled Jobs are roles where you have successfully hired a candidate.
The Job Object
Attributes
- title required, string
- Job title.
- description required, string
- Job description
- status required, string
-
Current job status. More details below. Valid options are:
draft
: job with work in progress. Not accessible externally.internal
: job not displayed in your careers site but accessible through thepublic_description_url
link.open
: job is open and your company is hiring.on_hold
: “pauses” application submission.filled
: you hired someone.closed
: job was closed before hiring anyone. Since deleting jobs is not possible for compliance reasons, use this job status instead of deleting.
- publish boolean
- Whether this job is published in your company’s careers site. When a job is not published, it is still possible for candidates to apply — but only if they have the public URLs for this job. Those URLs can be found at link’s public_description_url and public_application_url. If not given, publish is set as true for open jobs and false on any other statuses.
- requisition_number integer, read-only
- The number of this requisition.
- job_types required, list
-
List of job types. Require at least one job type. Repeated types will be ignored. Valid options are:
full_time
part_time
contract
temporary
temp_to_perm
internship
volunteer
- career_level required, string
-
Required career level for this job. More details below. Valid options are:
student_high_school
: Student (High School)student
: Studententry_level
: Entry Levelmid_level
: Mid-Levelexperienced_non_manager
: Experienced (Non-Manager)manager
: Manager (Manager/Supervisor of Staff)executive
: Executive (SVP, VP, Director, etc.)senior_executive
: Senior Executive (President, CFO, etc.)
- salary_minimum integer
- Minimum salary, in cents.
- salary_maximum integer
- Maximum salary, in cents.
- hourly_minimum integer
- Minimum hourly rate, in cents.
- hourly_maximum integer
- Maximum hourly rate, in cents.
- custom_fields read-only
- List of custom fields for this job. Only job fields with “Include in Feed” checked are shown here.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
A job resource also has the following relationships:
location
: The location for this job. Informing either this relationship orlocation_id
is required.department
: The department for this job. Informing either this relationship ordepartment_id
is required.-
job_active_sub_statuses
: List of Workflow Stages.
While creating or updating a job, this field is required for Scale and Enterprise customers (but optional for Free and Start customers).
The following fields should be informed:position
: Is a integer that represents the stage position. Values for this field should start from 0.account_active_sub_status_id
: Is a string that represents the ID of the referred workflow stage. Must be obtained from calling the list of available stages for the account.
- Screening
- Interviewing
- Check References
- Offer
A job resource also has the following links:
public_description_url
: Full URL for the public job description page. If the job status is not “open” or “internal”, this URL will render a “Not Found” page.public_application_url
: Full URL for the application page (i.e. if a job seeker clicks the “Apply Now” button, they will see this page). If the job status is not “open” or “internal”, this URL will render a “Not Found” page.
List Jobs
curl -X GET https://api.jobscore.com/v1/jobs?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "ob3EQtrPkREE62lZiPQ6Wg",
"type": "jobs",
"attributes": {
"title": "Physics Specialist",
"description": "We are looking for a Physics specialist.",
"status": "open",
"requisition_number": 3,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
{
"label": "What's your favorite programming language?",
"content": "Python"
}
],
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
},
"relationships": {
"location": {
"data": {
"id": "avSWGaMcmr5z4O3kKeJOM4",
"type": "locations"
}
},
"department": {
"data": {
"id": "avSWGaMcmr5z463kKeJOM4",
"type": "departments"
}
},
"job_active_sub_statuses": {
"data": [
{
"id": "avSWGaMcmr5z5d3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z5c3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z5b3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z5a3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z4_3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z4-3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z493kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z483kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z473kKeJOM4",
"type": "job_active_sub_statuses"
}
]
}
},
"links": {
"location": {
"href": "/v1/locations/avSWGaMcmr5z4O3kKeJOM4"
},
"department": {
"href": "/v1/departments/avSWGaMcmr5z463kKeJOM4"
},
"public_description_url": {
"href": "https://dev.jobscore.com/careers/iusto67963/jobs/physics-specialist-ob3EQtrPkREE62lZiPQ6Wg"
},
"public_application_url": {
"href": "https://dev.jobscore.com/apply_flow/applications/go?job_id=ob3EQtrPkREE62lZiPQ6Wg"
}
}
},
{
"id": "yrjzegVHDqBb0D4Y0yiUsQ",
"type": "jobs",
"attributes": {
"title": "Physics Intern",
"description": "We are looking for a Physics intern.",
"status": "open",
"requisition_number": 2,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
{
"label": "What's your favorite programming language?",
"content": "Go"
}
],
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z"
},
"relationships": {
"location": {
"data": {
"id": "bTaRqawwKr5z343kKeJOM4",
"type": "locations"
}
},
"department": {
"data": {
"id": "bTaRqawwKr5z4k3kKeJOM4",
"type": "departments"
}
},
"job_active_sub_statuses": {
"data": [
{
"id": "bTaRqawwKr5z4t3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4s3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4r3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4q3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4p3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4o3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4n3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4m3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "bTaRqawwKr5z4l3kKeJOM4",
"type": "job_active_sub_statuses"
}
]
}
},
"links": {
"location": {
"href": "/v1/locations/bTaRqawwKr5z343kKeJOM4"
},
"department": {
"href": "/v1/departments/bTaRqawwKr5z4k3kKeJOM4"
},
"public_description_url": {
"href": "https://dev.jobscore.com/careers/iusto67963/jobs/physics-intern-yrjzegVHDqBb0D4Y0yiUsQ"
},
"public_application_url": {
"href": "https://dev.jobscore.com/apply_flow/applications/go?job_id=yrjzegVHDqBb0D4Y0yiUsQ"
}
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/jobs?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/jobs?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/jobs?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/jobs?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of jobs.
HTTP Request
GET /jobs
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[status] string
- Filter that returns only records with the given status. Example: open
- filter[requisition_number] string
- Filter that returns only records with the given requisiton number. Example: 103
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Job
curl -X GET https://api.jobscore.com/v1/jobs/ob3EQtrPkREE62lZiPQ6Wg \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "ob3EQtrPkREE62lZiPQ6Wg",
"type": "jobs",
"attributes": {
"title": "Physics Specialist",
"description": "We are looking for a Physics specialist.",
"status": "open",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
{
"label": "What's your favorite programming language?",
"content": "Python"
}
],
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
},
"relationships": {
"location": {
"data": {
"id": "avSWGaMcmr5z093kKeJOM4",
"type": "locations"
}
},
"department": {
"data": {
"id": "avSWGaMcmr5z1p3kKeJOM4",
"type": "departments"
}
},
"job_active_sub_statuses": {
"data": [
{
"id": "avSWGaMcmr5z1y3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1x3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1w3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1v3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1u3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1t3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1s3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1r3kKeJOM4",
"type": "job_active_sub_statuses"
},
{
"id": "avSWGaMcmr5z1q3kKeJOM4",
"type": "job_active_sub_statuses"
}
]
}
},
"links": {
"location": {
"href": "/v1/locations/avSWGaMcmr5z093kKeJOM4"
},
"department": {
"href": "/v1/departments/avSWGaMcmr5z1p3kKeJOM4"
},
"public_description_url": {
"href": "https://dev.jobscore.com/careers/qui35714/jobs/physics-specialist-ob3EQtrPkREE62lZiPQ6Wg"
},
"public_application_url": {
"href": "https://dev.jobscore.com/apply_flow/applications/go?job_id=ob3EQtrPkREE62lZiPQ6Wg"
}
}
}
}
Get existing job.
HTTP Request
GET /jobs/:id
Parameters
- id required, uid
- Job’s unique identifier.
Departments
Departments in JobScore represent the different parts of your organization. Departments are a way to classify and group jobs so job seekers can easily find the jobs appropriate for them. Typical department names include Sales, Marketing, Operations, Finance, etc.
The Department Object
Attributes
- name required, string
- Department name. Typical department names include Sales, Marketing, Operations, Finance, etc.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
List Department
curl -X GET https://api.jobscore.com/v1/departments?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "mRAnrKLrNraZvuxsU7kvAg",
"type": "departments",
"attributes": {
"name": "Operations",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
},
{
"id": "NJkxcdtcuuPvY5CdkyuNlQ",
"type": "departments",
"attributes": {
"name": "Sales",
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/departments?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/departments?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/departments?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/departments?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of departments.
HTTP Request
GET /departments
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Department
curl -X GET https://api.jobscore.com/v1/departments/mRAnrKLrNraZvuxsU7kvAg \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "mRAnrKLrNraZvuxsU7kvAg",
"type": "departments",
"attributes": {
"name": "Operations",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
}
}
Get existing department.
HTTP Request
GET /departments/:id
Parameters
- id required, uid
- Department’s unique identifier.
Locations
Locations are where a job is located. It’s where a candidate will work when you hire them.
- Locations require a street address and Zip code. This information is required because some job boards require it to post on their site.
- Locations may have an an external name. When you add an external name this is what job seekers will see when they view and apply to jobs. External names are very useful when you need to publish a job as remote / work from home.
- Locations may also have an internal name. This is what your team will see when they use the application. Internal names are very useful when you have more than one office or store in the same city.
The Location Object
Attributes
- nickname string
-
Internal nickname for the location. This is what employees see in filters and reports. Customizing the internal name of a location overrides the standard “city, state” location display inside of JobScore for your employees. Most employers only customize the internal name if they have more than one location in the same city. If left
null
, it will show “city, state”. - public_nickname string
-
Public nickname for the location. This is what job seekers see when they apply. Customizing the external name of a location overrides the standard “city, state” location display on your careers site seen by job seekers. Most employers customize the external name if they want to publish a job with “no location” where candidates can work remotely from anywhere. If left
null
, it will show “city, state”. - street1 required, string
- Street Address 1.
- street2 string
- Street Address 2.
- postal_code required, string
- Postal code or Zip code. If country is “US”, must be Zip-5 or Zip-9.
- city required, string
- City
- state required, string
- State name. If country is “US”, must be a valid 2 letters state, otherwise it is free text.
- country required, string
- Country code, 2 letters.
- created_on timestamp ISO8601, read-only
- Record creation time in ISO 8601 format.
- updated_on timestamp ISO8601, read-only
- Record last update time in ISO 8601 format.
List Location
curl -X GET https://api.jobscore.com/v1/locations?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "5sqa26jPNhzHEj0nwxYgbw",
"type": "locations",
"attributes": {
"nickname": "HQ",
"public_nickname": null,
"street1": "1 Market St",
"street2": null,
"postal_code": "94105",
"city": "San Francisco",
"state": "CA",
"country": "US",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
},
{
"id": "AFaSKODboWNsej-AhcCeEg",
"type": "locations",
"attributes": {
"nickname": null,
"public_nickname": null,
"street1": "1 5th Ave",
"street2": null,
"postal_code": "10003",
"city": "New York",
"state": "NY",
"country": "US",
"created_on": "2015-09-12T16:15:04.000Z",
"updated_on": "2015-09-12T16:15:04.000Z"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/locations?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/locations?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/locations?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/locations?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of locations.
HTTP Request
GET /locations
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Location
curl -X GET https://api.jobscore.com/v1/locations/5sqa26jPNhzHEj0nwxYgbw \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "5sqa26jPNhzHEj0nwxYgbw",
"type": "locations",
"attributes": {
"nickname": "HQ",
"public_nickname": null,
"street1": "1 Market St",
"street2": null,
"postal_code": "94105",
"city": "San Francisco",
"state": "CA",
"country": "US",
"created_on": "2015-12-01T12:00:16.000Z",
"updated_on": "2015-12-01T12:00:16.000Z"
}
}
}
Get existing location.
HTTP Request
GET /locations/:id
Parameters
- id required, uid
- Location’s unique identifier.
Users
Typically every team member that participates in the hiring process is invited to use JobScore and added as a user. There are four different access levels for users: Owners, Admins, Users and Guests.
The User Object
- first_name required, string
- First name.
- last_name required, string
- Last name.
- email required, string
- Email address.
List Users
curl -X GET https://api.jobscore.com/v1/users
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "PKjvKIeeg0-nad2YhvTFyw",
"type": "users",
"attributes": {
"email": "albert@example.org",
"first_name": "Albert",
"last_name": "Hertz"
}
},
{
"id": "eHMa2dzvcrbaBMEkZa455g",
"type": "users",
"attributes": {
"email": "robert@example.org",
"first_name": "Robert",
"last_name": "Raymond"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/users?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/users?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/users?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/users?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
List all users in your company.
HTTP Request
GET /users
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
- sort string
- Sort order. Allowed attribute is created_on. Prepend with a - (minus) sign to reverse the order. Default is -created_on.
- filter[created_on_after] timestamp ISO8601
- Filter that returns only records created after given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
- filter[created_on_before] timestamp ISO8601
- Filter that returns only records created before given date. Date must be in ISO8601 format. Default is empty. Example: 2015-12-31T23:59:59Z
Get User
curl -X GET https://api.jobscore.com/v1/users/PKjvKIeeg0-nad2YhvTFyw
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "PKjvKIeeg0-nad2YhvTFyw",
"type": "users",
"attributes": {
"email": "albert@example.org",
"first_name": "Albert",
"last_name": "Hertz"
}
}
}
Get existing user.
HTTP Request
GET /users/:id
Parameters
- id required, uid
- User’s unique identifier.
Get Logged in User
curl -X GET https://api.jobscore.com/v1/users/me
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "PKjvKIeeg0-nad2YhvTFyw",
"type": "users",
"attributes": {
"email": "albert@example.org",
"first_name": "Albert",
"last_name": "Hertz"
}
}
}
Get logged in user.
HTTP Request
GET /users/me
Sources
Every Candidate has a source. The source is how you originally found / came into contact with a candidate. Each candidate has only one source. The source represents who “gets credit” for finding a candidate. A source may include up to three parts:
- Source which explains how the candidate was added to you JobScore account. For example,someone may have applied because they found one of your jobs on a job board, a sourcer may have done research and found them using google, or an employee may have added a friend’s resume directly into the system.
- Source detail provides more detail about the primary source. For instance, a candidate who found your job on a job board would have the primary source “Job Board” and the secondary source “Indeed” where a resume found on google would have the primary source “Database” and secondary source “Google.”
- Referral data is information about the individual who referred someone. Referrals can be added to JobScore using different primary / secondary source combinations (directly entered by a user, replied to an email campaign, found through a social network share), but referral data captures who referred the candidate (first name, last name, email) so that person gets credit.
Each primary source has it’s own set of specific metadata that can be entered and customized. Learn more about sources in JobScore in this support article.
The Event Object
Attributes
- name required, string, read-only
- Name.
List Events
curl -X GET https://api.jobscore.com/v1/sources/events?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "95543839ed2358acfffad4",
"type": "sources/events",
"attributes": {
"name": "EXPO Fair"
}
},
{
"id": "fd68e0952d6942c8d80cf7",
"type": "sources/events",
"attributes": {
"name": "Münich Event 2020"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/events?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"next": "https://api.jobscore.com/v1/sources/events?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/events?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of Events to be used as sources.
HTTP Request
GET /sources/events
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Event
curl -X GET https://api.jobscore.com/v1/sources/events/7927f138711ad7d18769bc \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "fd68e0952d6942c8d80cf7",
"type": "sources/events",
"attributes": {
"name": "Münich Event 2020"
}
}
}
Get existing Event.
HTTP Request
GET /sources/events/:id
Parameters
- id required, uid
- Event’s unique identifier.
The Database Object
Attributes
- name required, string, read-only
- Name.
List Databases
curl -X GET https://api.jobscore.com/v1/sources/databases?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "4759bf14d7a511508e86c3",
"type": "sources/databases",
"attributes": {
"name": "Builder"
}
},
{
"id": "7927f138711ad7d18769bc",
"type": "sources/databases",
"attributes": {
"name": "Dice"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/databases?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/sources/databases?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/sources/databases?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/databases?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of databases to be used as sources.
HTTP Request
GET /sources/databases
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Database
curl -X GET https://api.jobscore.com/v1/sources/databases/7927f138711ad7d18769bc \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "7927f138711ad7d18769bc",
"type": "sources/databases",
"attributes": {
"name": "Dice"
}
}
}
Get existing database.
HTTP Request
GET /sources/databases/:id
Parameters
- id required, uid
- Database’s unique identifier.
The Job Board Object
Attributes
- name required, string, read-only
- Name.
List Job Boards
curl -X GET https://api.jobscore.com/v1/sources/job_boards?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "5442e2b64fa09764b9f593",
"type": "sources/job_boards",
"attributes": {
"name": "GitHub"
}
},
{
"id": "bfa9ef81ce0f02ce23c4b5",
"type": "sources/job_boards",
"attributes": {
"name": "My Company Internal Job Board"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/job_boards?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/sources/job_boards?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/sources/job_boards?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/job_boards?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of Job Boards to be used as sources.
HTTP Request
GET /sources/job_boards
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Job Board
curl -X GET https://api.jobscore.com/v1/sources/job_boards/7927f138711ad7d18769bc \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "5442e2b64fa09764b9f593",
"type": "sources/job_boards",
"attributes": {
"name": "GitHub"
}
}
}
Get existing Job Board.
HTTP Request
GET /sources/job_boards/:id
Parameters
- id required, uid
- Job Board’s unique identifier.
The Search Firms Object
Attributes
- name required, string, read-only
- Name.
List Search Firms
curl -X GET https://api.jobscore.com/v1/sources/search_firms?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "DgKjrsWC5T4gy4N_tTrAYg",
"type": "search_firms",
"attributes": {
"name": "Manpower"
}
},
{
"id": "mh86P5w23lpIY6gvW4M3-Q",
"type": "search_firms",
"attributes": {
"name": "Big-O Talent"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/search_firms?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/sources/search_firms?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/sources/search_firms?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/search_firms?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of Search Firms to be used as sources.
HTTP Request
GET /sources/search_firms
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Search Firm
curl -X GET https://api.jobscore.com/v1/sources/search_firms/DgKjrsWC5T4gy4N_tTrAYg \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "DgKjrsWC5T4gy4N_tTrAYg",
"type": "search_firms",
"attributes": {
"name": "Manpower"
}
}
}
Get existing Search Firm.
HTTP Request
GET /sources/search_firms/:id
Parameters
- id required, uid
- Search Firms’s unique identifier.
The Search Firm Recruiter Object
Attributes
- first_name required, string, read-only
- First name.
- last_name required, string, read-only
- Last name.
List Search Firm Recruiters
curl -X GET https://api.jobscore.com/v1/sources/search_firms/DgKjrsWC5T4gy4N_tTrAYg/recruiters?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "saFwhDDxIR2uO7d1Nz57Kg",
"type": "search_firm_recruiters",
"attributes": {
"first_name": "Edmund",
"last_name": "Landau"
},
"relationships": {
"search_firm": {
"data": {
"id": "mh86P5w23lpIY6gvW4M3-Q",
"type": "search_firms"
}
}
}
},
{
"id": "5wlqwO7rnt6JHt21iuyXtA",
"type": "search_firm_recruiters",
"attributes": {
"first_name": "Paul",
"last_name": "Heinrich Bachmann"
},
"relationships": {
"search_firm": {
"data": {
"id": "mh86P5w23lpIY6gvW4M3-Q",
"type": "search_firms"
}
}
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/search_firms/mh86P5w23lpIY6gvW4M3-Q/recruiters?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/sources/search_firms/mh86P5w23lpIY6gvW4M3-Q/recruiters?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/sources/search_firms/mh86P5w23lpIY6gvW4M3-Q/recruiters?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/search_firms/mh86P5w23lpIY6gvW4M3-Q/recruiters?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of Search Firm Recruiter to be used as sources.
HTTP Request
GET /sources/search_firms/:search_firm_id/recruiters
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Search Firm Recruiter
curl -X GET https://api.jobscore.com/v1/sources/search_firms/DgKjrsWC5T4gy4N_tTrAYg/recruiters/saFwhDDxIR2uO7d1Nz57Kg \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "saFwhDDxIR2uO7d1Nz57Kg",
"type": "search_firm_recruiters",
"attributes": {
"first_name": "Edmund",
"last_name": "Landau"
},
"relationships": {
"search_firm": {
"data": {
"id": "mh86P5w23lpIY6gvW4M3-Q",
"type": "search_firms"
}
}
}
}
}
Get existing Search Firm.
HTTP Request
GET /sources/search_firms/:search_firm_id/recruiters/:id
Parameters
- id required, uid
- Search Firm Recruiter’s unique identifier.
The Social Networks Object
Attributes
- name required, string, read-only
- Name.
List Social Networks
curl -X GET https://api.jobscore.com/v1/sources/social_networks?page%5Bsize%5D=2 \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": [
{
"id": "82da67b211249624f24f3c",
"type": "sources/social_networks",
"attributes": {
"name": "Facebook"
}
},
{
"id": "6b6390a4416131f82b6ffb",
"type": "sources/social_networks",
"attributes": {
"name": "LinkedIn"
}
}
],
"links": {
"self": "https://api.jobscore.com/v1/sources/social_networks?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"first": "https://api.jobscore.com/v1/sources/social_networks?page%5Bnumber%5D=1&page%5Bsize%5D=2",
"prev": null,
"next": "https://api.jobscore.com/v1/sources/social_networks?page%5Bnumber%5D=2&page%5Bsize%5D=2",
"last": "https://api.jobscore.com/v1/sources/social_networks?page%5Bnumber%5D=2&page%5Bsize%5D=2"
},
"meta": {
"pagination": {
"resources": 3,
"pages": 2
}
}
}
Get list of Social Networks to be used as sources.
HTTP Request
GET /sources/social_networks
Parameters
- page[number] integer
- Page number. Starts at 1. Default is 1.
- page[size] integer
- Number of records per page. Maximum is 100. Default is 100.
Meta Attributes
This action returns a meta attribute that cointains information related to pagination. These attributes are not specified by the JSON API, but we return them in order to make it easier for our customers using the API.
- meta.pagination.resources integer
- Total number of resources your filters found (or all you have, if you didn’t set any filters). This includes results across all pages.
- meta.pagination.pages integer
- Total number of pages.
Get Social Networks
curl -X GET https://api.jobscore.com/v1/sources/social_networks/7927f138711ad7d18769bc \
-H 'Authorization: Token token=YOUR_PERSONAL_ACCESS_TOKEN'
Returns JSON structured like this:
{
"data": {
"id": "5392c950bdde4be7e5f5b8",
"type": "sources/social_networks",
"attributes": {
"name": "Twitter"
}
}
}
Get existing Social Networks.
HTTP Request
GET /sources/social_networks/:id
Parameters
- id required, uid
- Social Networks’s unique identifier.
Webhooks
Webhooks allow you to listen for specific events in JobScore. Once the event happens,
we’ll make a POST
HTTP request to a URL you’ve given to us.
Currently, you can create webhooks for the following events in JobScore:
workflow_stage_changed
: Triggers when a candidate’s workflow stage is changed;task_added
: Triggers when a task is added for a job;candidate_applied
: Triggers when a candidate apply for a job;job_added
: Triggers when a job is added;job_status_changed
: Triggers when a job’s status is changed.
You can create webhooks by visiting Integrations > API Keys & Webhooks.
Validating the Secret
After creating a webhook endpoint, JobScore will return you a randomly generated secret associated with this webhook. It looks like this:
BqlnkciDAsSax-Hk5Gxx-h3QGQuukA
As an additional and optional security step, you can use this secret to
validate if the request really came from JobScore, and reject it otherwise.
To do that you need to calculate the HMAC digest and check if it’s equal to
the one informed on the X-Signature
HTTP header of that request.
signature = OpenSSL::HMAC.hexdigest('sha256', secret, raw_request_body)
Ruby example.
Retry policy
If we can’t deliver the webhook for any reason, either by the server not responding or by getting a status code different than 2XX, we’ll retry the request according to the following policy:
- After 5 minutes;
- After 30 minutes;
- After 1 hour;
- After 3 hours;
- After 6 hours.
Also, if we receive a status code of 410 we’ll automatically disable the webhook.
The Webhook Object
{
"data": {
"id": "cPsC744sqr6kHldNDWqL8o",
"type": "events",
"attributes": {
"event_type": "<EVENT_TYPE>",
"details": {
}
}
}
}
The specific attributes for each event are different, but some base ones are sent on all events.
id
: The ID of this specific event;event_type
: The event type. Can be one of:workflow_stage_changed
task_added
candidate_applied
job_added
job_status_changed
details
: Some event specific details;- Other event specific attributes. See on the next sections which additional attributes are sent for each event type.
Candidate Workflow Stage Changed
{
"data": {
"id": "aQQ5dOSUur6Aj63kKeJOM4",
"type": "events",
"attributes": {
"event_type": "workflow_stage_changed",
"account_id": "aQFbLoSUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"details": {
"message": "Stage changed from New to Screening",
"pre_candidate_status_id": 57,
"post_candidate_status_id": 59,
"post_candidate_sub_status_id": "aQFG_ySUur6Aj63kKeJOM4"
},
"candidate": {
"id": "aQPOTCSUur6Aj63kKeJOM4",
"first_name": "Deana",
"last_name": "Anderson",
"email": "kermit.stehr@west.biz",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC",
"home_phone": "600-880-0907",
"home_street1": "Apt. 499",
"home_street2": "Suite 204",
"home_city": "Pollyton",
"home_state": "VA",
"home_postal_code": "87482-1021",
"home_country": "US",
"source": "other",
"source_detail": "Fatback frankfurter capicola beef Kevin.",
"profile_links": [
],
"tags": [
],
"schools": [
],
"employers": [
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null,
"primary_resume": null,
"candidate_emails": [
]
},
"job": {
"id": "aQNbEOSUur6Aj63kKeJOM4",
"title": "Regional Accountability Agent",
"description": "Mustache keffiyeh gluten-free etsy cred biodiesel hoodie locavore tofu. Readymade Wayfarers cardigan moon Wes Anderson Shoreditch lo-fi. Wes anderson single-origin coffee Cosby Sweater McSweeney's aesthetic iPhone mlkshk banh mi.",
"status": "open",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
],
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC",
"location": {
"id": "aQK5-CSUur6Aj63kKeJOM4",
"nickname": null,
"public_nickname": null,
"street1": "Wehner Corners",
"street2": null,
"postal_code": "32408",
"city": "Homershire",
"state": "DE",
"country": "US",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
"department": {
"id": "aQM2XOSUur6Aj63kKeJOM4",
"name": "pancetta",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
"job_active_sub_statuses": [
{
"id": "aQN_Q8SUur6Aj63kKeJOM4",
"position": 201,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQN-NCSUur6Aj63kKeJOM4",
"position": 200,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQN9D2SUur6Aj63kKeJOM4",
"position": 7,
"account_active_sub_status_id": "aQHXUmSUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQN1OMSUur6Aj63kKeJOM4",
"position": 6,
"account_active_sub_status_id": "aQHFYISUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQNUzaSUur6Aj63kKeJOM4",
"position": 5,
"account_active_sub_status_id": "aQGuyWSUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQNNx8SUur6Aj63kKeJOM4",
"position": 4,
"account_active_sub_status_id": "aQF3pMSUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQNFL-SUur6Aj63kKeJOM4",
"position": 3,
"account_active_sub_status_id": "aQFG_ySUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQNyGeSUur6Aj63kKeJOM4",
"position": 2,
"account_active_sub_status_id": "aQFqr2SUur6Aj63kKeJOM4",
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
},
{
"id": "aQNpyuSUur6Aj63kKeJOM4",
"position": 0,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:54 UTC",
"updated_on": "2019-07-30 16:14:54 UTC"
}
]
},
"previous_workflow_stage": {
"id": "brandnew",
"name": "brandnew"
},
"current_workflow_stage": {
"id": "active:aQFG_ySUur6Aj63kKeJOM4",
"name": "Screening"
},
"hiring_team_role": {
"id": 264,
"name": "Hiring Manager"
}
}
}
}
candidate
: The candidate which the workflow stage was changed;job
: The job assigned with this candidate;previous_workflow_stage
: The former workflow stage;current_workflow_stage
: The updated workflow stage;hiring_team_role
: The role of the user that created the webhook in this job, ornull
if not part of the hiring team.
Task Added
{
"data": {
"id": "bq_iOSSUur6AA-3kKeJOM4",
"type": "events",
"attributes": {
"event_type": "task_added",
"account_id": "bq1Mn0SUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"details": {
"task_subject": "aut voluptas distinctio",
"task_group_id": "bq-X8GSUur6AA-3kKeJOM4",
"task_slot_id": "bq-4k8SUur6AA-3kKeJOM4",
"task_id": "bq-9YESUur6AA-3kKeJOM4",
"task_duration": 604800,
"task_calendar_sync": false
},
"task": {
"id": "bq-9YESUur6AA-3kKeJOM4",
"subject": "aut voluptas distinctio",
"task_type": "nesciunt",
"description": "Rufus Howell for Human Web Developer\n\nPhone: 204-505-6333\nEmail: vicenta.thompson@beatty.co.uk\nProfile: employer/candidate/view/bq-KG-SUur6AA-3kKeJOM4?sub=view_overview\n\nSchedule:\nAll times are in the Pacific Time (US & Canada) timezone.\n09:15am - 09:15am Bobby Schneider\n\nAdd Feedback: employer/messages/add_feedback?candidate_card_id=bq-KG-SUur6AA-3kKeJOM4&job_id=bq8HaqSUur6AA-3kKeJOM4&task_group_time_slot_id=bq-4k8SUur6AA-3kKeJOM4\n",
"locations": [
],
"start_time": "2019-08-06 16:15:58 UTC",
"end_time": "2020-09-29 16:15:58 UTC",
"optional": false,
"required": true,
"completed_on": null,
"timezone": "Pacific Time (US & Canada)"
},
"assignee": {
"id": "bq4tMISUur6AA-3kKeJOM4",
"email": "jonah.anderson@schinner.name",
"first_name": "Bobby",
"last_name": "Schneider"
},
"candidate": {
"id": "bq-KG-SUur6AA-3kKeJOM4",
"first_name": "Rufus",
"last_name": "Howell",
"email": "vicenta.thompson@beatty.co.uk",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC",
"home_phone": "204-505-6333",
"home_street1": "Apt. 035",
"home_street2": "Suite 202",
"home_city": "Charoletteport",
"home_state": "AR",
"home_postal_code": "91815-6344",
"home_country": "US",
"source": "other",
"source_detail": "Landjaeger sirloin swine venison tail turkey prosciutto corned beef.",
"profile_links": [
],
"tags": [
],
"schools": [
],
"employers": [
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null,
"primary_resume": null,
"candidate_emails": [
]
},
"job": {
"id": "bq8HaqSUur6AA-3kKeJOM4",
"title": "Human Web Developer",
"description": "Austin iPhone salvia keytar McSweeney's beard echo park retro readymade. Aesthetic single-origin coffee raw denim vinyl seitan. Food truck blog PBR cred Carles yr gluten-free quinoa mlkshk. Locavore wolf Wes Anderson farm-to-table keytar raw denim. Williamsburg dreamcatcher viral readymade synth.",
"status": "open",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
],
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC",
"location": {
"id": "bq6BhGSUur6AA-3kKeJOM4",
"nickname": null,
"public_nickname": null,
"street1": "Heller Oval",
"street2": null,
"postal_code": "44475",
"city": "Kurtistown",
"state": "MD",
"country": "US",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
"department": {
"id": "bq8xPGSUur6AA-3kKeJOM4",
"name": "turducken",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
"job_active_sub_statuses": [
{
"id": "bq9pQGSUur6AA-3kKeJOM4",
"position": 201,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq9oZ0SUur6AA-3kKeJOM4",
"position": 200,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq9nX4SUur6AA-3kKeJOM4",
"position": 7,
"account_active_sub_status_id": "bq3L1YSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq9iE0SUur6AA-3kKeJOM4",
"position": 6,
"account_active_sub_status_id": "bq3tfESUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq9dE-SUur6AA-3kKeJOM4",
"position": 5,
"account_active_sub_status_id": "bq2-A-SUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq8-bsSUur6AA-3kKeJOM4",
"position": 4,
"account_active_sub_status_id": "bq2SxcSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq84X0SUur6AA-3kKeJOM4",
"position": 3,
"account_active_sub_status_id": "bq2x66SUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq8ZPeSUur6AA-3kKeJOM4",
"position": 2,
"account_active_sub_status_id": "bq15RWSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
},
{
"id": "bq8SxCSUur6AA-3kKeJOM4",
"position": 0,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:58 UTC",
"updated_on": "2019-07-30 16:15:58 UTC"
}
]
},
"hiring_team_role": {
"id": 264,
"name": "Hiring Manager"
}
}
}
}
The following additional attributes are given for task_added
:
task
: The added task;candidate
: The candidate assigned to the task, ornull
if not available;job
: The job assigned to the task, ornull
if not available;hiring_team_role
: The role of the user that created the webhook in this job, ornull
if not part of the hiring team.
Candidate Applied
{
"data": {
"id": "bqHqm6SUur6AA-3kKeJOM4",
"type": "events",
"attributes": {
"event_type": "candidate_applied",
"account_id": "bqwyEmSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"details": {
"job_application_id": "bqG3g0SUur6AA-3kKeJOM4",
"message": "Alvina Boehm applied via source_resume_other"
},
"candidate": {
"id": "bqGLuySUur6AA-3kKeJOM4",
"first_name": "Alvina",
"last_name": "Boehm",
"email": "ilona@mills.co.uk",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC",
"home_phone": "328-636-1489",
"home_street1": "Suite 271",
"home_street2": "Apt. 547",
"home_city": "Hauckbury",
"home_state": "SD",
"home_postal_code": "16650-8885",
"home_country": "US",
"source": "other",
"source_detail": "Landjaeger leberkas pastrami shank ham hock turkey sirloin frankfurter salami.",
"profile_links": [
],
"tags": [
],
"schools": [
],
"employers": [
],
"source_referral_email": null,
"source_referral_first_name": null,
"source_referral_last_name": null,
"primary_resume": null,
"candidate_emails": [
]
},
"job": {
"id": "bqEBTGSUur6AA-3kKeJOM4",
"title": "Direct Mobility Facilitator",
"description": "Seitan etsy stumptown vegan cardigan mlkshk. Cliche thundercats Four Loko fixie messenger bag. Stumptown leggings Wes Anderson artisan Cosby Sweater synth helvetica Wayfarers. Blog viral ethical Brooklyn Rerry Richardson.",
"status": "open",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
],
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC",
"location": {
"id": "bqBX8QSUur6AA-3kKeJOM4",
"nickname": null,
"public_nickname": null,
"street1": "Volkman Forges",
"street2": null,
"postal_code": "65841",
"city": "North Jovan",
"state": "HI",
"country": "US",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
"department": {
"id": "bqEpTISUur6AA-3kKeJOM4",
"name": "t-bone",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
"job_active_sub_statuses": [
{
"id": "bqFrYsSUur6AA-3kKeJOM4",
"position": 201,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqFq6QSUur6AA-3kKeJOM4",
"position": 200,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqFp4qSUur6AA-3kKeJOM4",
"position": 7,
"account_active_sub_status_id": "bqyvUCSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqFkbKSUur6AA-3kKeJOM4",
"position": 6,
"account_active_sub_status_id": "bqydWsSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqFdV2SUur6AA-3kKeJOM4",
"position": 5,
"account_active_sub_status_id": "bqxVb4SUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqE9M4SUur6AA-3kKeJOM4",
"position": 4,
"account_active_sub_status_id": "bqxvtYSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqE3ZYSUur6AA-3kKeJOM4",
"position": 3,
"account_active_sub_status_id": "bqw5wqSUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqEX4USUur6AA-3kKeJOM4",
"position": 2,
"account_active_sub_status_id": "bqwNd8SUur6AA-3kKeJOM4",
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
},
{
"id": "bqEO4aSUur6AA-3kKeJOM4",
"position": 0,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:15:57 UTC",
"updated_on": "2019-07-30 16:15:57 UTC"
}
]
},
"hiring_team_role": {
"id": 264,
"name": "Hiring Manager"
}
}
}
}
The following additional attributes are given for candidate_applied
:
candidate
: The candidate which applied;job
: The job for which this candidate applied;hiring_team_role
: The role of the user that created the webhook in this job, ornull
if not part of the hiring team.
Job Added
{
"data": {
"id": "aNFAFUSUur6Aiq3kKeJOM4",
"type": "events",
"attributes": {
"event_type": "job_added",
"account_id": "aNrYZWSUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"details": {
"job_status_id": 81
},
"job": {
"id": "aNC-vmSUur6Aiq3kKeJOM4",
"title": "Future Mobility Developer",
"description": "Wes anderson twee readymade beard cardigan Pitchfork Marfa trust fund. You probably haven't heard of them jean shorts Carles whatever cliche skateboard. Locavore helvetica beard gentrify wolf freegan. Before they sold out skateboard art vice locavore. Letterpress Four Loko tofu sartorial photo booth +1 vegan etsy.",
"status": "open",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
],
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC",
"location": {
"id": "aNAfQCSUur6Aiq3kKeJOM4",
"nickname": null,
"public_nickname": null,
"street1": "Bergstrom Dale",
"street2": null,
"postal_code": "30842-1717",
"city": "Faustinachester",
"state": "MI",
"country": "US",
"created_on": "2019-07-30 16:14:48 UTC",
"updated_on": "2019-07-30 16:14:48 UTC"
},
"department": {
"id": "aNCWbUSUur6Aiq3kKeJOM4",
"name": "tail",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
"job_active_sub_statuses": [
{
"id": "aNEbgaSUur6Aiq3kKeJOM4",
"position": 201,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNEai6SUur6Aiq3kKeJOM4",
"position": 200,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aND-96SUur6Aiq3kKeJOM4",
"position": 7,
"account_active_sub_status_id": "aNtMhMSUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aND2QQSUur6Aiq3kKeJOM4",
"position": 6,
"account_active_sub_status_id": "aNtuC0SUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNDU2GSUur6Aiq3kKeJOM4",
"position": 5,
"account_active_sub_status_id": "aNtd2OSUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNDOhgSUur6Aiq3kKeJOM4",
"position": 4,
"account_active_sub_status_id": "aNsYx4SUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNDG_aSUur6Aiq3kKeJOM4",
"position": 3,
"account_active_sub_status_id": "aNsFGySUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNDz2MSUur6Aiq3kKeJOM4",
"position": 2,
"account_active_sub_status_id": "aNsdrwSUur6Aiq3kKeJOM4",
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
},
{
"id": "aNDpvOSUur6Aiq3kKeJOM4",
"position": 0,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:49 UTC",
"updated_on": "2019-07-30 16:14:49 UTC"
}
]
},
"job_status": {
"id": "open",
"name": "Open"
},
"hiring_team_role": {
"id": 264,
"name": "Hiring Manager"
}
}
}
}
job
: The added job;job_status
: The status of this job;hiring_team_role
: The role of the user that created the webhook in this job, ornull
if not part of the hiring team.
Job Status Changed
{
"data": {
"id": "aS1ZpmSUur6Ak63kKeJOM4",
"type": "events",
"attributes": {
"event_type": "job_status_changed",
"account_id": "aSPL3eSUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"details": {
"message": "The job's status was changed from Open to On Hold",
"pre_status_id": 81,
"post_status_id": 83
},
"job": {
"id": "aSZtjqSUur6Ak63kKeJOM4",
"title": "Forward Intranet Coordinator",
"description": "Austin DIY brunch single-origin coffee artisan Shoreditch readymade master cleanse food truck. Jean shorts ethical Austin lo-fi yr cliche. Wayfarers before they sold out raw denim freegan Four Loko single-origin coffee. Sustainable before they sold out scenester keytar gentrify.",
"status": "on_hold",
"requisition_number": 1,
"publish": true,
"job_types": [
"full_time"
],
"career_level": "senior_executive",
"salary_minimum": null,
"salary_maximum": null,
"hourly_minimum": null,
"hourly_maximum": null,
"custom_fields": [
],
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC",
"location": {
"id": "aSWCYESUur6Ak63kKeJOM4",
"nickname": null,
"public_nickname": null,
"street1": "Parker Ford",
"street2": null,
"postal_code": "62416",
"city": "Dionview",
"state": "MT",
"country": "US",
"created_on": "2019-07-30 16:14:57 UTC",
"updated_on": "2019-07-30 16:14:57 UTC"
},
"department": {
"id": "aSZfVCSUur6Ak63kKeJOM4",
"name": "pork belly",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
"job_active_sub_statuses": [
{
"id": "aSZG1QSUur6Ak63kKeJOM4",
"position": 0,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aSZQkISUur6Ak63kKeJOM4",
"position": 2,
"account_active_sub_status_id": "aSP52MSUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aSZYYgSUur6Ak63kKeJOM4",
"position": 3,
"account_active_sub_status_id": "aSQyKISUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aSZ7roSUur6Ak63kKeJOM4",
"position": 4,
"account_active_sub_status_id": "aSQ0_MSUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aS0cdMSUur6Ak63kKeJOM4",
"position": 5,
"account_active_sub_status_id": "aSRyuISUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aS0it6SUur6Ak63kKeJOM4",
"position": 6,
"account_active_sub_status_id": "aSRW94SUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aS0oMgSUur6Ak63kKeJOM4",
"position": 7,
"account_active_sub_status_id": "aSSjcmSUur6Ak63kKeJOM4",
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aS0pMESUur6Ak63kKeJOM4",
"position": 200,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
},
{
"id": "aS0qykSUur6Ak63kKeJOM4",
"position": 201,
"account_active_sub_status_id": null,
"created_on": "2019-07-30 16:14:58 UTC",
"updated_on": "2019-07-30 16:14:58 UTC"
}
]
},
"previous_job_status": {
"id": "open",
"name": "Open"
},
"current_job_status": {
"id": "on_hold",
"name": "On Hold"
},
"hiring_team_role": {
"id": 264,
"name": "Hiring Manager"
}
}
}
}
job
: The job which the status was changed;previous_job_status
: The former job status;current_job_status
: The updated job status;hiring_team_role
: The role of the user that created the webhook in this job, ornull
if not part of the hiring team.