JOB MATCHING
API DOCUMENTATION
Nobl Job Matching API (0.0.1)
Download OpenAPI specification:
The HR Software linking vacancy and applicant without ifs, buts, or maybes.
API Support: support@nobl.ai | Website: www.nobl.ai.
The Nobl API follows the principles of REST, providing a straightforward and efficient way to interact with various resources. The API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
The API accepts JSON-encoded candidate profiles, vacancy descriptions, profile-vacancy matches, and CV parsing requests. As outputs it can provide:
vacancy_id
recommendations for a givencandidate_id
candidate_id
recommendations for a givenvacancy_id
- Structured parsed profiles from CVs uploaded as
file_bytes
(pdf
,docx
,doc
,txt
), including extracted plaintext, warnings, and parser metadata - Top-N ESCO tags returned in vacancy create/update responses to support tagging integrated with the recommender API
- Bias and model metrics for fairness and performance monitoring via analytics endpoints
The quality of recommendations depends on the completeness of the candidate_ids
and vacancy_ids
as well as the amount of candidate-vacancy interactions. In general, candidates with complete CV and many interactions will receive better recommendations. Similarly, vacancies for which more information is available will receive better candidate profile recommendations. Recommendations for new candidate_ids
and vacancy_ids
are immediately available upon processing the corresponding post request. These recommendations are also dynamically updated based on candidate-vacancy interactions.
The Nobl API uses API Keys to authenticate requests. A client_id
and client_secret
will be provided by the Nobl support team allowing for authentication at the /auth
endpoint. Upon successful authentication, a time-limited access_token
will be received and can be used to authorize subsequent requests by including the header Authorization: {access_token}
. The complete documentation of the authentication POST call is summarized below including required parameters, data formats, possible responses, and examples.
Authenticate with Nobl API
Authenticates with the Nobl API using client_id
and client_secret
.
Returns a time-limited access token that can be used to authorize subsequent requests
by including the header Authorization: Bearer {access_token}
.
- client_id: Client ID provided by the Nobl support team
- client_secret: Client secret provided by the Nobl support team
Request Body schema: application/jsonrequired
client_id required | string (Client Id) Client ID provided by Nobl support team |
client_secret required | string (Client Secret) Client secret provided by Nobl support team |
Responses
Request samples
- Payload
{- "client_id": "string",
- "client_secret": "string"
}
Response samples
- 200
- 422
{- "access_token": "string",
- "token_type": "bearer",
- "expires_at": "string"
}
The API exposes a number of calls that allow for the addition or updating of candidates. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Create a new candidate
Creates a new candidate. Recommendations for new candidates are available immediately after processing this request.
Authorizations:
Request Body schema: application/jsonrequired
candidate_id required | string (Candidate Id) The id of the candidate. |
given_name | string (Given Name) The given name of the candidate. |
family_name | string (Family Name) The family name of the candidate. |
additional_name | string (Additional Name) An additional name for a Person, can be used for a middle name. |
string <email> (Email) The email of the candidate. | |
phone | string (Phone) The phone number of the candidate. |
gender | string (Gender) Enum: "MALE" "FEMALE" "NON_BINARY" "PREFER_NOT_TO_SAY" The gender of the candidate. For fairness auditing only. |
birth_date | string <date-time> (Birth Date) The birth date of the candidate. |
object (PostalAddress) The address of the candidate. | |
Array of objects (Work Experiences) The work experience of the candidate. | |
highest_education_level | string (EducationLevel) Enum: "EARLY_CHILDHOOD_EDUCATION" "PRIMARY_EDUCATION" "LOWER_SECONDARY_EDUCATION" "UPPER_SECONDARY_EDUCATION" "POST_SECONDARY_NON_TERTIARY_EDUCATION" "SHORT_CYCLE_TERTIARY_EDUCATION" "BACHELOR_OR_EQUIVALENT_LEVEL" "MASTER_OR_EQUIVALENT_LEVEL" "DOCTORAL_OR_EQUIVALENT_LEVEL" "OTHER" Requested education levels as defined in ISCED 2011 levels (https://en.wikipedia.org/wiki/International_Standard_Classification_of_Education). Preferably as granular as possible. |
Array of objects (Languages) The languages of the candidate. | |
Array of objects (Certificates) The certificates of the candidate. | |
Array of objects (Trainings) The training of the candidate. | |
Array of objects (Skills) The skills of the candidate. | |
Array of objects (Interests) The interests of the candidate, e.g. 'reading', 'sports', 'cooking', etc. | |
Array of objects (Degrees) The degrees of the candidate. | |
object (MonetaryAmount) The recent salary of the candidate. | |
object (CandidatePreferences) The preferences of the candidate. | |
Array of objects (Social Media Profiles) The social media profile of the candidate. e.g. LinkedIn, X, etc. | |
personal_statement | string (Personal Statement) A personal statement of the candidate. |
bio | string (Bio) A bio of the candidate. |
creation_datetime required | string <date-time> (Creation Datetime) The creation datetime of the candidate. |
publication_datetime required | string <date-time> (Publication Datetime) The publication datetime of the candidate. |
expiration_datetime required | string <date-time> (Expiration Datetime) The expiration datetime of the candidate. |
last_updated_datetime required | string <date-time> (Last Updated Datetime) The last updated datetime of the candidate. |
is_active required | boolean (Is Active) Whether the candidate is active. |
Responses
Request samples
- Payload
{- "candidate_id": "string",
- "given_name": "string",
- "family_name": "string",
- "additional_name": "string",
- "email": "user@example.com",
- "phone": "string",
- "gender": "MALE",
- "birth_date": "2019-08-24T14:15:22Z",
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "work_experiences": [
- {
- "title": "string",
- "description": "string",
- "industry": {
- "code": "string",
- "label": "string",
- "level": "section"
}, - "occupation": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}, - "seniority_level": "JUNIOR",
- "organization": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "vacancy_start_datetime": "2019-08-24T14:15:22Z",
- "vacancy_end_datetime": "2019-08-24T14:15:22Z"
}
], - "highest_education_level": "EARLY_CHILDHOOD_EDUCATION",
- "languages": [
- {
- "language": "string",
- "display_name": "string",
- "proficiency": "ELEMENTARY"
}
], - "certificates": [
- {
- "title": "string",
- "description": "string",
- "certificate_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "date_created": "2019-08-24T14:15:22Z",
- "date_expired": "2019-08-24T14:15:22Z"
}
], - "trainings": [
- {
- "title": "string",
- "description": "string",
- "training_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "skills": [
- {
- "skill_id": "string",
- "name": "string",
- "description": "string",
- "skill_type": "HARD",
- "proficiency_level": "BEGINNER",
- "is_primary": false
}
], - "interests": [
- {
- "name": "string",
- "description": "string"
}
], - "degrees": [
- {
- "title": "string",
- "description": "string",
- "education_level": "EARLY_CHILDHOOD_EDUCATION",
- "field_of_study": "string",
- "institution": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "recent_salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "preferences": {
- "seniority_level": "JUNIOR",
- "relationship_type": [
- "EMPLOYEE"
], - "location_type": [
- "LOCAL"
], - "employment_term": [
- "INDEFINITE"
], - "capacity": [
- "FULL_TIME"
], - "workday": [
- "WEEKDAYS"
], - "hours": [
- "DAY"
], - "salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "desired_vacancies": [
- "string"
], - "undesired_vacancies": [
- "string"
], - "desired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
], - "undesired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
]
}, - "personal_statement": "string",
- "bio": "string",
- "creation_datetime": "2019-08-24T14:15:22Z",
- "publication_datetime": "2019-08-24T14:15:22Z",
- "expiration_datetime": "2019-08-24T14:15:22Z",
- "last_updated_datetime": "2019-08-24T14:15:22Z",
- "is_active": true
}
Response samples
- 201
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
Update candidate
Updates a candidate. Recommendations for updated candidates are available immediately after processing this request.
Authorizations:
path Parameters
candidate_id required | string (Candidate Id) |
Request Body schema: application/jsonrequired
candidate_id required | string (Candidate Id) The id of the candidate. |
given_name | string (Given Name) The given name of the candidate. |
family_name | string (Family Name) The family name of the candidate. |
additional_name | string (Additional Name) An additional name for a Person, can be used for a middle name. |
string <email> (Email) The email of the candidate. | |
phone | string (Phone) The phone number of the candidate. |
gender | string (Gender) Enum: "MALE" "FEMALE" "NON_BINARY" "PREFER_NOT_TO_SAY" The gender of the candidate. For fairness auditing only. |
birth_date | string <date-time> (Birth Date) The birth date of the candidate. |
object (PostalAddress) The address of the candidate. | |
Array of objects (Work Experiences) The work experience of the candidate. | |
highest_education_level | string (EducationLevel) Enum: "EARLY_CHILDHOOD_EDUCATION" "PRIMARY_EDUCATION" "LOWER_SECONDARY_EDUCATION" "UPPER_SECONDARY_EDUCATION" "POST_SECONDARY_NON_TERTIARY_EDUCATION" "SHORT_CYCLE_TERTIARY_EDUCATION" "BACHELOR_OR_EQUIVALENT_LEVEL" "MASTER_OR_EQUIVALENT_LEVEL" "DOCTORAL_OR_EQUIVALENT_LEVEL" "OTHER" Requested education levels as defined in ISCED 2011 levels (https://en.wikipedia.org/wiki/International_Standard_Classification_of_Education). Preferably as granular as possible. |
Array of objects (Languages) The languages of the candidate. | |
Array of objects (Certificates) The certificates of the candidate. | |
Array of objects (Trainings) The training of the candidate. | |
Array of objects (Skills) The skills of the candidate. | |
Array of objects (Interests) The interests of the candidate, e.g. 'reading', 'sports', 'cooking', etc. | |
Array of objects (Degrees) The degrees of the candidate. | |
object (MonetaryAmount) The recent salary of the candidate. | |
object (CandidatePreferences) The preferences of the candidate. | |
Array of objects (Social Media Profiles) The social media profile of the candidate. e.g. LinkedIn, X, etc. | |
personal_statement | string (Personal Statement) A personal statement of the candidate. |
bio | string (Bio) A bio of the candidate. |
creation_datetime required | string <date-time> (Creation Datetime) The creation datetime of the candidate. |
publication_datetime required | string <date-time> (Publication Datetime) The publication datetime of the candidate. |
expiration_datetime required | string <date-time> (Expiration Datetime) The expiration datetime of the candidate. |
last_updated_datetime required | string <date-time> (Last Updated Datetime) The last updated datetime of the candidate. |
is_active required | boolean (Is Active) Whether the candidate is active. |
Responses
Request samples
- Payload
{- "candidate_id": "string",
- "given_name": "string",
- "family_name": "string",
- "additional_name": "string",
- "email": "user@example.com",
- "phone": "string",
- "gender": "MALE",
- "birth_date": "2019-08-24T14:15:22Z",
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "work_experiences": [
- {
- "title": "string",
- "description": "string",
- "industry": {
- "code": "string",
- "label": "string",
- "level": "section"
}, - "occupation": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}, - "seniority_level": "JUNIOR",
- "organization": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "vacancy_start_datetime": "2019-08-24T14:15:22Z",
- "vacancy_end_datetime": "2019-08-24T14:15:22Z"
}
], - "highest_education_level": "EARLY_CHILDHOOD_EDUCATION",
- "languages": [
- {
- "language": "string",
- "display_name": "string",
- "proficiency": "ELEMENTARY"
}
], - "certificates": [
- {
- "title": "string",
- "description": "string",
- "certificate_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "date_created": "2019-08-24T14:15:22Z",
- "date_expired": "2019-08-24T14:15:22Z"
}
], - "trainings": [
- {
- "title": "string",
- "description": "string",
- "training_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "skills": [
- {
- "skill_id": "string",
- "name": "string",
- "description": "string",
- "skill_type": "HARD",
- "proficiency_level": "BEGINNER",
- "is_primary": false
}
], - "interests": [
- {
- "name": "string",
- "description": "string"
}
], - "degrees": [
- {
- "title": "string",
- "description": "string",
- "education_level": "EARLY_CHILDHOOD_EDUCATION",
- "field_of_study": "string",
- "institution": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "recent_salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "preferences": {
- "seniority_level": "JUNIOR",
- "relationship_type": [
- "EMPLOYEE"
], - "location_type": [
- "LOCAL"
], - "employment_term": [
- "INDEFINITE"
], - "capacity": [
- "FULL_TIME"
], - "workday": [
- "WEEKDAYS"
], - "hours": [
- "DAY"
], - "salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "desired_vacancies": [
- "string"
], - "undesired_vacancies": [
- "string"
], - "desired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
], - "undesired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
]
}, - "personal_statement": "string",
- "bio": "string",
- "creation_datetime": "2019-08-24T14:15:22Z",
- "publication_datetime": "2019-08-24T14:15:22Z",
- "expiration_datetime": "2019-08-24T14:15:22Z",
- "last_updated_datetime": "2019-08-24T14:15:22Z",
- "is_active": true
}
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
Delete candidate
Deletes the candidate with the given candidate_id
Authorizations:
path Parameters
candidate_id required | string (Candidate Id) |
Responses
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
The API exposes a number of calls that allow for the addition or updating of vacancies. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Create a new vacancy
Creates a new vacancy. Recommendations for new vacancies are available immediately after processing this request.
Authorizations:
Request Body schema: application/jsonrequired
vacancy_id required | string (Vacancy Id) The unique identifier for the vacancy. |
title required | string (Title) The title of the vacancy. |
description required | string (Description) A description of the vacancy. |
object (Place) The address of the vacancy. | |
object (Industry) The industry associated with the vacancy position. Use the ISIC 2008 classification (https://en.wikipedia.org/wiki/International_Standard_Industrial_Classification). | |
required_qualifications | Array of strings (Required Qualifications) Specific qualifications required for this role or Occupation. |
benefits | Array of strings (Benefits) Description of benefits associated with the vacancy. Each benefit is a string. |
Array of objects (Required Skills) The skills required for the vacancy. | |
Array of objects (Required Languages) The languages required for the vacancy. | |
minimum_education_level | string (EducationLevel) Enum: "EARLY_CHILDHOOD_EDUCATION" "PRIMARY_EDUCATION" "LOWER_SECONDARY_EDUCATION" "UPPER_SECONDARY_EDUCATION" "POST_SECONDARY_NON_TERTIARY_EDUCATION" "SHORT_CYCLE_TERTIARY_EDUCATION" "BACHELOR_OR_EQUIVALENT_LEVEL" "MASTER_OR_EQUIVALENT_LEVEL" "DOCTORAL_OR_EQUIVALENT_LEVEL" "OTHER" The minimum education level required for the vacancy. |
object (VacancyPreferences) The preferences of the vacancy. | |
object (OccupationCode) A category describing the vacancy, preferably using a term from a taxonomy such as ESCO or similar, with the property repeated for each applicable value. Ideally the taxonomy should be identified, and both the textual label and formal code for the category should be provided. | |
object (MonetaryAmount) An estimated salary for a vacancy posting or occupation, based on a variety of variables including, but not limited to industry, vacancy title, and location. Estimated salaries are often computed by outside organizations rather than the hiring organization, who may not have committed to the estimated value. | |
object (Organization-Input) The organization that is publishing the vacancy. | |
object (Organization-Input) The organization offering the vacancy. | |
total_vacancy_openings | integer (Total Vacancy Openings) The number of positions open for this vacancy posting. Use a positive integer. Do not use if the number of positions is unclear or not known. |
url | string <uri> (Url) [ 1 .. 2083 ] characters The URL of the vacancy posting. |
object (ContactPoint) Contact details for further information relevant to this vacancy posting. | |
application_deadline | string <date-time> (Application Deadline) The date and time the application deadline for the vacancy. |
vacancy_start_datetime | string <date-time> (Vacancy Start Datetime) The date on which a successful applicant for this vacancy would be expected to start work. Choose a specific date in the future or use the vacancyImmediateStart property to indicate the position is to be filled as soon as possible. |
vacancy_end_datetime | string <date-time> (Vacancy End Datetime) The date on which a successful applicant for this vacancy would be expected to end work. Choose a specific date in the future or use the vacancyImmediateStart property to indicate the position is to be filled as soon as possible. |
creation_datetime required | string <date-time> (Creation Datetime) The creation datetime of the vacancy. |
publication_datetime required | string <date-time> (Publication Datetime) The publication datetime of the vacancy. |
expiration_datetime required | string <date-time> (Expiration Datetime) The expiration datetime of the vacancy. |
last_updated_datetime required | string <date-time> (Last Updated Datetime) The last updated datetime of the vacancy. |
is_active required | boolean (Is Active) Whether the vacancy is active. |
Responses
Request samples
- Payload
{- "vacancy_id": "string",
- "title": "string",
- "description": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}, - "industry": {
- "code": "string",
- "label": "string",
- "level": "section"
}, - "required_qualifications": [
- "string"
], - "benefits": [
- "string"
], - "required_skills": [
- {
- "skill_id": "string",
- "name": "string",
- "description": "string",
- "skill_type": "HARD",
- "proficiency_level": "BEGINNER",
- "is_primary": false
}
], - "required_languages": [
- {
- "language": "string",
- "display_name": "string",
- "proficiency": "ELEMENTARY"
}
], - "minimum_education_level": "EARLY_CHILDHOOD_EDUCATION",
- "preferences": {
- "seniority_level": "JUNIOR",
- "relationship_type": [
- "EMPLOYEE"
], - "location_type": [
- "LOCAL"
], - "employment_term": [
- "INDEFINITE"
], - "capacity": [
- "FULL_TIME"
], - "workday": [
- "WEEKDAYS"
], - "hours": [
- "DAY"
]
}, - "occupational_category": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}, - "estimated_salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "publisher": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "employer": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "total_vacancy_openings": 0,
- "application_contact": {
- "email": "user@example.com",
- "phone_number": "string",
- "notes": "string"
}, - "application_deadline": "2019-08-24T14:15:22Z",
- "vacancy_start_datetime": "2019-08-24T14:15:22Z",
- "vacancy_end_datetime": "2019-08-24T14:15:22Z",
- "creation_datetime": "2019-08-24T14:15:22Z",
- "publication_datetime": "2019-08-24T14:15:22Z",
- "expiration_datetime": "2019-08-24T14:15:22Z",
- "last_updated_datetime": "2019-08-24T14:15:22Z",
- "is_active": true
}
Response samples
- 201
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
Update vacancy
Updates a vacancy. Recommendations for updated vacancies are available immediately after processing this request.
Authorizations:
path Parameters
vacancy_id required | string (Vacancy Id) |
Request Body schema: application/jsonrequired
vacancy_id required | string (Vacancy Id) The unique identifier for the vacancy. |
title required | string (Title) The title of the vacancy. |
description required | string (Description) A description of the vacancy. |
object (Place) The address of the vacancy. | |
object (Industry) The industry associated with the vacancy position. Use the ISIC 2008 classification (https://en.wikipedia.org/wiki/International_Standard_Industrial_Classification). | |
required_qualifications | Array of strings (Required Qualifications) Specific qualifications required for this role or Occupation. |
benefits | Array of strings (Benefits) Description of benefits associated with the vacancy. Each benefit is a string. |
Array of objects (Required Skills) The skills required for the vacancy. | |
Array of objects (Required Languages) The languages required for the vacancy. | |
minimum_education_level | string (EducationLevel) Enum: "EARLY_CHILDHOOD_EDUCATION" "PRIMARY_EDUCATION" "LOWER_SECONDARY_EDUCATION" "UPPER_SECONDARY_EDUCATION" "POST_SECONDARY_NON_TERTIARY_EDUCATION" "SHORT_CYCLE_TERTIARY_EDUCATION" "BACHELOR_OR_EQUIVALENT_LEVEL" "MASTER_OR_EQUIVALENT_LEVEL" "DOCTORAL_OR_EQUIVALENT_LEVEL" "OTHER" The minimum education level required for the vacancy. |
object (VacancyPreferences) The preferences of the vacancy. | |
object (OccupationCode) A category describing the vacancy, preferably using a term from a taxonomy such as ESCO or similar, with the property repeated for each applicable value. Ideally the taxonomy should be identified, and both the textual label and formal code for the category should be provided. | |
object (MonetaryAmount) An estimated salary for a vacancy posting or occupation, based on a variety of variables including, but not limited to industry, vacancy title, and location. Estimated salaries are often computed by outside organizations rather than the hiring organization, who may not have committed to the estimated value. | |
object (Organization-Input) The organization that is publishing the vacancy. | |
object (Organization-Input) The organization offering the vacancy. | |
total_vacancy_openings | integer (Total Vacancy Openings) The number of positions open for this vacancy posting. Use a positive integer. Do not use if the number of positions is unclear or not known. |
url | string <uri> (Url) [ 1 .. 2083 ] characters The URL of the vacancy posting. |
object (ContactPoint) Contact details for further information relevant to this vacancy posting. | |
application_deadline | string <date-time> (Application Deadline) The date and time the application deadline for the vacancy. |
vacancy_start_datetime | string <date-time> (Vacancy Start Datetime) The date on which a successful applicant for this vacancy would be expected to start work. Choose a specific date in the future or use the vacancyImmediateStart property to indicate the position is to be filled as soon as possible. |
vacancy_end_datetime | string <date-time> (Vacancy End Datetime) The date on which a successful applicant for this vacancy would be expected to end work. Choose a specific date in the future or use the vacancyImmediateStart property to indicate the position is to be filled as soon as possible. |
creation_datetime required | string <date-time> (Creation Datetime) The creation datetime of the vacancy. |
publication_datetime required | string <date-time> (Publication Datetime) The publication datetime of the vacancy. |
expiration_datetime required | string <date-time> (Expiration Datetime) The expiration datetime of the vacancy. |
last_updated_datetime required | string <date-time> (Last Updated Datetime) The last updated datetime of the vacancy. |
is_active required | boolean (Is Active) Whether the vacancy is active. |
Responses
Request samples
- Payload
{- "vacancy_id": "string",
- "title": "string",
- "description": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}, - "industry": {
- "code": "string",
- "label": "string",
- "level": "section"
}, - "required_qualifications": [
- "string"
], - "benefits": [
- "string"
], - "required_skills": [
- {
- "skill_id": "string",
- "name": "string",
- "description": "string",
- "skill_type": "HARD",
- "proficiency_level": "BEGINNER",
- "is_primary": false
}
], - "required_languages": [
- {
- "language": "string",
- "display_name": "string",
- "proficiency": "ELEMENTARY"
}
], - "minimum_education_level": "EARLY_CHILDHOOD_EDUCATION",
- "preferences": {
- "seniority_level": "JUNIOR",
- "relationship_type": [
- "EMPLOYEE"
], - "location_type": [
- "LOCAL"
], - "employment_term": [
- "INDEFINITE"
], - "capacity": [
- "FULL_TIME"
], - "workday": [
- "WEEKDAYS"
], - "hours": [
- "DAY"
]
}, - "occupational_category": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}, - "estimated_salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "publisher": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "employer": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "total_vacancy_openings": 0,
- "application_contact": {
- "email": "user@example.com",
- "phone_number": "string",
- "notes": "string"
}, - "application_deadline": "2019-08-24T14:15:22Z",
- "vacancy_start_datetime": "2019-08-24T14:15:22Z",
- "vacancy_end_datetime": "2019-08-24T14:15:22Z",
- "creation_datetime": "2019-08-24T14:15:22Z",
- "publication_datetime": "2019-08-24T14:15:22Z",
- "expiration_datetime": "2019-08-24T14:15:22Z",
- "last_updated_datetime": "2019-08-24T14:15:22Z",
- "is_active": true
}
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
Get vacancy occupation category
Returns the occupational_category
field for the vacancy with the given vacancy_id
.
Authorizations:
path Parameters
vacancy_id required | string (Vacancy Id) |
Responses
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "occupational_category": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}
}
The API exposes a number of calls that allow for the addition or updating of interactions. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Create a new interaction
Creates a new interaction. Both candidate_id
and vacancy_id
have to be provided.
Authorizations:
Request Body schema: application/jsonrequired
candidate_id required | string (Candidate Id) The id of the candidate. |
vacancy_id required | string (Vacancy Id) The id of the vacancy. |
timestamp required | string <date-time> (Timestamp) The timestamp (including timezone) of the interaction. |
interaction_actor required | string (InteractionActor) Enum: "CANDIDATE" "EMPLOYER" "INTERMEDIARY" The actor of the interaction. |
interaction_type required | string (InteractionType) Enum: "VIEW" "SAVE" "LIKE" "DISLIKE" "FORWARD" "APPLY_INTEREST" "APPLY" "REJECT" "INTERVIEW" "HIRE" The type of interaction. |
session_id required | string (Session Id) The id of the session. |
recommendation_id | string (Recommendation Id) The id of the recommendation. |
recommendation_position | integer (Recommendation Position) Position in recommendation list |
query | string (Query) Raw search query if applicable, e.g., 'data scientist remote' |
object (Context) Additional context for the interaction, e.g., {'source': 'search'} | |
object (Filters) Applied filters/facets for the interaction, e.g., {'location': 'NYC', 'experience': {'gte': 3}} | |
object (Sort) Sorting parameters used, e.g., {'field': 'posted_at', 'order': 'desc'} | |
page | integer (Page) Page number for paginated results, e.g., 2 |
page_size | integer (Page Size) Page size for paginated results, e.g., 20 |
query_id | string (Query Id) Identifier linking events to the originating query, e.g., 'q_123abc' |
device_type | string (Device Type) Device used (mobile/desktop/tablet) |
source_page | string (Source Page) Page where interaction originated |
dwell_time_ms | integer (Dwell Time Ms) Dwell time in milliseconds |
Responses
Request samples
- Payload
{- "candidate_id": "string",
- "vacancy_id": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "interaction_actor": "CANDIDATE",
- "interaction_type": "VIEW",
- "session_id": "string",
- "recommendation_id": "string",
- "recommendation_position": 0,
- "query": "string",
- "context": { },
- "filters": { },
- "sort": { },
- "page": 0,
- "page_size": 0,
- "query_id": "string",
- "device_type": "string",
- "source_page": "string",
- "dwell_time_ms": 0
}
Response samples
- 201
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z"
}
The core functionality of the Nobl API is facilitated by the recommendation-related API calls. These calls are build around HTTP POST methods and can return a number of recommendations given a single candidate_id or a batch of candidate_ids. Conversely, calls for retrieving profile recommendations given a single vacancy_id or a batch of vacancy_ids, are also implemented. Below, each of these API calls are described in detail including their required parameters, data formats, possible responses and examples.
Recommend vacancies/candidates for a candidate/vacancy
Recommend vacancies or candidates for a given user or vacancy. Return either candidate_id
s or vacancy_id
s depending on the parameter provided in the recommendation_type
. If vacancy_id
is provided, the returned recommendations will be candidate_id
s. If candidate_id
is provided, the returned recommendations will be vacancy_id
s. Optionally, a limit
parameter can be provided to limit the number of recommendations returned.
Authorizations:
Request Body schema: application/jsonrequired
entity_id required | string (Entity Id) The id of the entity. |
entity_type required | string (RecommendationEntityType) Enum: "CANDIDATE" "VACANCY" The type of the entity. |
limit | integer (Limit) Default: 10 The number of recommendations to return. |
include_explanation | boolean (Include Explanation) Default: false Whether to include explanations |
object (Context) The context of the recommendation. | |
object (Filters) The filters for the recommendation. |
Responses
Request samples
- Payload
{- "entity_id": "string",
- "entity_type": "CANDIDATE",
- "limit": 10,
- "include_explanation": false,
- "context": { },
- "filters": { }
}
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "recommendation_id": "string",
- "recommendations": [
- {
- "entity_id": "string",
- "entity_type": "CANDIDATE",
- "score": 0,
- "explanation": { },
- "position": 0
}
], - "model_version": "string"
}
Recommend vacancies/users for a batch of users/vacancies
Recommend vacancies or users for a batch of users or vacancies. Return either candidate_id
s or vacancy_id
s depending on the parameter provided in the recommendation_type
. If vacancy_id
is provided, the returned recommendations will be candidate_id
s. If candidate_id
is provided, the returned recommendations will be vacancy_id
s. Optionally, a limit
parameter can be provided to limit the number of recommendations returned.
Authorizations:
Request Body schema: application/jsonrequired
entity_id required | string (Entity Id) The id of the entity. |
entity_type required | string (RecommendationEntityType) Enum: "CANDIDATE" "VACANCY" The type of the entity. |
limit | integer (Limit) Default: 10 The number of recommendations to return. |
include_explanation | boolean (Include Explanation) Default: false Whether to include explanations |
object (Context) The context of the recommendation. | |
object (Filters) The filters for the recommendation. |
Responses
Request samples
- Payload
[- {
- "entity_id": "string",
- "entity_type": "CANDIDATE",
- "limit": 10,
- "include_explanation": false,
- "context": { },
- "filters": { }
}
]
Response samples
- 200
- 422
[- {
- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "recommendation_id": "string",
- "recommendations": [
- {
- "entity_id": "string",
- "entity_type": "CANDIDATE",
- "score": 0,
- "explanation": { },
- "position": 0
}
], - "model_version": "string"
}
]
The API exposes a number of calls that allow for the parsing of CVs. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Parse a CV
Parses a text and returns the entities, relations, events, and entities with relations.
Authorizations:
Request Body schema: application/jsonrequired
candidate_id required | string (Candidate Id) The id of the candidate. |
file_bytes required | string <binary> (File Bytes) Binary contents of an uploaded file sent via API. |
file_type required | string (FileType) Enum: "pdf" "docx" "doc" "txt" File type of uploaded document. Allowed: pdf, docx, doc, txt. |
filename | string (Filename) Original filename (optional), used for heuristics and logging. |
Responses
Request samples
- Payload
{- "candidate_id": "string",
- "file_bytes": "string",
- "file_type": "pdf",
- "filename": "string"
}
Response samples
- 200
- 422
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "data": {
- "candidate_id": "string",
- "given_name": "string",
- "family_name": "string",
- "additional_name": "string",
- "email": "user@example.com",
- "phone": "string",
- "gender": "MALE",
- "birth_date": "2019-08-24T14:15:22Z",
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "work_experiences": [
- {
- "title": "string",
- "description": "string",
- "industry": {
- "code": "string",
- "label": "string",
- "level": "section"
}, - "occupation": {
- "taxonomy": "ESCO",
- "code": "string",
- "label": "string",
- "uri": "string",
- "source": "SUGGESTED"
}, - "seniority_level": "JUNIOR",
- "organization": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "vacancy_start_datetime": "2019-08-24T14:15:22Z",
- "vacancy_end_datetime": "2019-08-24T14:15:22Z"
}
], - "highest_education_level": "EARLY_CHILDHOOD_EDUCATION",
- "languages": [
- {
- "language": "string",
- "display_name": "string",
- "proficiency": "ELEMENTARY"
}
], - "certificates": [
- {
- "title": "string",
- "description": "string",
- "certificate_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "date_created": "2019-08-24T14:15:22Z",
- "date_expired": "2019-08-24T14:15:22Z"
}
], - "trainings": [
- {
- "title": "string",
- "description": "string",
- "training_provider": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "skills": [
- {
- "skill_id": "string",
- "name": "string",
- "description": "string",
- "skill_type": "HARD",
- "proficiency_level": "BEGINNER",
- "is_primary": false
}
], - "interests": [
- {
- "name": "string",
- "description": "string"
}
], - "degrees": [
- {
- "title": "string",
- "description": "string",
- "education_level": "EARLY_CHILDHOOD_EDUCATION",
- "field_of_study": "string",
- "institution": {
- "name": "string",
- "description": "string",
- "organization_id": "string",
- "registration_number": "string",
- "size": 0,
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "address": {
- "address_country": "string",
- "address_region": "string",
- "address_locality": "string",
- "address_street": "string",
- "extended_address": "string",
- "post_office_box_number": "string",
- "postal_code": "string"
}, - "geo": {
- "latitude": -90,
- "longitude": -180
}
}
}, - "start_datetime": "2019-08-24T14:15:22Z",
- "end_datetime": "2019-08-24T14:15:22Z"
}
], - "recent_salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "preferences": {
- "seniority_level": "JUNIOR",
- "relationship_type": [
- "EMPLOYEE"
], - "location_type": [
- "LOCAL"
], - "employment_term": [
- "INDEFINITE"
], - "capacity": [
- "FULL_TIME"
], - "workday": [
- "WEEKDAYS"
], - "hours": [
- "DAY"
], - "salary": {
- "currency": "string",
- "value": 0,
- "max_value": 0,
- "min_value": 0
}, - "desired_vacancies": [
- "string"
], - "undesired_vacancies": [
- "string"
], - "desired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
], - "undesired_industries": [
- {
- "code": "string",
- "label": "string",
- "level": "section"
}
]
}, - "personal_statement": "string",
- "bio": "string"
}, - "raw_text": "string",
- "warnings": [
- "string"
], - "parser_metadata": { }
}
The API exposes a number of calls that allow for the retrieval of bias and model metrics. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Response samples
- 200
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "bias_metrics": {
- "bias_metrics": [
- {
- "metric_name": "string",
- "metric_value": 0,
- "data_time_window_start": "2019-08-24T14:15:22Z",
- "data_time_window_end": "2019-08-24T14:15:22Z",
- "protected_attribute": "string",
- "groups": [
- "string"
]
}
], - "model_version": "string",
- "model_timestamp": "2019-08-24T14:15:22Z"
}
}
Response samples
- 200
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "model_metrics": {
- "model_metrics": [
- {
- "metric_name": "string",
- "metric_value": 0,
- "data_time_window_start": "2019-08-24T14:15:22Z",
- "data_time_window_end": "2019-08-24T14:15:22Z"
}
], - "model_version": "string",
- "model_timestamp": "2019-08-24T14:15:22Z"
}
}
The API exposes a number of calls that allow for the health check of the system. Next, each of these API calls are described in detailed including their required parameters, data formats, possible responses and examples.
Check health of Nobl API
Checks the health of the Nobl API.
Returns a JSON object with a status field set to ok
if the API is healthy.
Authorizations:
Responses
Response samples
- 200
{- "success": true,
- "message": "string",
- "timestamp": "2019-08-24T14:15:22Z",
- "health": {
- "status": "string",
- "model_version": "string",
- "system_version": "string"
}
}