Skip to content

API Reference ​

Interactive documentation for the Recruitly Nova API. Try endpoints directly from the browser.

The Recruitly Nova API is a simple, lightweight REST API that responds to https requests with JSON. Because it is a REST API, it is completely stateless. Requests are expected to be made in the form of a simple HTTP GET.

Servers​

https://api.recruitly.io

List campaigns​

GET
/api/nova/campaigns/list

Returns the account's email campaigns, newest first. Accepts page and size query parameters (size defaults to 20 and is capped at 100), an optional query matched against the campaign name and subject, an optional status filter (DRAFT, SCHEDULED, PREPARING, PAUSED, SENDING, FAILED, SENT, CANCELLED) and archived=true to list archived campaigns instead of live ones. Each campaign includes id, reference, name, subject, status, statusMessage, archived, suspended, senderName, senderEmail, distributionListId, distributionListName, scheduledOn, sentOn, ownerId, ownerName, createdOn and modifiedOn. Returns 400 for an unknown status and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
archived

archived

Type
boolean
Default
false
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20
status

status

Type
string

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"additionalProperties": {
  
  
  
}
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get campaign by ID​

GET
/api/nova/campaigns/{campaignId}

Fetches a single email campaign by the campaignId path parameter, scoped to the authenticated API user's account. The response carries the same fields as the list endpoint. Returns 404 if the campaign is not found and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Delete campaign​

DELETE
/api/nova/campaigns/{campaignId}

Permanently deletes a DRAFT campaign together with its statistics. A scheduled campaign is unscheduled first. Campaigns that have started sending cannot be deleted; archive them instead. Returns 400 if the campaign is not found or has already been sent and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Archive campaign​

POST
/api/nova/campaigns/{campaignId}/archive

Archives a campaign so it drops out of the live list (list it back with archived=true). Returns 404 if the campaign is not found, 400 if it cannot be archived and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Cancel scheduled campaign​

POST
/api/nova/campaigns/{campaignId}/cancel

Cancels a campaign that is scheduled but not yet sending and returns it to draft. Returns 404 if the campaign is not found, 400 if it is not in a cancellable state and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get campaign statistics​

GET
/api/nova/campaigns/{campaignId}/stats

Returns delivery and engagement counters for a sent campaign: requests, dispatches, delivered, opens, uniqueOpens, clicks, uniqueClicks, softBounce, hardBounce, unsubscribes, spamComplaints, failures, rejects and drops. Counters are zero for campaigns that have not been sent. Returns 404 if the campaign is not found and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Unarchive campaign​

POST
/api/nova/campaigns/{campaignId}/unarchive

Restores an archived campaign to the live list. Returns 404 if the campaign is not found, 400 if it cannot be restored and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

campaignId*

campaignId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Create a candidate​

POST
/api/nova/candidates

Creates a new candidate from the JSON request body. Supported fields include first and last name, email addresses, phone numbers, social profile links, date of birth, overview, internal notes, skills, tags (group and value pairs, matching the shape returned by candidate reads), work permit, right to work and do-not-contact flags, rating, ownerId (unknown ids are ignored and ownership defaults to the API user), statusId and sourceId master data references, address (street, city, state, country, postcode), expected salary (desiredSalary, desiredSalaryCurrency as an ISO code, desiredSalaryTenure as HOUR, DAY, WEEK, MONTH or YEAR, noticePeriod as an availability code such as IMMEDIATE or ONE_MONTH), education history, employment history, and custom (UDF) field values. The create counts towards the account's candidate record limit. A duplicate check runs before the record is created: an existing candidate matching on email, LinkedIn profile, or first name, surname and current employer combination blocks the create and responds with 409, carrying the existing candidate's ID in the data field so it can be updated instead. Returns the new candidate's ID on success, 401 for an invalid API key, and 429 when the record limit or rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"address": {
  
  
"city": "string",
  
  
"country": "string",
  
  
"postcode": "string",
  
  
"state": "string",
  
  
"street": "string"
  
},
  
"alternateEmail": "string",
  
"currentEmployer": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"dateOfBirth": "string",
  
"desiredSalary": 0,
  
"desiredSalaryCurrency": "string",
  
"desiredSalaryTenure": "string",
  
"doNotContact": true,
  
"educationHistory": [
  
  
{
  
  
  
"educationLevelId": "string",
  
  
  
"endYear": 0,
  
  
  
"grade": "string",
  
  
  
"major": "string",
  
  
  
"organisation": "string",
  
  
  
"startYear": 0
  
  
}
  
],
  
"email": "string",
  
"employmentHistory": [
  
  
{
  
  
  
"companyName": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"endDate": "string",
  
  
  
"jobTitle": "string",
  
  
  
"startDate": "string",
  
  
  
"workSummary": "string"
  
  
}
  
],
  
"facebook": "string",
  
"firstName": "string",
  
"homePhone": "string",
  
"id": "string",
  
"internalNotes": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"noticePeriod": "string",
  
"overview": "string",
  
"ownerId": "string",
  
"rating": 0,
  
"rightToWork": true,
  
"skills": [
  
  
"string"
  
],
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"workPermit": true,
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Parse a CV into a candidate​

POST
/api/nova/candidates/parse

Uploads a CV file (pdf, doc, or docx) as multipart form data and parses it into a candidate record. After parsing, a duplicate check by email, name, and current employer is performed: if a match is found the existing candidate is returned with the duplicate flag set to true, otherwise a new candidate is created with the CV attached. The response contains the candidate ID, reference, full name, the duplicate flag, and the stored CV file's ID and name. Parsing is rate limited per minute based on the account's subscription plan, with additional hourly and daily request caps and plan-based daily and monthly parse allowances. Responds with 400 when no file is supplied, 401 for an invalid API key, and 429 when a limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Request Body​

multipart/form-data
object
Format"binary"

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"candidateId": "string",
  
  
"cvFileId": "string",
  
  
"cvFileName": "string",
  
  
"duplicate": true,
  
  
"name": "string",
  
  
"reference": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Body

Samples​


List saved searches​

GET
/api/nova/candidates/savedsearches

Lists the candidate saved searches available to the account. A saved search is created in the Recruitly app (Candidates grid, Save Search) and can express any filter criteria — tags, custom field values, statuses, sources, and more. Use the returned id as the savedSearchId parameter of GET /api/nova/candidates/search to retrieve only the candidates matching that search. Each entry carries the search's id, name, creator, creation date, and whether it is shared with the team. Responds with 401 for an invalid API key and 429 when the account's read rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"createdBy": "string",
  
  
  
"createdOn": "dd/MM/yyyy HH:mm",
  
  
  
"id": "string",
  
  
  
"name": "string",
  
  
  
"shared": true
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search candidates​

GET
/api/nova/candidates/search

Runs a paged keyword search over the candidates in your account. The optional query parameter matches against candidate data, while page (default 0) and size (default 20, maximum 100) control pagination; results are sorted by creation date, newest first. Pass the optional savedSearchId parameter (from GET /api/nova/candidates/savedsearches) to return only the candidates matching that saved search's criteria — tags, custom fields, statuses, or any other filter saved in Recruitly; query then searches within the saved search's results. Returns a list of candidate records plus paging metadata and the total match count. Responds with 401 for an invalid API key and 429 when the account's read rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
savedSearchId

savedSearchId

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"address": {
  
  
  
  
"city": "string",
  
  
  
  
"country": "string",
  
  
  
  
"postcode": "string",
  
  
  
  
"state": "string",
  
  
  
  
"street": "string"
  
  
  
},
  
  
  
"alternateEmail": "string",
  
  
  
"createdOn": "string",
  
  
  
"currentEmployer": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"dateOfBirth": "string",
  
  
  
"desiredSalary": 0,
  
  
  
"desiredSalaryCurrency": "string",
  
  
  
"desiredSalaryTenure": "string",
  
  
  
"doNotContact": true,
  
  
  
"educationHistory": [
  
  
  
  
{
  
  
  
  
  
"endMonth": 0,
  
  
  
  
  
"endYear": 0,
  
  
  
  
  
"grade": "string",
  
  
  
  
  
"id": "string",
  
  
  
  
  
"level": "string",
  
  
  
  
  
"major": "string",
  
  
  
  
  
"organisation": "string",
  
  
  
  
  
"startMonth": 0,
  
  
  
  
  
"startYear": 0
  
  
  
  
}
  
  
  
],
  
  
  
"email": "string",
  
  
  
"employmentHistory": [
  
  
  
  
{
  
  
  
  
  
"companyName": "string",
  
  
  
  
  
"employmentType": "string",
  
  
  
  
  
"endDate": "string",
  
  
  
  
  
"id": "string",
  
  
  
  
  
"jobTitle": "string",
  
  
  
  
  
"startDate": "string",
  
  
  
  
  
"workSummary": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"facebook": "string",
  
  
  
"firstName": "string",
  
  
  
"hasCv": true,
  
  
  
"homePhone": "string",
  
  
  
"id": "string",
  
  
  
"inPipeline": true,
  
  
  
"internalNotes": "string",
  
  
  
"jobTitle": "string",
  
  
  
"languages": [
  
  
  
  
{
  
  
  
  
  
"code": "string",
  
  
  
  
  
"level": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"lastActivityDate": "string",
  
  
  
"lastName": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"mobile": "string",
  
  
  
"noticePeriod": "string",
  
  
  
"overview": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"placed": true,
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"rightToWork": true,
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"workPermit": true,
  
  
  
"workPhone": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get a candidate​

GET
/api/nova/candidates/{candidateId}

Fetches a single candidate by its ID. The response contains the full candidate record, including contact details, current employer and job title, location, skills, status, source, tags, rating, overview, internal notes, education and employment history, known languages, and custom field values. Education entries carry startYear, startMonth, endYear and endMonth, where 0 means the CV or record did not give that value. The languages list holds code, name and, when a proficiency has been recorded, level; it is omitted when the candidate has no languages. Responds with 404 if no candidate with the given ID exists, 401 for an invalid API key, and 429 when the account's read rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"address": {
  
  
  
"city": "string",
  
  
  
"country": "string",
  
  
  
"postcode": "string",
  
  
  
"state": "string",
  
  
  
"street": "string"
  
  
},
  
  
"alternateEmail": "string",
  
  
"createdOn": "string",
  
  
"currentEmployer": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"dateOfBirth": "string",
  
  
"desiredSalary": 0,
  
  
"desiredSalaryCurrency": "string",
  
  
"desiredSalaryTenure": "string",
  
  
"doNotContact": true,
  
  
"educationHistory": [
  
  
  
{
  
  
  
  
"endMonth": 0,
  
  
  
  
"endYear": 0,
  
  
  
  
"grade": "string",
  
  
  
  
"id": "string",
  
  
  
  
"level": "string",
  
  
  
  
"major": "string",
  
  
  
  
"organisation": "string",
  
  
  
  
"startMonth": 0,
  
  
  
  
"startYear": 0
  
  
  
}
  
  
],
  
  
"email": "string",
  
  
"employmentHistory": [
  
  
  
{
  
  
  
  
"companyName": "string",
  
  
  
  
"employmentType": "string",
  
  
  
  
"endDate": "string",
  
  
  
  
"id": "string",
  
  
  
  
"jobTitle": "string",
  
  
  
  
"startDate": "string",
  
  
  
  
"workSummary": "string"
  
  
  
}
  
  
],
  
  
"facebook": "string",
  
  
"firstName": "string",
  
  
"hasCv": true,
  
  
"homePhone": "string",
  
  
"id": "string",
  
  
"inPipeline": true,
  
  
"internalNotes": "string",
  
  
"jobTitle": "string",
  
  
"languages": [
  
  
  
{
  
  
  
  
"code": "string",
  
  
  
  
"level": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"lastActivityDate": "string",
  
  
"lastName": "string",
  
  
"linkedIn": "string",
  
  
"location": "string",
  
  
"mobile": "string",
  
  
"noticePeriod": "string",
  
  
"overview": "string",
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"placed": true,
  
  
"rating": 0,
  
  
"reference": "string",
  
  
"rightToWork": true,
  
  
"skills": [
  
  
  
"string"
  
  
],
  
  
"sourceId": "string",
  
  
"sourceName": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"twitter": "string",
  
  
"updatedOn": "string",
  
  
"workPermit": true,
  
  
"workPhone": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update a candidate​

PUT
/api/nova/candidates/{candidateId}

Applies a partial update to an existing candidate. Text fields are only overwritten when supplied (name and email additionally ignore blank values), while skills, tags, education history, employment history, and custom fields are replaced wholesale when present in the body. The workPermit, rightToWork and doNotContact booleans, the address object (street, city, state, country, postcode) and the expected salary fields (desiredSalary, desiredSalaryCurrency, desiredSalaryTenure, noticePeriod) are only applied when supplied. Returns the candidate ID on success, 404 if the candidate does not exist, 401 for an invalid API key, and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"address": {
  
  
"city": "string",
  
  
"country": "string",
  
  
"postcode": "string",
  
  
"state": "string",
  
  
"street": "string"
  
},
  
"alternateEmail": "string",
  
"currentEmployer": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"dateOfBirth": "string",
  
"desiredSalary": 0,
  
"desiredSalaryCurrency": "string",
  
"desiredSalaryTenure": "string",
  
"doNotContact": true,
  
"educationHistory": [
  
  
{
  
  
  
"educationLevelId": "string",
  
  
  
"endYear": 0,
  
  
  
"grade": "string",
  
  
  
"major": "string",
  
  
  
"organisation": "string",
  
  
  
"startYear": 0
  
  
}
  
],
  
"email": "string",
  
"employmentHistory": [
  
  
{
  
  
  
"companyName": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"endDate": "string",
  
  
  
"jobTitle": "string",
  
  
  
"startDate": "string",
  
  
  
"workSummary": "string"
  
  
}
  
],
  
"facebook": "string",
  
"firstName": "string",
  
"homePhone": "string",
  
"id": "string",
  
"internalNotes": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"noticePeriod": "string",
  
"overview": "string",
  
"ownerId": "string",
  
"rating": 0,
  
"rightToWork": true,
  
"skills": [
  
  
"string"
  
],
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"workPermit": true,
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Delete a candidate​

DELETE
/api/nova/candidates/{candidateId}

Deletes the candidate with the given ID. The candidate is looked up first, so a missing record responds with 404 rather than deleting silently. Returns the deleted candidate's ID on success, 401 for an invalid API key, and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update internal notes​

PUT
/api/nova/candidates/{candidateId}/internalnotes

Replaces the candidate's internal notes with the text field from the request body. Internal notes are held separately from the candidate overview. Responds with 404 when the candidate does not exist, 401 for an invalid API key, and 429 when rate limited. Returns the candidate ID on success.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update candidate overview​

PUT
/api/nova/candidates/{candidateId}/overview

Replaces the candidate's overview text with the text field from the request body. Responds with 404 when the candidate does not exist, 401 for an invalid API key, and 429 when rate limited. Returns the candidate ID on success.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update candidate source​

PUT
/api/nova/candidates/{candidateId}/source

Sets a candidate's source to one of the source master data values. The sourceId field is required and must reference an existing source; an optional referrerId can be supplied to record the referring record against the change. Responds with 400 when sourceId is blank, 404 when the candidate or source cannot be found, and returns the candidate ID on success.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update candidate status​

PUT
/api/nova/candidates/{candidateId}/status

Sets a candidate's status to one of the candidate status master data values. The statusId field is required and must reference an existing candidate status; an optional comments field is recorded with the change. Responds with 400 when statusId is missing, 404 when the candidate or status cannot be found, and returns the candidate ID on success.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace candidate tags​

PUT
/api/nova/candidates/{candidateId}/tags

Replaces the candidate's entire tag set with the tags supplied in the request; existing tags not present in the request are removed. The tags field is required and sending an empty list clears all tags. Each tag has a value and an optional group; entries with a blank value are skipped. Responds with 400 when tags is missing, 404 when the candidate does not exist, and returns the candidate ID on success.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

candidateId*

candidateId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Create a company​

POST
/api/nova/companies

Creates a new company from the request body. Supported fields include name, description, website, email, phone, faxNo, linkedIn, facebook, twitter, domain, employeeCount, annualRevenue, foundedYear, client flag, rating, statusId and customFields (user-defined fields referenced by fieldId). The account's company record limit is checked first and a 429 is returned if it has been reached. A company whose name already exists in the account (case-insensitive) is not created; the response is 409 with error DUPLICATE and the existing company's ID in the data field. On success the response contains the ID of the newly created company.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"annualRevenue": 0,
  
"client": true,
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"domain": "string",
  
"email": "string",
  
"employeeCount": 0,
  
"facebook": "string",
  
"faxNo": "string",
  
"foundedYear": 0,
  
"id": "string",
  
"linkedIn": "string",
  
"name": "string",
  
"ownerId": "string",
  
"phone": "string",
  
"rating": 0,
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"website": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List all companies​

GET
/api/nova/companies/list

Returns a paginated list of all companies in the account, sorted by creation date with the newest first. Accepts page (default 0) and size (default 20, capped at 100) parameters. This is equivalent to calling the search endpoint with an empty query. The response includes the company records plus page, size and total count metadata.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"activeJobCount": 0,
  
  
  
"annualRevenue": 0,
  
  
  
"client": true,
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"domain": "string",
  
  
  
"email": "string",
  
  
  
"employeeCount": 0,
  
  
  
"facebook": "string",
  
  
  
"faxNo": "string",
  
  
  
"foundedYear": 0,
  
  
  
"id": "string",
  
  
  
"industryId": "string",
  
  
  
"industryName": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"name": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"parentCompanyId": "string",
  
  
  
"parentCompanyName": "string",
  
  
  
"phone": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"sectorId": "string",
  
  
  
"sectorName": "string",
  
  
  
"size": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"totalPlacementCount": 0,
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"website": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search companies​

GET
/api/nova/companies/search

Searches companies using a free-text query and returns a paginated list. Accepts query (defaults to empty, which matches all companies), page (default 0) and size (default 20, capped at 100) parameters. Results are sorted by creation date, newest first. The response contains the matching company records plus page, size and total count metadata. Returns 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"activeJobCount": 0,
  
  
  
"annualRevenue": 0,
  
  
  
"client": true,
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"domain": "string",
  
  
  
"email": "string",
  
  
  
"employeeCount": 0,
  
  
  
"facebook": "string",
  
  
  
"faxNo": "string",
  
  
  
"foundedYear": 0,
  
  
  
"id": "string",
  
  
  
"industryId": "string",
  
  
  
"industryName": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"name": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"parentCompanyId": "string",
  
  
  
"parentCompanyName": "string",
  
  
  
"phone": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"sectorId": "string",
  
  
  
"sectorName": "string",
  
  
  
"size": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"totalPlacementCount": 0,
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"website": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get company by ID​

GET
/api/nova/companies/{companyId}

Fetches a single company record by its ID. The response contains the full company details including status, tags, source and custom fields. Returns 404 if no company exists with the given ID, and 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"activeJobCount": 0,
  
  
"annualRevenue": 0,
  
  
"client": true,
  
  
"createdOn": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"description": "string",
  
  
"domain": "string",
  
  
"email": "string",
  
  
"employeeCount": 0,
  
  
"facebook": "string",
  
  
"faxNo": "string",
  
  
"foundedYear": 0,
  
  
"id": "string",
  
  
"industryId": "string",
  
  
"industryName": "string",
  
  
"lastActivityDate": "string",
  
  
"linkedIn": "string",
  
  
"location": "string",
  
  
"name": "string",
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"parentCompanyId": "string",
  
  
"parentCompanyName": "string",
  
  
"phone": "string",
  
  
"rating": 0,
  
  
"reference": "string",
  
  
"sectorId": "string",
  
  
"sectorName": "string",
  
  
"size": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"totalPlacementCount": 0,
  
  
"twitter": "string",
  
  
"updatedOn": "string",
  
  
"website": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update a company​

PUT
/api/nova/companies/{companyId}

Updates an existing company identified by its ID. This is a partial update: only the fields supplied in the request body overwrite the current values, and omitted fields are left unchanged. Supported fields match the create endpoint, including name, contact details, social links, company metrics, client flag, rating, statusId and customFields. Returns 404 if the company does not exist, otherwise the response contains the updated company's ID.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"annualRevenue": 0,
  
"client": true,
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"domain": "string",
  
"email": "string",
  
"employeeCount": 0,
  
"facebook": "string",
  
"faxNo": "string",
  
"foundedYear": 0,
  
"id": "string",
  
"linkedIn": "string",
  
"name": "string",
  
"ownerId": "string",
  
"phone": "string",
  
"rating": 0,
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"website": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update company internal notes​

PUT
/api/nova/companies/{companyId}/internalnotes

Replaces the company's internal notes with the text supplied in the request body. Internal notes are free-form text held on the company record for internal reference. Returns 404 if the company does not exist. On success the response contains the company ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update company overview​

PUT
/api/nova/companies/{companyId}/overview

Replaces the company's overview, also known as the client description, with the text supplied in the request body. The text field is written as-is to the company record. Returns 404 if the company does not exist. On success the response contains the company ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update company source​

PUT
/api/nova/companies/{companyId}/source

Sets the source of a company to the source master record identified by sourceId in the request body. sourceId is required and a 400 is returned if it is blank; a 404 is returned if the company or the source record cannot be found. An optional referrerId can be supplied to record the referrer alongside the source. On success the response contains the company ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update company status​

PUT
/api/nova/companies/{companyId}/status

Sets the status of a company to the status master record identified by statusId in the request body. statusId is required and a 400 is returned if it is blank. Returns 404 if either the company or the status record cannot be found. On success the response contains the company ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace company tags​

PUT
/api/nova/companies/{companyId}/tags

Replaces the company's entire tag set with the list of tags supplied in the request body; any existing tags not included are removed. The tags field is required and a 400 is returned if it is missing. Returns 404 if the company does not exist. On success the response contains the company ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Create a contact​

POST
/api/nova/contacts

Creates a new contact from the request body. Supported fields include firstName, lastName, email, alternateEmail, mobile, homePhone, workPhone, jobTitle, companyId, secondaryCompanyId, ownerId, tags, linkedIn, facebook, twitter, skype, dateOfBirth, description, internalNotes, skills, statusId, sourceId and customFields (user-defined fields referenced by fieldId). The account's contact record limit is checked first and a 429 is returned if it has been reached. A duplicate check runs before the record is created: an existing contact matching on email, LinkedIn profile, or first name, surname and company combination blocks the create and responds with 409, carrying the existing contact's ID in the data field so it can be updated instead. On success the response contains the ID of the newly created contact.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"alternateEmail": "string",
  
"companyId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"dateOfBirth": "string",
  
"description": "string",
  
"email": "string",
  
"facebook": "string",
  
"firstName": "string",
  
"homePhone": "string",
  
"id": "string",
  
"internalNotes": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"ownerId": "string",
  
"secondaryCompanyId": "string",
  
"skills": [
  
  
"string"
  
],
  
"skype": "string",
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List all contacts​

GET
/api/nova/contacts/list

Returns a paginated list of all contacts in the account, sorted by creation date with the newest first. Accepts page (default 0) and size (default 20, capped at 100) parameters. This is equivalent to calling the search endpoint with an empty query. The response includes the contact records plus page, size and total count metadata.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"alternateEmail": "string",
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"dateOfBirth": "string",
  
  
  
"description": "string",
  
  
  
"doNotContact": true,
  
  
  
"email": "string",
  
  
  
"facebook": "string",
  
  
  
"firstName": "string",
  
  
  
"homePhone": "string",
  
  
  
"id": "string",
  
  
  
"industries": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"jobTitle": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"lastName": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"mobile": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"reference": "string",
  
  
  
"secondaryCompanyId": "string",
  
  
  
"secondaryCompanyName": "string",
  
  
  
"sectors": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"skype": "string",
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"workPhone": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search contacts​

GET
/api/nova/contacts/search

Searches contacts using a free-text query and returns a paginated list. Accepts query (defaults to empty, which matches all contacts), page (default 0) and size (default 20, capped at 100) parameters. Results are sorted by creation date, newest first. The response contains the matching contact records plus page, size and total count metadata. Returns 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"alternateEmail": "string",
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"dateOfBirth": "string",
  
  
  
"description": "string",
  
  
  
"doNotContact": true,
  
  
  
"email": "string",
  
  
  
"facebook": "string",
  
  
  
"firstName": "string",
  
  
  
"homePhone": "string",
  
  
  
"id": "string",
  
  
  
"industries": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"jobTitle": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"lastName": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"mobile": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"reference": "string",
  
  
  
"secondaryCompanyId": "string",
  
  
  
"secondaryCompanyName": "string",
  
  
  
"sectors": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"skype": "string",
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"workPhone": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get contact by ID​

GET
/api/nova/contacts/{contactId}

Fetches a single contact record by its ID. The response contains the full contact details including status, tags, source and custom fields. Returns 404 if no contact exists with the given ID, and 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"alternateEmail": "string",
  
  
"companyId": "string",
  
  
"companyName": "string",
  
  
"createdOn": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"dateOfBirth": "string",
  
  
"description": "string",
  
  
"doNotContact": true,
  
  
"email": "string",
  
  
"facebook": "string",
  
  
"firstName": "string",
  
  
"homePhone": "string",
  
  
"id": "string",
  
  
"industries": [
  
  
  
"string"
  
  
],
  
  
"jobTitle": "string",
  
  
"lastActivityDate": "string",
  
  
"lastName": "string",
  
  
"linkedIn": "string",
  
  
"location": "string",
  
  
"mobile": "string",
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"reference": "string",
  
  
"secondaryCompanyId": "string",
  
  
"secondaryCompanyName": "string",
  
  
"sectors": [
  
  
  
"string"
  
  
],
  
  
"skills": [
  
  
  
"string"
  
  
],
  
  
"skype": "string",
  
  
"sourceId": "string",
  
  
"sourceName": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"twitter": "string",
  
  
"updatedOn": "string",
  
  
"workPhone": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update a contact​

PUT
/api/nova/contacts/{contactId}

Updates an existing contact identified by its ID. This is a partial update: only the fields supplied in the request body overwrite the current values, and omitted fields are left unchanged. Supported fields match the create endpoint, including name, contact details, companyId, secondaryCompanyId, ownerId, tags, social links, dateOfBirth, description, internalNotes, skills, statusId, sourceId and customFields. Returns 404 if the contact does not exist, otherwise the response contains the updated contact's ID.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"alternateEmail": "string",
  
"companyId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"dateOfBirth": "string",
  
"description": "string",
  
"email": "string",
  
"facebook": "string",
  
"firstName": "string",
  
"homePhone": "string",
  
"id": "string",
  
"internalNotes": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"ownerId": "string",
  
"secondaryCompanyId": "string",
  
"skills": [
  
  
"string"
  
],
  
"skype": "string",
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update contact internal notes​

PUT
/api/nova/contacts/{contactId}/internalnotes

Replaces the contact's internal notes with the text supplied in the request body. Internal notes are free-form text held on the contact record for internal reference. Returns 404 if the contact does not exist. On success the response contains the contact ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update contact overview​

PUT
/api/nova/contacts/{contactId}/overview

Replaces the contact's overview description with the text supplied in the request body. The text field is written as-is to the contact record's description. Returns 404 if the contact does not exist. On success the response contains the contact ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update contact source​

PUT
/api/nova/contacts/{contactId}/source

Sets the source of a contact to the source master record identified by sourceId in the request body. sourceId is required and a 400 is returned if it is blank; a 404 is returned if the contact or the source record cannot be found. An optional referrerId can be supplied to record the referrer alongside the source. On success the response contains the contact ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update contact status​

PUT
/api/nova/contacts/{contactId}/status

Sets the status of a contact to the status master record identified by statusId in the request body. statusId is required and a 400 is returned if it is blank. Returns 404 if either the contact or the status record cannot be found. On success the response contains the contact ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace contact tags​

PUT
/api/nova/contacts/{contactId}/tags

Replaces the contact's entire tag set with the list of tags supplied in the request body; any existing tags not included are removed. The tags field is required and a 400 is returned if it is missing. Returns 404 if the contact does not exist. On success the response contains the contact ID with a confirmation message.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

contactId*

contactId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Custom Fields​


List custom field definitions​

GET
/api/nova/customfields

Returns the account's custom field (user-defined field) definitions. Each entry contains the fieldId to use when writing customFields on create and update endpoints, the display label, the input type (for example INPUT_TEXT, INPUT_NUMBER, INPUT_DATE, YES_NO, DROPDOWN, MULTI_SELECT), the record types the field applies to, the allowed values for dropdown and multi-select fields and whether the field is mandatory. Accepts an optional recordType parameter (for example CONTACT, COMPANY, JOB, CANDIDATE, LEAD, OPPORTUNITY, PLACEMENT) to return only the definitions for that module; a 400 is returned for an unrecognised recordType. Returns 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
recordType

recordType

Type
string

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"allowedValues": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"id": "string",
  
  
  
"inputType": "string",
  
  
  
"label": "string",
  
  
  
"mandatory": true,
  
  
  
"recordTypes": [
  
  
  
  
"string"
  
  
  
]
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


List file categories​

GET
/api/nova/files/categories

Returns the account's file categories as id and name pairs. Use an id here as the optional categoryId when uploading a file, so the document lands in the right category on the record's Files tab. The only required parameter is the apiKey; returns 401 if it is invalid and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"id": "string",
  
  
  
"name": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


List files on a record​

GET
/api/nova/files/record/{recordId}

Returns the documents attached to the record given by the recordId path parameter, newest first - the same list the record's Files tab shows. Works for any record type. Accepts page and size query parameters (size defaults to 20 and is capped at 100). Each entry contains the file id, name, extension, content type, size, category, who uploaded it and when. Returns 404 when the record does not exist, 401 for an invalid API key and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

recordId*

recordId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"categoryId": "string",
  
  
  
"categoryName": "string",
  
  
  
"contentType": "string",
  
  
  
"expiresOn": "string",
  
  
  
"extension": "string",
  
  
  
"id": "string",
  
  
  
"name": "string",
  
  
  
"recordId": "string",
  
  
  
"recordLabel": "string",
  
  
  
"recordType": "string",
  
  
  
"showInClientPortal": true,
  
  
  
"size": 0,
  
  
  
"uploadedBy": "string",
  
  
  
"uploadedOn": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Upload a file to a record​

POST
/api/nova/files/upload

Stores a document as multipart form data and attaches it to the record given by recordId, so it appears on that record's Files tab. Works for any record type - job, candidate, company, contact, lead, opportunity or placement - because the type is resolved from the record itself and does not have to be supplied. categoryId is optional and, when given, is resolved against the account's file categories. Allowed file types are controlled by the account's upload extension list (docx, doc, odf, rtf, txt, csv, pdf, odt, ppt, xls, png, jpg, jpeg, tiff by default). The response contains the stored file's id, name, content type, size and the record it was linked to. Returns 400 when the file is missing, the record cannot be found, the category is unknown or the file type is not allowed, 401 for an invalid API key and 429 when the account's daily file allowance or rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Request Body​

multipart/form-data
object
Format"binary"

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"categoryId": "string",
  
  
"categoryName": "string",
  
  
"contentType": "string",
  
  
"expiresOn": "string",
  
  
"extension": "string",
  
  
"id": "string",
  
  
"name": "string",
  
  
"recordId": "string",
  
  
"recordLabel": "string",
  
  
"recordType": "string",
  
  
"showInClientPortal": true,
  
  
"size": 0,
  
  
"uploadedBy": "string",
  
  
"uploadedOn": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Body

Samples​


Get file metadata​

GET
/api/nova/files/{fileId}

Returns the stored document identified by the fileId path parameter without downloading its contents: name, extension, content type, size, category, expiry, client portal visibility, who uploaded it and when, plus the record it is attached to. Returns 404 when the file does not exist in the account, 401 for an invalid API key and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

fileId*

fileId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"categoryId": "string",
  
  
"categoryName": "string",
  
  
"contentType": "string",
  
  
"expiresOn": "string",
  
  
"extension": "string",
  
  
"id": "string",
  
  
"name": "string",
  
  
"recordId": "string",
  
  
"recordLabel": "string",
  
  
"recordType": "string",
  
  
"showInClientPortal": true,
  
  
"size": 0,
  
  
"uploadedBy": "string",
  
  
"uploadedOn": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Delete a file​

DELETE
/api/nova/files/{fileId}

Permanently removes the document identified by the fileId path parameter and detaches it from the record it was attached to, refreshing that record's search index. This cannot be undone. Returns the file id with the message Deleted on success, 404 when the file does not exist in the account, 401 for an invalid API key and 429 when the delete rate limit is exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

fileId*

fileId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Download a file​

GET
/api/nova/files/{fileId}/download

Streams the raw contents of the document identified by the fileId path parameter as an attachment, with the original filename in the Content-Disposition header. Unlike the other endpoints the body is the file itself, not a JSON envelope. To hand the document to a person or a browser instead of receiving the bytes, use GET /api/nova/files/{fileId}/link, which returns a short-lived direct URL. Returns 404 when the file does not exist in the account or its contents are still pending upload, 401 for an invalid API key and 429 when rate limited.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

fileId*

fileId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

*/*
JSON
"string"

Playground​

Authorization
Variables
Key
Value

Samples​


Get a temporary download link​

GET
/api/nova/files/{fileId}/link

Returns a short-lived direct download URL for the document identified by the fileId path parameter, instead of streaming the file through the API. The link points straight at secure storage, expires 15 minutes after it is issued, and needs no API key of its own — so it can be handed to a browser or an end user. Use this when you want to give someone the file; use /download when you need the bytes themselves. Returns 404 when the file does not exist in the account or its contents are still pending upload, 401 for an invalid API key and 429 when rate limited.

privateApiKey
Type
API Key (query: apiKey)

Path Parameters

fileId*

fileId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

OK

application/json
JSON
{
  
"data": {
  
  
"contentType": "string",
  
  
"expiresOn": "string",
  
  
"id": "string",
  
  
"name": "string",
  
  
"size": 0,
  
  
"url": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}
Authorization
Variables
Key
Value

List interviews​

GET
/api/nova/interviews/list

Lists scheduled interviews across the account, limited to the API user's team when the team's data access is restricted. segment picks the same windows as the Interviews hub: TODAY, UPCOMING (after today), AWAITING_FEEDBACK (already happened, candidate still at the interview stage and not rejected) or COMPLETED (already happened, candidate since moved to offer or placed, or rejected). from and to (dd/MM/yyyy, both required together) filter on the interview date; with a segment they narrow within it, without one they set the window. With neither, interviews from one month ago to one month ahead are returned. jobId and ownerId narrow further. TODAY and UPCOMING are sorted soonest first, everything else most recent first. Accepts page and size (size defaults to 20 and is capped at 100). Each interview includes id, title, startDate, endDate, timeZone, cancelled, telephonic, location, meetingLink, the job, the candidate, contacts, interviewers (users invited), organiser, owner, the candidate's pipeline stage (stageCode, stageName, subStateName, rejected), notes (the interview description) and meetingNotes (notes added after the interview). Returns 400 for an unknown segment, an invalid date or only one of from and to, and 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
from

from

Type
string
jobId

jobId

Type
string
ownerId

ownerId

Type
string
page

page

Type
integer
Format
"int32"
Default
0
segment

segment

Type
string
size

size

Type
integer
Format
"int32"
Default
20
to

to

Type
string

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"additionalProperties": {
  
  
  
}
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get interview​

GET
/api/nova/interviews/{interviewId}

Fetches one interview by the interviewId path parameter, with the same fields as List interviews. Returns 404 if the interview is not found, is not an interview, or belongs to a team the API user cannot see, and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

interviewId*

interviewId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Create a job​

POST
/api/nova/jobs

Creates a new job from the request body. Supported fields include title, description, shortDescription, internalDescription, openPositions, skills, boolean flags (remoteWorking, hot, visaSponsored, relocation, flexiHours), closingDate, startDate, rating, companyId, contactId, master-data IDs (statusId, employmentTypeId, sourceId) and customFields for user-defined fields. The account's job usage limit is checked first and a 429 is returned if it has been reached. On success the response contains the new job's ID with the message Created. Returns 401 for an invalid API key and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"closingDate": "string",
  
"companyId": "string",
  
"contactId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"employmentTypeId": "string",
  
"experienceLevelId": "string",
  
"flexiHours": true,
  
"hot": true,
  
"id": "string",
  
"internalDescription": "string",
  
"maxPay": 0,
  
"minPay": 0,
  
"openPositions": 0,
  
"ownerId": "string",
  
"payCurrency": "string",
  
"payTenure": "string",
  
"rating": 0,
  
"relocation": true,
  
"remoteWorking": true,
  
"shortDescription": "string",
  
"skills": [
  
  
"string"
  
],
  
"sourceId": "string",
  
"startDate": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"title": "string",
  
"visaSponsored": true
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List jobs​

GET
/api/nova/jobs/list

Lists jobs in the account by running the job search with an empty query, so both open and closed jobs are returned. Query parameters are apiKey (required) plus page and size for the response metadata; size is capped at 100. The response contains the jobs with page, size and total count. Returns 401 for an invalid API key and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"clientBrief": "string",
  
  
  
"closingDate": "string",
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"contactId": "string",
  
  
  
"contactName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"dateOpened": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"employmentTypeName": "string",
  
  
  
"experienceLevelId": "string",
  
  
  
"experienceLevelName": "string",
  
  
  
"flexiHours": true,
  
  
  
"hot": true,
  
  
  
"id": "string",
  
  
  
"internalDescription": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"location": "string",
  
  
  
"maxPay": 0,
  
  
  
"minPay": 0,
  
  
  
"openPositions": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"payCurrency": "string",
  
  
  
"payTenure": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"relocation": true,
  
  
  
"remoteWorking": true,
  
  
  
"shortDescription": "string",
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"startDate": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"statusReason": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"title": "string",
  
  
  
"updatedOn": "string",
  
  
  
"visaSponsored": true
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search jobs​

GET
/api/nova/jobs/search

Searches jobs in the account using a case-insensitive contains match on the query parameter against the job title, job reference, and the linked company and contact names and references. Query parameters are apiKey (required), query (the search text, empty by default), and page and size for the response metadata; size is capped at 100. The response contains the matching jobs with page, size and total count. Returns 401 for an invalid API key and 500 with an error message if the search fails.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"clientBrief": "string",
  
  
  
"closingDate": "string",
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"contactId": "string",
  
  
  
"contactName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"dateOpened": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"employmentTypeName": "string",
  
  
  
"experienceLevelId": "string",
  
  
  
"experienceLevelName": "string",
  
  
  
"flexiHours": true,
  
  
  
"hot": true,
  
  
  
"id": "string",
  
  
  
"internalDescription": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"location": "string",
  
  
  
"maxPay": 0,
  
  
  
"minPay": 0,
  
  
  
"openPositions": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"payCurrency": "string",
  
  
  
"payTenure": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"relocation": true,
  
  
  
"remoteWorking": true,
  
  
  
"shortDescription": "string",
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"startDate": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"statusReason": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"title": "string",
  
  
  
"updatedOn": "string",
  
  
  
"visaSponsored": true
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get a job​

GET
/api/nova/jobs/{jobId}

Fetches a single job by its ID, passed as a path variable, and returns the full job record including title, descriptions, status, company, contact, tags and custom fields. Requires the apiKey query parameter. Returns 404 if no job with the given ID exists in the account, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"clientBrief": "string",
  
  
"closingDate": "string",
  
  
"companyId": "string",
  
  
"companyName": "string",
  
  
"contactId": "string",
  
  
"contactName": "string",
  
  
"createdOn": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"dateOpened": "string",
  
  
"employmentTypeId": "string",
  
  
"employmentTypeName": "string",
  
  
"experienceLevelId": "string",
  
  
"experienceLevelName": "string",
  
  
"flexiHours": true,
  
  
"hot": true,
  
  
"id": "string",
  
  
"internalDescription": "string",
  
  
"lastActivityDate": "string",
  
  
"location": "string",
  
  
"maxPay": 0,
  
  
"minPay": 0,
  
  
"openPositions": 0,
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"payCurrency": "string",
  
  
"payTenure": "string",
  
  
"rating": 0,
  
  
"reference": "string",
  
  
"relocation": true,
  
  
"remoteWorking": true,
  
  
"shortDescription": "string",
  
  
"skills": [
  
  
  
"string"
  
  
],
  
  
"sourceId": "string",
  
  
"sourceName": "string",
  
  
"startDate": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"statusReason": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"title": "string",
  
  
"updatedOn": "string",
  
  
"visaSponsored": true
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update a job​

PUT
/api/nova/jobs/{jobId}

Updates an existing job identified by the jobId path variable, then saves it. Text, date and master-data fields are only applied when supplied (blank or missing values leave the current value unchanged), but the boolean flags (remoteWorking, hot, visaSponsored, relocation, flexiHours) and the companyId and contactId links are always taken from the request body, so omitting them resets those values. Accepts the same request body as job creation, including customFields. Returns the job ID with the message Updated on success, 404 if the job is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"closingDate": "string",
  
"companyId": "string",
  
"contactId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"employmentTypeId": "string",
  
"experienceLevelId": "string",
  
"flexiHours": true,
  
"hot": true,
  
"id": "string",
  
"internalDescription": "string",
  
"maxPay": 0,
  
"minPay": 0,
  
"openPositions": 0,
  
"ownerId": "string",
  
"payCurrency": "string",
  
"payTenure": "string",
  
"rating": 0,
  
"relocation": true,
  
"remoteWorking": true,
  
"shortDescription": "string",
  
"skills": [
  
  
"string"
  
],
  
"sourceId": "string",
  
"startDate": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"title": "string",
  
"visaSponsored": true
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Delete a job​

DELETE
/api/nova/jobs/{jobId}

Deletes a job identified by the jobId path variable. Internally the job is archived through the standard archive flow rather than being physically removed, so it disappears from active views. Returns the job ID with the message Deleted on success. Returns 404 if the job is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


List pipeline candidates​

GET
/api/nova/jobs/{jobId}/pipeline

Lists the candidates in the pipeline of the job identified by the jobId path variable, returning one entry per candidate with their current pipeline stage. Query parameters are apiKey (required) plus page and size for pagination; size is capped at 100 and pagination is applied in memory over the job's full pipeline. The response contains the pipeline entries with page, size and total count. Returns 401 for an invalid API key and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"candidateId": "string",
  
  
  
"candidateName": "string",
  
  
  
"createdOn": "string",
  
  
  
"id": "string",
  
  
  
"jobId": "string",
  
  
  
"rejected": true,
  
  
  
"stage": "string",
  
  
  
"status": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Add candidate to pipeline​

POST
/api/nova/jobs/{jobId}/pipeline

Attaches a candidate to the pipeline of the job identified by the jobId path variable. The request body must include candidateId and may include statusCode to choose the stage (SOURCED, APPLIED, SHORTLIST, CV_SENT, INTERVIEW, OFFER or PLACED; defaults to SOURCED) and an optional stateId for swimlane or sub-state placement. The call is idempotent: if the candidate is already in the job's pipeline the existing entry's ID is returned with the message Already exists instead of creating a duplicate. Writes go through the same pipeline service as the kanban UI, so webhooks, scorecards and the board stay in sync. Returns the new pipeline entry's ID with the message Created on success; 400 for a missing candidateId or an invalid statusCode, 404 if the job or candidate is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"candidateId": "string",
  
"stateId": "string",
  
"statusCode": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update pipeline status​

PUT
/api/nova/jobs/{jobId}/pipeline/{pipelineId}/status

Moves a pipeline entry, identified by the pipelineId path variable, to a different stage of the job identified by the jobId path variable. The request body must include statusCode (SOURCED, APPLIED, SHORTLIST, CV_SENT, INTERVIEW, OFFER or PLACED) and may include an optional stateId to also set a swimlane or sub-state. The entry must belong to the given job; a mismatch returns 404, as does an unknown pipelineId. Returns the updated pipeline entry with the message Updated on success; 400 for a missing or invalid statusCode, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required
pipelineId*

pipelineId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"stateId": "string",
  
"statusCode": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"candidateId": "string",
  
  
"candidateName": "string",
  
  
"createdOn": "string",
  
  
"id": "string",
  
  
"jobId": "string",
  
  
"rejected": true,
  
  
"stage": "string",
  
  
"status": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update job source​

PUT
/api/nova/jobs/{jobId}/source

Sets the source of a job identified by the jobId path variable. The request body must include sourceId, which is resolved against the account's source master data before being applied, and may include an optional referrerId to record who referred the job. Returns the job ID with the message Source updated on success. Returns 400 if sourceId is blank, 404 if the job or the source is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update job status​

PUT
/api/nova/jobs/{jobId}/status

Changes the status of a job identified by the jobId path variable. The request body must include statusId, which is resolved against the account's job status master data before the change is applied; optional reasonId and comments can be supplied to record why the status changed. Returns the job ID with the message Status updated on success. Returns 400 if statusId is blank, 404 if the job or the status is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace job tags​

PUT
/api/nova/jobs/{jobId}/tags

Replaces the full set of tags on a job identified by the jobId path variable. The request body must include a tags array where each tag has a value and an optional group; entries with a blank value are skipped, and the supplied set replaces the job's existing tags rather than being appended. Returns the job ID with the message Tags updated on success. Returns 400 if the tags array is missing, 404 if the job is not found, 429 if rate limited, 401 for an invalid API key, and 500 with an error message on failure.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List record activities​

GET
/api/nova/journal/{recordId}

Returns journal/timeline activity entries linked to the record given by the recordId path parameter. Internally it scans the account's recent activity feed (limited by the size parameter) and keeps only entries linked to that record, so only recent activity is returned. Accepts page and size query parameters (size defaults to 20 and is capped at 100), which are echoed back in the pagination metadata. Each entry includes id, date, subject, message, type, the activity label where set, and the creating user's id and name. Returns 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

recordId*

recordId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"additionalProperties": {
  
  
  
}
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Add a note to a record​

POST
/api/nova/journal/{recordId}

Creates a timeline note against the record given by the recordId path parameter, which may be a candidate, contact, company, lead, job or placement. Only the note field is required; HTML is sanitized server-side. activityTypeId is resolved against the account's activity types and falls back to Comment when omitted or unknown, createdByUserId attributes the note to another user and defaults to the API key's own user, reminderDate accepts dd/MM/yyyy HH:mm:ss, and linkedRecordIds attaches the note to further records in addition to the one in the path so it appears on each of their timelines. Returns the created note id. Responds with 400 when the note is empty or any record - the one in the path or a linked one - cannot be found, and 401 for an invalid API key.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

recordId*

recordId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"activityTypeId": "string",
  
"createdByUserId": "string",
  
"linkedRecordIds": [
  
  
"string"
  
],
  
"note": "string",
  
"reminderDate": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Create a lead​

POST
/api/nova/leads

Creates a new lead record. The request body accepts name, email and phone details, job title, company name or companyId (the id or CY- reference of an existing company to link; otherwise a company with the same name is linked when one exists), fromContactId (start the lead from an existing contact: its details fill the fields left blank, its company is linked and the lead records the contact it came from; refused with 400 unless the account allows contacts as leads), social links, website, description, employees, rating and a do-not-contact flag, plus statusId, sourceId, industryId, sectorId and custom UDF fields, all of which are resolved against the account's master data. Creation is subject to the account's API usage limits and returns 429 when the limit is exceeded. A duplicate check runs before the record is created: an existing lead matching on email, LinkedIn profile, or name and company combination blocks the create and responds with 409, carrying the existing record's ID in the data field so it can be updated instead. Contacts are included in that check unless the account allows contacts as leads. On success the new lead's id is returned. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"alternateEmail": "string",
  
"companyId": "string",
  
"companyName": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"doNotContact": true,
  
"email": "string",
  
"employees": "string",
  
"facebook": "string",
  
"firstName": "string",
  
"fromContactId": "string",
  
"homePhone": "string",
  
"id": "string",
  
"industryId": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"ownerId": "string",
  
"rating": 0,
  
"sectorId": "string",
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"website": "string",
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List leads​

GET
/api/nova/leads/list

Returns all leads in the account without any text filtering; internally this behaves like the search endpoint called with an empty query. Results are paginated with the page and size parameters; size defaults to 20 and is capped at 100, sorted by created date with the newest first. Returns a paged list of lead records along with the total count. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"alternateEmail": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"doNotContact": true,
  
  
  
"email": "string",
  
  
  
"employees": "string",
  
  
  
"facebook": "string",
  
  
  
"firstName": "string",
  
  
  
"homePhone": "string",
  
  
  
"id": "string",
  
  
  
"industryId": "string",
  
  
  
"industryName": "string",
  
  
  
"jobTitle": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"lastName": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"mobile": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"pipelineId": "string",
  
  
  
"pipelineName": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"sectorId": "string",
  
  
  
"sectorName": "string",
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"website": "string",
  
  
  
"workPhone": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search leads​

GET
/api/nova/leads/search

Searches leads across the account using a free-text query supplied in the query parameter. Results are paginated with the page and size parameters; size defaults to 20 and is capped at 100, and records are sorted by created date with the newest first. Returns a paged list of lead records along with the total match count. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"alternateEmail": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"doNotContact": true,
  
  
  
"email": "string",
  
  
  
"employees": "string",
  
  
  
"facebook": "string",
  
  
  
"firstName": "string",
  
  
  
"homePhone": "string",
  
  
  
"id": "string",
  
  
  
"industryId": "string",
  
  
  
"industryName": "string",
  
  
  
"jobTitle": "string",
  
  
  
"lastActivityDate": "string",
  
  
  
"lastName": "string",
  
  
  
"linkedIn": "string",
  
  
  
"location": "string",
  
  
  
"mobile": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"pipelineId": "string",
  
  
  
"pipelineName": "string",
  
  
  
"rating": 0,
  
  
  
"reference": "string",
  
  
  
"sectorId": "string",
  
  
  
"sectorName": "string",
  
  
  
"sourceId": "string",
  
  
  
"sourceName": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"twitter": "string",
  
  
  
"updatedOn": "string",
  
  
  
"website": "string",
  
  
  
"workPhone": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get a lead​

GET
/api/nova/leads/{leadId}

Fetches a single lead by its identifier. The response includes the lead's contact and company details together with industry, sector, source, pipeline, rating, employees, website, social links, description and the do-not-contact flag. Returns 404 when no lead exists with the given id and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"alternateEmail": "string",
  
  
"companyName": "string",
  
  
"createdOn": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"description": "string",
  
  
"doNotContact": true,
  
  
"email": "string",
  
  
"employees": "string",
  
  
"facebook": "string",
  
  
"firstName": "string",
  
  
"homePhone": "string",
  
  
"id": "string",
  
  
"industryId": "string",
  
  
"industryName": "string",
  
  
"jobTitle": "string",
  
  
"lastActivityDate": "string",
  
  
"lastName": "string",
  
  
"linkedIn": "string",
  
  
"location": "string",
  
  
"mobile": "string",
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"pipelineId": "string",
  
  
"pipelineName": "string",
  
  
"rating": 0,
  
  
"reference": "string",
  
  
"sectorId": "string",
  
  
"sectorName": "string",
  
  
"sourceId": "string",
  
  
"sourceName": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"twitter": "string",
  
  
"updatedOn": "string",
  
  
"website": "string",
  
  
"workPhone": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update a lead​

PUT
/api/nova/leads/{leadId}

Updates an existing lead identified by the path id. Fields supplied in the request body overwrite the existing values and most omitted fields are left unchanged, although the doNotContact flag is always applied and defaults to false when omitted. The statusId, sourceId, industryId and sectorId fields are resolved against the account's master data, and custom UDF fields replace the stored custom field values when provided. Returns 404 when the lead is not found and the lead id on success. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"alternateEmail": "string",
  
"companyId": "string",
  
"companyName": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"doNotContact": true,
  
"email": "string",
  
"employees": "string",
  
"facebook": "string",
  
"firstName": "string",
  
"fromContactId": "string",
  
"homePhone": "string",
  
"id": "string",
  
"industryId": "string",
  
"jobTitle": "string",
  
"lastName": "string",
  
"linkedIn": "string",
  
"mobile": "string",
  
"ownerId": "string",
  
"rating": 0,
  
"sectorId": "string",
  
"sourceId": "string",
  
"statusId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"twitter": "string",
  
"website": "string",
  
"workPhone": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Delete a lead​

DELETE
/api/nova/leads/{leadId}

Deletes a lead by its identifier. The lead is looked up first and 404 is returned when it does not exist. On success the deleted lead's id is returned with a confirmation message. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update lead overview​

PUT
/api/nova/leads/{leadId}/overview

Replaces the overview (description) text of a lead with the text supplied in the request body. The existing text is overwritten in full rather than appended to. Returns 404 when the lead is not found and the lead id on success. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"text": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update lead source​

PUT
/api/nova/leads/{leadId}/source

Sets the source of a lead to the given source from the account's master data. The request body requires sourceId and accepts an optional referrerId identifying the referring record. Returns 400 when sourceId is missing and 404 when the lead or the source cannot be found. On success the lead id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update lead status​

PUT
/api/nova/leads/{leadId}/status

Changes the status of a lead to the given status from the account's master data. The request body requires statusId and accepts optional comments recorded with the change. Returns 400 when statusId is missing and 404 when either the lead or the status cannot be found. On success the lead id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace lead tags​

PUT
/api/nova/leads/{leadId}/tags

Replaces the full set of tags on a lead with the tags supplied in the request body; existing tags that are not included are removed. The tags field is required and may be an empty list to clear all tags. Returns 400 when tags is missing and 404 when the lead is not found. On success the lead id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

leadId*

leadId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Lookup Data​


List lookup data​

GET
/api/nova/lookup

Returns static system-level lookup data in a single call: countries, languages and nationalities as code/name pairs sorted by name, plus the list of record types supported by the API. This data is the same for every account and changes rarely, so the response is publicly cacheable for 24 hours. The only required parameter is the apiKey; returns 401 if it is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Master Data​


List master data​

GET
/api/nova/masterdata

Returns all account-level master/configuration data in a single call, grouped by type: candidate, job, company, contact, lead, opportunity, placement and invoice statuses, company types, lead and opportunity pipelines, job pipeline stages and reject reasons, job application labels, recruiting team roles, activity types, sources, industries, sectors, skills, employment types, education levels and genders. Each item is lightweight and contains its id and name; leadStatuses and opportunityStates additionally carry pipelineId, pipelineName and typeCode (for example OPEN, WON or LOST), and each opportunity state lists its reasons as id and name pairs. Use these ids when creating or filtering records elsewhere in the API. All 23 lists are loaded in parallel and the response is privately cacheable for 5 minutes. The only required parameter is the apiKey; returns 401 if it is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"activityTypes": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"candidateStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"companyStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"companyTypes": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"contactStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"educationLevels": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"employmentTypes": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"genders": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"industries": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"invoiceStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"jobApplicationLabels": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"jobPipelineRejectReasons": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"jobPipelineStages": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"jobStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"leadPipelines": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"leadStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"pipelineId": "string",
  
  
  
  
"pipelineName": "string",
  
  
  
  
"typeCode": "string"
  
  
  
}
  
  
],
  
  
"opportunityPipelines": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"opportunityStates": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"pipelineId": "string",
  
  
  
  
"pipelineName": "string",
  
  
  
  
"reasons": [
  
  
  
  
  
{
  
  
  
  
  
  
"id": "string",
  
  
  
  
  
  
"name": "string"
  
  
  
  
  
}
  
  
  
  
],
  
  
  
  
"typeCode": "string"
  
  
  
}
  
  
],
  
  
"placementStatuses": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"recruitingTeamRoles": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"sectors": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"skills": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
],
  
  
"sources": [
  
  
  
{
  
  
  
  
"id": "string",
  
  
  
  
"name": "string"
  
  
  
}
  
  
]
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Create an opportunity​

POST
/api/nova/opportunities

Creates a new opportunity record. The request body accepts name, description, probability, forecasted closing date, start date, actual closing date, estimated duration in months, a stateId resolved against the account's opportunity states, and custom UDF fields. Creation is subject to the account's API usage limits and returns 429 when the limit is exceeded. On success the new opportunity's id is returned. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"actualClosingDate": "string",
  
"bidCurrency": "string",
  
"bidValue": 0,
  
"companyId": "string",
  
"contactId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"estimatedDurationMonths": 0,
  
"forecastedClosingDate": "string",
  
"id": "string",
  
"name": "string",
  
"ownerId": "string",
  
"probability": 0,
  
"startDate": "string",
  
"stateId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List opportunities​

GET
/api/nova/opportunities/list

Returns all opportunities in the account without any text filtering; internally this behaves like the search endpoint called with an empty query. Results are paginated with the page and size parameters; size defaults to 20 and is capped at 100, sorted by created date with the newest first. Returns a paged list of opportunity records along with the total count. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"actualClosingDate": "string",
  
  
  
"bidCurrency": "string",
  
  
  
"bidValue": 0,
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"contactId": "string",
  
  
  
"contactName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"employmentTypeName": "string",
  
  
  
"estimatedDurationMonths": 0,
  
  
  
"forecastedClosingDate": "string",
  
  
  
"id": "string",
  
  
  
"name": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"probability": 0,
  
  
  
"reference": "string",
  
  
  
"startDate": "string",
  
  
  
"stateId": "string",
  
  
  
"stateName": "string",
  
  
  
"stateReason": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"updatedOn": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search opportunities​

GET
/api/nova/opportunities/search

Searches opportunities across the account using a free-text query supplied in the query parameter. Results are paginated with the page and size parameters; size defaults to 20 and is capped at 100, and records are sorted by created date with the newest first. Returns a paged list of opportunity records along with the total match count. Responds with 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"actualClosingDate": "string",
  
  
  
"bidCurrency": "string",
  
  
  
"bidValue": 0,
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"contactId": "string",
  
  
  
"contactName": "string",
  
  
  
"createdOn": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"description": "string",
  
  
  
"employmentTypeId": "string",
  
  
  
"employmentTypeName": "string",
  
  
  
"estimatedDurationMonths": 0,
  
  
  
"forecastedClosingDate": "string",
  
  
  
"id": "string",
  
  
  
"name": "string",
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"probability": 0,
  
  
  
"reference": "string",
  
  
  
"startDate": "string",
  
  
  
"stateId": "string",
  
  
  
"stateName": "string",
  
  
  
"stateReason": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"updatedOn": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get an opportunity​

GET
/api/nova/opportunities/{opportunityId}

Fetches a single opportunity by its identifier. The response includes the name, description, probability, forecasted and actual closing dates, start date, estimated duration in months, the linked company and contact, the current state with its reason, and the bid value with currency. Returns 404 when no opportunity exists with the given id and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"actualClosingDate": "string",
  
  
"bidCurrency": "string",
  
  
"bidValue": 0,
  
  
"companyId": "string",
  
  
"companyName": "string",
  
  
"contactId": "string",
  
  
"contactName": "string",
  
  
"createdOn": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"description": "string",
  
  
"employmentTypeId": "string",
  
  
"employmentTypeName": "string",
  
  
"estimatedDurationMonths": 0,
  
  
"forecastedClosingDate": "string",
  
  
"id": "string",
  
  
"name": "string",
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"probability": 0,
  
  
"reference": "string",
  
  
"startDate": "string",
  
  
"stateId": "string",
  
  
"stateName": "string",
  
  
"stateReason": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"updatedOn": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update an opportunity​

PUT
/api/nova/opportunities/{opportunityId}

Updates an existing opportunity identified by the path id. Fields supplied in the request body overwrite the existing values and omitted fields are left unchanged; stateId is resolved against the account's opportunity states and custom UDF fields replace the stored custom field values when provided. Returns 404 when the opportunity is not found and the opportunity id on success. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"actualClosingDate": "string",
  
"bidCurrency": "string",
  
"bidValue": 0,
  
"companyId": "string",
  
"contactId": "string",
  
"customFields": [
  
  
{
  
  
  
"boolValue": "string",
  
  
  
"dateValue": "string",
  
  
  
"fieldId": "string",
  
  
  
"fieldLabel": "string",
  
  
  
"listValue": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"value": "string"
  
  
}
  
],
  
"description": "string",
  
"estimatedDurationMonths": 0,
  
"forecastedClosingDate": "string",
  
"id": "string",
  
"name": "string",
  
"ownerId": "string",
  
"probability": 0,
  
"startDate": "string",
  
"stateId": "string",
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Delete an opportunity​

DELETE
/api/nova/opportunities/{opportunityId}

Deletes an opportunity by its identifier. The opportunity is looked up first and 404 is returned when it does not exist. On success the deleted opportunity's id is returned with a confirmation message. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update opportunity source​

PUT
/api/nova/opportunities/{opportunityId}/source

Sets the source of an opportunity to the given source from the account's master data. The request body requires sourceId and accepts an optional referrerId identifying the referring record. Returns 400 when sourceId is missing and 404 when the opportunity or the source cannot be found. On success the opportunity id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"referrerId": "string",
  
"sourceId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Update opportunity state​

PUT
/api/nova/opportunities/{opportunityId}/status

Moves an opportunity to a different state, for example open, won or lost. The request body requires statusId referencing an opportunity state from the account's master data, and accepts an optional reasonId and comments recorded with the change. Returns 400 when statusId is missing and 404 when either the opportunity or the state cannot be found. On success the opportunity id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace opportunity tags​

PUT
/api/nova/opportunities/{opportunityId}/tags

Replaces the full set of tags on an opportunity with the tags supplied in the request body; existing tags that are not included are removed. The tags field is required and may be an empty list to clear all tags. Returns 400 when tags is missing and 404 when the opportunity is not found. On success the opportunity id is returned. Responds with 401 for an invalid API key and 429 when API usage limits are exceeded.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

opportunityId*

opportunityId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Pipelines​


Get job pipeline​

GET
/api/nova/pipelines/job/{jobId}

Returns all pipeline entries (candidates) for the job given by the jobId path parameter. Each entry contains the pipeline entry id, jobId, candidateId, candidateName, the status code, the stage name, a rejected flag and the createdOn date. Accepts page and size query parameters (size defaults to 50 and is capped at 100), which are echoed back in the pagination metadata. Returns 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
50

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"candidateId": "string",
  
  
  
"candidateName": "string",
  
  
  
"createdOn": "string",
  
  
  
"id": "string",
  
  
  
"jobId": "string",
  
  
  
"rejected": true,
  
  
  
"stage": "string",
  
  
  
"status": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


List placements​

GET
/api/nova/placements/list

Returns the placements visible to the API user identified by the apiKey query parameter. This endpoint is an alias that delegates to the placement search endpoint, so it accepts the same optional query string plus page and size parameters (default 20, capped at 100), sorted by creation date descending. Returns a paged list of placement records with the total count; an invalid apiKey returns 401 and unexpected failures return 500.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"candidateId": "string",
  
  
  
"candidateName": "string",
  
  
  
"candidateRate": 0,
  
  
  
"clientRate": 0,
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"currency": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"endDate": "string",
  
  
  
"fee": 0,
  
  
  
"id": "string",
  
  
  
"jobId": "string",
  
  
  
"jobName": "string",
  
  
  
"margin": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"placementDate": "string",
  
  
  
"reference": "string",
  
  
  
"salary": 0,
  
  
  
"startDate": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"timeToFillDays": 0,
  
  
  
"type": "string",
  
  
  
"updatedOn": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Search placements​

GET
/api/nova/placements/search

Searches placements using the same Elasticsearch engine as the placement UI, so the optional query parameter supports search syntax such as placementStartDate:[now-3d TO now+5d]; an empty query returns all placements. Authenticated by an apiKey query parameter tied to an API user; the user's saved and UI filters are skipped, but team and billing visibility restrictions still apply. Results are paged via page and size (default 20, capped at 100) and sorted by creation date descending. Returns a paged list of placement records with the total count; an invalid apiKey returns 401 and unexpected failures return 500.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
query

query

Type
string
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"candidateId": "string",
  
  
  
"candidateName": "string",
  
  
  
"candidateRate": 0,
  
  
  
"clientRate": 0,
  
  
  
"companyId": "string",
  
  
  
"companyName": "string",
  
  
  
"createdOn": "string",
  
  
  
"currency": "string",
  
  
  
"customFields": [
  
  
  
  
{
  
  
  
  
  
"boolValue": "string",
  
  
  
  
  
"dateValue": "string",
  
  
  
  
  
"fieldId": "string",
  
  
  
  
  
"fieldLabel": "string",
  
  
  
  
  
"listValue": [
  
  
  
  
  
  
"string"
  
  
  
  
  
],
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"endDate": "string",
  
  
  
"fee": 0,
  
  
  
"id": "string",
  
  
  
"jobId": "string",
  
  
  
"jobName": "string",
  
  
  
"margin": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"placementDate": "string",
  
  
  
"reference": "string",
  
  
  
"salary": 0,
  
  
  
"startDate": "string",
  
  
  
"statusId": "string",
  
  
  
"statusName": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"group": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"timeToFillDays": 0,
  
  
  
"type": "string",
  
  
  
"updatedOn": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get a placement​

GET
/api/nova/placements/{placementId}

Fetches a single placement by the placementId path variable, subject to the visibility of the API user identified by the apiKey query parameter. Returns the placement record on success. Responds with 404 if the placement does not exist or is not visible to the user, 401 if the apiKey is invalid, and 500 on unexpected failures.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

placementId*

placementId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"candidateId": "string",
  
  
"candidateName": "string",
  
  
"candidateRate": 0,
  
  
"clientRate": 0,
  
  
"companyId": "string",
  
  
"companyName": "string",
  
  
"createdOn": "string",
  
  
"currency": "string",
  
  
"customFields": [
  
  
  
{
  
  
  
  
"boolValue": "string",
  
  
  
  
"dateValue": "string",
  
  
  
  
"fieldId": "string",
  
  
  
  
"fieldLabel": "string",
  
  
  
  
"listValue": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"endDate": "string",
  
  
"fee": 0,
  
  
"id": "string",
  
  
"jobId": "string",
  
  
"jobName": "string",
  
  
"margin": 0,
  
  
"ownerId": "string",
  
  
"ownerName": "string",
  
  
"placementDate": "string",
  
  
"reference": "string",
  
  
"salary": 0,
  
  
"startDate": "string",
  
  
"statusId": "string",
  
  
"statusName": "string",
  
  
"tags": [
  
  
  
{
  
  
  
  
"group": "string",
  
  
  
  
"value": "string"
  
  
  
}
  
  
],
  
  
"timeToFillDays": 0,
  
  
"type": "string",
  
  
"updatedOn": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Update placement status​

PUT
/api/nova/placements/{placementId}/status

Changes the status of the placement given by the placementId path variable. The JSON body must contain a statusId identifying the new status and may include optional comments; the service resolves the full status from the statusId. Authenticated by an apiKey query parameter tied to an API user whose visibility rules apply. Returns the placement id with a confirmation message on success. Responds with 400 if statusId is blank, 404 if the placement is not found or not visible or the statusId does not match a placement status in the account, 401 if the apiKey is invalid, 429 when rate limited, and 500 on unexpected failures.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

placementId*

placementId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"comments": "string",
  
"reasonId": "string",
  
"statusId": "string"
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


Replace placement tags​

PUT
/api/nova/placements/{placementId}/tags

Replaces the full tag set of the placement given by the placementId path variable with the tags array supplied in the JSON body; existing tags not in the list are removed. Authenticated by an apiKey query parameter tied to an API user whose visibility rules apply. Returns the placement id with a confirmation message on success. Responds with 400 if the tags field is missing, 404 if the placement is not found or not visible, 401 if the apiKey is invalid, 429 when rate limited, and 500 on unexpected failures.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

placementId*

placementId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Request Body​

application/json
JSON
{
  
"tags": [
  
  
{
  
  
  
"group": "string",
  
  
  
"value": "string"
  
  
}
  
]
}

Responses​

OK

application/json
JSON
{
  
"data": "string",
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value
Body

Samples​


List published jobs​

GET
/api/nova/public/jobs

Returns the tenant's open jobs for display on a public job board or website. This is a public endpoint authenticated only by a PUBLIC-role apiKey query parameter; an invalid key returns 401, and a disabled or under-review tenant returns an empty result. Supports optional location and country filters plus pageNumber, pageSize (default 20) and paginated query parameters for paging. Each job is returned as a NovaPublicJobResponse: the advert fields, recruiter contact details and a public apply URL.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
country

country

Type
string
industries

industries

Type
string
jobTypes

jobTypes

Type
string
keywords

keywords

Type
string
location

location

Type
string
pageNumber

pageNumber

Type
integer
Format
"int32"
Default
0
pageSize

pageSize

Type
integer
Format
"int32"
Default
20
paginated

paginated

Type
boolean
Default
false
sectors

sectors

Type
string

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"applyEmail": "string",
  
  
  
"applyUrl": "string",
  
  
  
"archived": true,
  
  
  
"bannerImage": {
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"url": "string"
  
  
  
},
  
  
  
"benefits": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"companyName": "string",
  
  
  
"cutOffDate": "dd/MM/yyyy",
  
  
  
"description": "string",
  
  
  
"employmentType": "string",
  
  
  
"estClosingDate": "dd/MM/yyyy",
  
  
  
"experience": "string",
  
  
  
"hot": true,
  
  
  
"id": "string",
  
  
  
"industries": [
  
  
  
  
{
  
  
  
  
  
"id": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"industry": "string",
  
  
  
"jobDetailImage": {
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"url": "string"
  
  
  
},
  
  
  
"jobType": "string",
  
  
  
"keepAdvertWhenClosed": true,
  
  
  
"languages": [
  
  
  
  
{
  
  
  
  
  
"code": "string",
  
  
  
  
  
"level": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"location": {
  
  
  
  
"addressLabel": "string",
  
  
  
  
"addressLine": "string",
  
  
  
  
"cityName": "string",
  
  
  
  
"cityRegion": "string",
  
  
  
  
"country": "string",
  
  
  
  
"countryCode": "string",
  
  
  
  
"countryName": "string",
  
  
  
  
"latitude": 0,
  
  
  
  
"longitude": 0,
  
  
  
  
"postCode": "string",
  
  
  
  
"regionName": "string"
  
  
  
},
  
  
  
"openings": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"packageOverview": "string",
  
  
  
"pay": {
  
  
  
  
"currency": {
  
  
  
  
  
"code": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
},
  
  
  
  
"label": "string",
  
  
  
  
"maxPay": 0,
  
  
  
  
"minPay": 0,
  
  
  
  
"range": true,
  
  
  
  
"tenure": {
  
  
  
  
  
"code": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
},
  
  
  
"postedOn": "dd/MM/yyyy",
  
  
  
"publishToWebsite": true,
  
  
  
"recruiter": {
  
  
  
  
"address": {
  
  
  
  
  
"addressLabel": "string",
  
  
  
  
  
"addressLine": "string",
  
  
  
  
  
"cityName": "string",
  
  
  
  
  
"cityRegion": "string",
  
  
  
  
  
"country": "string",
  
  
  
  
  
"countryCode": "string",
  
  
  
  
  
"countryName": "string",
  
  
  
  
  
"latitude": 0,
  
  
  
  
  
"longitude": 0,
  
  
  
  
  
"postCode": "string",
  
  
  
  
  
"regionName": "string"
  
  
  
  
},
  
  
  
  
"email": "string",
  
  
  
  
"fullName": "string",
  
  
  
  
"headline": "string",
  
  
  
  
"id": "string",
  
  
  
  
"initials": "string",
  
  
  
  
"languages": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"linkedIn": "string",
  
  
  
  
"mobile": "string",
  
  
  
  
"profilePicUrl": "string",
  
  
  
  
"workPhone": "string"
  
  
  
},
  
  
  
"reference": "string",
  
  
  
"remoteWorking": true,
  
  
  
"sector": "string",
  
  
  
"sectors": [
  
  
  
  
{
  
  
  
  
  
"id": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"shortDescription": "string",
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"status": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"key": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"tenantId": "string",
  
  
  
"title": "string",
  
  
  
"uniqueId": 0,
  
  
  
"webAdvert": {
  
  
  
  
"coreSkills": "string",
  
  
  
  
"keyLanguages": "string",
  
  
  
  
"mainResponsibilities": "string",
  
  
  
  
"recruitmentProcess": "string",
  
  
  
  
"whatWillYouLearn": "string",
  
  
  
  
"whatsOnOffer": "string"
  
  
  
}
  
  
}
  
],
  
"message": "string",
  
"metadata": {
  
},
  
"success": true,
  
"totalCount": 0,
  
"totalValue": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


List jobs by client​

GET
/api/nova/public/jobs/client/{companyId}

Returns all jobs linked to the client company given by the companyId path variable, for the tenant identified by the PUBLIC-role apiKey query parameter. The optional includeArchived flag (default false) also includes archived jobs in the results. Each job is returned as a NovaPublicJobResponse with the advert fields, recruiter contact details and a public apply URL. An invalid apiKey returns 401.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

companyId*

companyId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required
includeArchived

includeArchived

Type
boolean
Default
false

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"applyEmail": "string",
  
  
  
"applyUrl": "string",
  
  
  
"archived": true,
  
  
  
"bannerImage": {
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"url": "string"
  
  
  
},
  
  
  
"benefits": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"companyName": "string",
  
  
  
"cutOffDate": "dd/MM/yyyy",
  
  
  
"description": "string",
  
  
  
"employmentType": "string",
  
  
  
"estClosingDate": "dd/MM/yyyy",
  
  
  
"experience": "string",
  
  
  
"hot": true,
  
  
  
"id": "string",
  
  
  
"industries": [
  
  
  
  
{
  
  
  
  
  
"id": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"industry": "string",
  
  
  
"jobDetailImage": {
  
  
  
  
"id": "string",
  
  
  
  
"name": "string",
  
  
  
  
"url": "string"
  
  
  
},
  
  
  
"jobType": "string",
  
  
  
"keepAdvertWhenClosed": true,
  
  
  
"languages": [
  
  
  
  
{
  
  
  
  
  
"code": "string",
  
  
  
  
  
"level": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"location": {
  
  
  
  
"addressLabel": "string",
  
  
  
  
"addressLine": "string",
  
  
  
  
"cityName": "string",
  
  
  
  
"cityRegion": "string",
  
  
  
  
"country": "string",
  
  
  
  
"countryCode": "string",
  
  
  
  
"countryName": "string",
  
  
  
  
"latitude": 0,
  
  
  
  
"longitude": 0,
  
  
  
  
"postCode": "string",
  
  
  
  
"regionName": "string"
  
  
  
},
  
  
  
"openings": 0,
  
  
  
"ownerId": "string",
  
  
  
"ownerName": "string",
  
  
  
"packageOverview": "string",
  
  
  
"pay": {
  
  
  
  
"currency": {
  
  
  
  
  
"code": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
},
  
  
  
  
"label": "string",
  
  
  
  
"maxPay": 0,
  
  
  
  
"minPay": 0,
  
  
  
  
"range": true,
  
  
  
  
"tenure": {
  
  
  
  
  
"code": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
},
  
  
  
"postedOn": "dd/MM/yyyy",
  
  
  
"publishToWebsite": true,
  
  
  
"recruiter": {
  
  
  
  
"address": {
  
  
  
  
  
"addressLabel": "string",
  
  
  
  
  
"addressLine": "string",
  
  
  
  
  
"cityName": "string",
  
  
  
  
  
"cityRegion": "string",
  
  
  
  
  
"country": "string",
  
  
  
  
  
"countryCode": "string",
  
  
  
  
  
"countryName": "string",
  
  
  
  
  
"latitude": 0,
  
  
  
  
  
"longitude": 0,
  
  
  
  
  
"postCode": "string",
  
  
  
  
  
"regionName": "string"
  
  
  
  
},
  
  
  
  
"email": "string",
  
  
  
  
"fullName": "string",
  
  
  
  
"headline": "string",
  
  
  
  
"id": "string",
  
  
  
  
"initials": "string",
  
  
  
  
"languages": [
  
  
  
  
  
"string"
  
  
  
  
],
  
  
  
  
"linkedIn": "string",
  
  
  
  
"mobile": "string",
  
  
  
  
"profilePicUrl": "string",
  
  
  
  
"workPhone": "string"
  
  
  
},
  
  
  
"reference": "string",
  
  
  
"remoteWorking": true,
  
  
  
"sector": "string",
  
  
  
"sectors": [
  
  
  
  
{
  
  
  
  
  
"id": "string",
  
  
  
  
  
"name": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"shortDescription": "string",
  
  
  
"skills": [
  
  
  
  
"string"
  
  
  
],
  
  
  
"status": "string",
  
  
  
"tags": [
  
  
  
  
{
  
  
  
  
  
"key": "string",
  
  
  
  
  
"value": "string"
  
  
  
  
}
  
  
  
],
  
  
  
"tenantId": "string",
  
  
  
"title": "string",
  
  
  
"uniqueId": 0,
  
  
  
"webAdvert": {
  
  
  
  
"coreSkills": "string",
  
  
  
  
"keyLanguages": "string",
  
  
  
  
"mainResponsibilities": "string",
  
  
  
  
"recruitmentProcess": "string",
  
  
  
  
"whatWillYouLearn": "string",
  
  
  
  
"whatsOnOffer": "string"
  
  
  
}
  
  
}
  
],
  
"message": "string",
  
"metadata": {
  
},
  
"success": true,
  
"totalCount": 0,
  
"totalValue": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Count published jobs​

GET
/api/nova/public/jobs/count

Returns the total number of open jobs for the tenant identified by the PUBLIC-role apiKey query parameter. The response is a simple message object containing a success flag and the count. An invalid key returns 401 with success false and a count of 0.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"count": 0,
  
"message": "string",
  
"outcome": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


List industries with counts​

GET
/api/nova/public/jobs/industries

Returns the tenant's configured industries, each with the number of jobs currently assigned to that industry. Industries are read in their configured position order and returned as name/count pairs. Authenticated by a PUBLIC-role apiKey query parameter; an invalid key returns 401. Useful for building industry filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
[
  
{
  
  
"count": 0,
  
  
"name": "string",
  
  
"value": 0
  
}
]

Playground​

Authorization
Variables
Key
Value

Samples​


List languages with counts​

GET
/api/nova/public/jobs/languages

Returns aggregated job statistics grouped by language for the tenant identified by the PUBLIC-role apiKey query parameter. Each entry pairs a language with the number of jobs requiring it. An invalid apiKey returns 401. Useful for building language filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
}

Playground​

Authorization
Variables
Key
Value

Samples​


List locations with counts​

GET
/api/nova/public/jobs/locations

Returns aggregated job statistics grouped by location for the tenant identified by the PUBLIC-role apiKey query parameter. Each entry pairs a location with the number of jobs there. An invalid apiKey returns 401. Useful for building location filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
}

Playground​

Authorization
Variables
Key
Value

Samples​


List sectors with counts​

GET
/api/nova/public/jobs/sectors

Returns the tenant's configured sectors, each with the number of jobs currently assigned to that sector. Sectors are read in their configured position order and returned as name/count pairs. Authenticated by a PUBLIC-role apiKey query parameter; an invalid key returns 401. Useful for building sector filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
[
  
{
  
  
"count": 0,
  
  
"name": "string",
  
  
"value": 0
  
}
]

Playground​

Authorization
Variables
Key
Value

Samples​


List skills with counts​

GET
/api/nova/public/jobs/skills

Returns aggregated job statistics grouped by skill for the tenant identified by the PUBLIC-role apiKey query parameter. Each entry pairs a skill with the number of jobs requiring it. An invalid apiKey returns 401. Useful for building skill filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
}

Playground​

Authorization
Variables
Key
Value

Samples​


List job types with counts​

GET
/api/nova/public/jobs/types

Returns the tenant's configured employment types (e.g. permanent, contract), each with the number of jobs of that type. Types are read in their configured position order and returned as name/count pairs. Authenticated by a PUBLIC-role apiKey query parameter; an invalid key returns 401. Useful for building job type filter facets on a public job board.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
[
  
{
  
  
"count": 0,
  
  
"name": "string",
  
  
"value": 0
  
}
]

Playground​

Authorization
Variables
Key
Value

Samples​


Get a published job​

GET
/api/nova/public/jobs/{jobId}

Fetches a single job for the tenant identified by the PUBLIC-role apiKey query parameter. The jobId path variable accepts either the job's internal id or, when it starts with JB-, the job's reference (e.g. JB-123). Returns the job as a NovaPublicJobResponse with the advert fields, recruiter contact details and a public apply URL. Responds with 404 if no matching job exists and 401 if the apiKey is invalid.

Authorizations​

publicApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

jobId*

jobId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"applyEmail": "string",
  
"applyUrl": "string",
  
"archived": true,
  
"bannerImage": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"url": "string"
  
},
  
"benefits": [
  
  
"string"
  
],
  
"companyName": "string",
  
"cutOffDate": "dd/MM/yyyy",
  
"description": "string",
  
"employmentType": "string",
  
"estClosingDate": "dd/MM/yyyy",
  
"experience": "string",
  
"hot": true,
  
"id": "string",
  
"industries": [
  
  
{
  
  
  
"id": "string",
  
  
  
"name": "string"
  
  
}
  
],
  
"industry": "string",
  
"jobDetailImage": {
  
  
"id": "string",
  
  
"name": "string",
  
  
"url": "string"
  
},
  
"jobType": "string",
  
"keepAdvertWhenClosed": true,
  
"languages": [
  
  
{
  
  
  
"code": "string",
  
  
  
"level": "string",
  
  
  
"name": "string"
  
  
}
  
],
  
"location": {
  
  
"addressLabel": "string",
  
  
"addressLine": "string",
  
  
"cityName": "string",
  
  
"cityRegion": "string",
  
  
"country": "string",
  
  
"countryCode": "string",
  
  
"countryName": "string",
  
  
"latitude": 0,
  
  
"longitude": 0,
  
  
"postCode": "string",
  
  
"regionName": "string"
  
},
  
"openings": 0,
  
"ownerId": "string",
  
"ownerName": "string",
  
"packageOverview": "string",
  
"pay": {
  
  
"currency": {
  
  
  
"code": "string",
  
  
  
"name": "string"
  
  
},
  
  
"label": "string",
  
  
"maxPay": 0,
  
  
"minPay": 0,
  
  
"range": true,
  
  
"tenure": {
  
  
  
"code": "string",
  
  
  
"name": "string"
  
  
}
  
},
  
"postedOn": "dd/MM/yyyy",
  
"publishToWebsite": true,
  
"recruiter": {
  
  
"address": {
  
  
  
"addressLabel": "string",
  
  
  
"addressLine": "string",
  
  
  
"cityName": "string",
  
  
  
"cityRegion": "string",
  
  
  
"country": "string",
  
  
  
"countryCode": "string",
  
  
  
"countryName": "string",
  
  
  
"latitude": 0,
  
  
  
"longitude": 0,
  
  
  
"postCode": "string",
  
  
  
"regionName": "string"
  
  
},
  
  
"email": "string",
  
  
"fullName": "string",
  
  
"headline": "string",
  
  
"id": "string",
  
  
"initials": "string",
  
  
"languages": [
  
  
  
"string"
  
  
],
  
  
"linkedIn": "string",
  
  
"mobile": "string",
  
  
"profilePicUrl": "string",
  
  
"workPhone": "string"
  
},
  
"reference": "string",
  
"remoteWorking": true,
  
"sector": "string",
  
"sectors": [
  
  
{
  
  
  
"id": "string",
  
  
  
"name": "string"
  
  
}
  
],
  
"shortDescription": "string",
  
"skills": [
  
  
"string"
  
],
  
"status": "string",
  
"tags": [
  
  
{
  
  
  
"key": "string",
  
  
  
"value": "string"
  
  
}
  
],
  
"tenantId": "string",
  
"title": "string",
  
"uniqueId": 0,
  
"webAdvert": {
  
  
"coreSkills": "string",
  
  
"keyLanguages": "string",
  
  
"mainResponsibilities": "string",
  
  
"recruitmentProcess": "string",
  
  
"whatWillYouLearn": "string",
  
  
"whatsOnOffer": "string"
  
}
}

Playground​

Authorization
Variables
Key
Value

Samples​


Records​


Get record by ID​

GET
/api/nova/records/{recordId}

Looks up any system record (candidate, contact, company, job and other record types) by the recordId path parameter and returns a lightweight summary regardless of type. The response contains the record's id, type, label (display name), email, mobile and reference. Useful for resolving an unknown record id to its type before calling the type-specific endpoints. Returns 404 if the record is not found, and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

recordId*

recordId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


List open tasks​

GET
/api/nova/tasks/list

Returns the authenticated user's open (not yet completed) tasks. Accepts page and size query parameters (size defaults to 20 and is capped at 100), which are echoed back in the pagination metadata. Each task includes id, title, note, type, dueDate, completed, createdOn, the first assignee (assignedToId, assignedToName) and the first linked record (linkedToId, linkedToName) where present. Returns 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required
page

page

Type
integer
Format
"int32"
Default
0
size

size

Type
integer
Format
"int32"
Default
20

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"additionalProperties": {
  
  
  
}
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get task by ID​

GET
/api/nova/tasks/{taskId}

Fetches a single task by the taskId path parameter, scoped to the authenticated API user's account. The response includes id, title, note, type, dueDate, completed, createdOn, the first assignee (assignedToId, assignedToName) and the first linked record (linkedToId, linkedToName) where present. Returns 404 if the task is not found, and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

taskId*

taskId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


List users​

GET
/api/nova/users/list

Returns all users on the account that are visible to the authenticated API user, in a single unpaginated list. Each item contains the user's id, firstName, lastName, email, mobile, role, jobTitle and active flag. The only required parameter is the apiKey. Returns 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": [
  
  
{
  
  
  
"active": true,
  
  
  
"email": "string",
  
  
  
"firstName": "string",
  
  
  
"id": "string",
  
  
  
"jobTitle": "string",
  
  
  
"lastName": "string",
  
  
  
"mobile": "string",
  
  
  
"role": "string"
  
  
}
  
],
  
"error": "string",
  
"message": "string",
  
"page": 0,
  
"requestId": "string",
  
"size": 0,
  
"success": true,
  
"total": 0
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get current user​

GET
/api/nova/users/me

Resolves the supplied API key and returns the profile of the user the key belongs to. The response contains the user's id, firstName, lastName, email, mobile, role, jobTitle and active flag. Use this to identify the authenticated user before making other calls. Returns 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"active": true,
  
  
"email": "string",
  
  
"firstName": "string",
  
  
"id": "string",
  
  
"jobTitle": "string",
  
  
"lastName": "string",
  
  
"mobile": "string",
  
  
"role": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​


Get user by ID​

GET
/api/nova/users/{userId}

Fetches a single user by the userId path parameter, scoped to the authenticated API user's account. The response contains the user's id, firstName, lastName, email, mobile, role, jobTitle and active flag. Returns 404 if no matching user is found, and 401 if the API key is invalid.

Authorizations​

privateApiKey
Type
API Key (query: apiKey)

Parameters​

Path Parameters

userId*

userId

Type
string
Required

Query Parameters

apiKey*

apiKey

Type
string
Required

Responses​

OK

application/json
JSON
{
  
"data": {
  
  
"active": true,
  
  
"email": "string",
  
  
"firstName": "string",
  
  
"id": "string",
  
  
"jobTitle": "string",
  
  
"lastName": "string",
  
  
"mobile": "string",
  
  
"role": "string"
  
},
  
"error": "string",
  
"message": "string",
  
"requestId": "string",
  
"success": true
}

Playground​

Authorization
Variables
Key
Value

Samples​