NAV

Introduction

The TalentNest API lets you read and update your client's TalentNest data without using the website.

Base URL: https://{subdomain}.talentnest.com/api/v1

Replace {subdomain} with your client's TalentNest subdomain. All requests must use HTTPS. HTTP is ignored. Every request must be authenticated.

Send and receive JSON. You may append .json to a path (for example /api/v1/employees.json); it is optional. When you send a JSON body, set Content-Type: application/json.

Use the HTTP verb documented for each endpoint.

Authentication

API key as the Basic Auth username (note the trailing colon):

# Trailing colon after the API key; password is empty
curl https://subdomain.talentnest.com/api/v1/employees -u TALENTNEST_API_KEY:

Or an Authorization header. Base64-encode YOUR_API_KEY: (key plus colon):

curl https://subdomain.talentnest.com/api/v1/employees -H 'Authorization: Basic VEFMRU5UTkVTVF9BUElfS0VZOg=='

Replace TALENTNEST_API_KEY with your API key and subdomain with your TalentNest subdomain.

Authentication uses HTTP Basic Auth. The username is your API key. Leave the password empty.

You can instead send:

Authorization: Basic <base64("TALENTNEST_API_KEY:")>

Pagination

Example pagination response headers

HTTP/1.1 200 OK
Link: <https://subdomain.talentnest.com/api/v1/applications?page=1>; rel="first",
  <https://subdomain.talentnest.com/api/v1/applications?page=2>; rel="prev",
  <https://subdomain.talentnest.com/api/v1/applications?page=17>; rel="last",
  <https://subdomain.talentnest.com/api/v1/applications?page=4>; rel="next"
X-Page: 3
X-Per-Page: 50
X-Total: 814

List endpoints are paginated. Responses include a Link header (RFC 5988):

Rel Description
first First page
next Next page
prev Previous page
last Last page

Also:

Header Description
X-Page Current page
X-Per-Page Page size. Default 50.
X-Total Total number of matching records

Query string parameters

Parameter Description
per_page optional Page size. Default 50. Maximum 100, except GET /jobs which allows 300.
page optional Page number.

Endpoints

All requests go to https://{subdomain}.talentnest.com.

A malformed path or missing resource returns an InvalidParameter or ResourceNotFound error. Path placeholders look like {id}.

Jobs

GET: All Jobs

curl "https://subdomain.talentnest.com/api/v1/jobs"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "jobs": [
    {
      "id": 22625,
      "title": "F&I Manager – Automotive",
      "job_status": "Open",
      "opens_at": "2026-03-16",
      "closes_at": null,
      "status_changed_at": "2026-03-16T14:31:30Z",
      "last_application_at": "2026-09-01T13:38:19Z",
      "created_at": "2026-03-16T14:31:18Z",
      "updated_at": "2026-09-08T13:55:24Z",
      "job_url": "https://subdomain.talentnest.com/en/posting/18502/location/22625",
      "apply_url": "https://subdomain.talentnest.com/en/posting/18502/apply/22625",
      "business_unit": {
        "id": 7366,
        "name": "Austin",
        "abbreviation": "ATX",
        "location": {
          "country": "United States",
          "address": null,
          "postal": null,
          "state": "Texas",
          "city": "Austin"
        }
      },
      "recruiter": {
        "email": "john.smith@talentnest.com",
        "first_name": "John",
        "last_name": "Smith"
      }
    },
    {
      "id": 23032,
      "title": "Financial Services",
      "job_status": "Closed",
      "opens_at": "2026-01-13",
      "closes_at": null,
      "status_changed_at": "2026-02-03T13:58:05Z",
      "last_application_at": null,
      "created_at": "2026-01-13T19:39:14Z",
      "updated_at": "2026-02-03T13:58:05Z",
      "job_url": "https://subdomain.talentnest.com/en/posting/18801/location/23032",
      "apply_url": "https://subdomain.talentnest.com/en/posting/18801/apply/23032",
      "business_unit": {
        "id": 2009,
        "name": "Toronto",
        "abbreviation": "YYZ",
        "location": {
          "country": "Canada",
          "address": "3300 Bloor Street West",
          "postal": "M9B 2C5",
          "state": "Ontario",
          "city": "Toronto"
        }
      },
      "recruiter": {
        "email": "jane.doe@talentnest.com",
        "first_name": "Jane",
        "last_name": "Doe"
      }
    }
  ]
}

Returns jobs for the authenticated client.

The id in this API is the job (location) id. Career-site job_url and apply_url also include a posting id in the path (/en/posting/{posting_id}/location/{id}). Use the API id with /api/v1/jobs/{id}.

external_id is included when the client stores an external posting id. List responses omit description and counts; GET /jobs/{id} returns the full job.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/jobs

Query string parameters

Parameter Description
per_page Page size. Default 50. Maximum 300 on this endpoint.
page The specific page requested.
job_status Filters based on job status. Allowed values are open, paused, closed.
business_unit_id Return jobs belonging to this business unit or any of its sub-units. To exclude sub-unit jobs, add the optional parameter sub_units=false.
created_after Return only jobs that were created after this timestamp. Timestamp must be ISO 8601 format.
updated_after Return only jobs that were updated after this timestamp. Timestamp must be ISO 8601 format.

GET: Specific Job

curl "https://subdomain.talentnest.com/api/v1/jobs/{id}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "job": {
    "id": 23819,
    "title": "Program Manager",
    "job_status": "Open",
    "opens_at": "2026-02-03",
    "closes_at": "2026-02-10",
    "status_changed_at": "2026-02-03T21:46:57Z",
    "last_application_at": null,
    "created_at": "2026-02-03T21:46:16Z",
    "updated_at": "2026-02-03T21:46:16Z",
    "job_url": "https://subdomain.talentnest.com/en/posting/19252/location/23819",
    "apply_url": "https://subdomain.talentnest.com/en/posting/19252/apply/23819",
    "business_unit": {
      "id": 2446,
      "name": "Edmonton Branch",
      "abbreviation": "EDM",
      "location": {
        "country": "Canada",
        "address": null,
        "postal": null,
        "state": "Alberta",
        "city": "Edmonton"
      }
    },
    "recruiter": {
      "email": "john.smith@talentnest.com",
      "first_name": "John",
      "last_name": "Smith"
    },
    "description": "Detailed job description",
    "employment_type": null,
    "posting_type": "External",
    "job_applications_count": 30,
    "completed_applications_count": 25,
    "unreviewed_applications_count": 5,
    "hires_count": 0,
    "vacancies_count": 0,
    "assessment": null
  }
}

HTTP Request

GET https://subdomain.talentnest.com/api/v1/jobs/{id}

URL Parameters

Parameter Description
id The ID of the job to retrieve

GET: Job's Employment Process

curl "https://subdomain.talentnest.com/api/v1/jobs/{id}/employment_process"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "employment_process": {
    "steps": [
      {
        "id": 1933,
        "name": "Review Candidate",
        "abbreviation": "RC",
        "step_type": "New Application",
        "sequence": 1,
        "optional": false,
        "rated": false
      },
      {
        "id": 2041,
        "name": "Phone Interview",
        "abbreviation": "PI",
        "step_type": "Interview",
        "sequence": 2,
        "optional": true,
        "rated": true
      },
      {
        "id": 2042,
        "name": "Management Pro",
        "abbreviation": "MPP3",
        "step_type": "Assessment",
        "sequence": 3,
        "optional": true,
        "rated": false
      },
      {
        "id": 2044,
        "name": "Interview",
        "abbreviation": "Int",
        "step_type": "Interview",
        "sequence": 4,
        "optional": true,
        "rated": true
      },
      {
        "id": 1934,
        "name": "Employment Offer",
        "abbreviation": "EO",
        "step_type": "Employment Offer",
        "sequence": 5,
        "optional": false,
        "rated": false
      }
    ]
  }
}

HTTP Request

GET https://subdomain.talentnest.com/api/v1/jobs/{id}/employment_process

URL Parameters

Parameter Description
id The ID of the job

Applications

GET: All Job Applications

curl "https://subdomain.talentnest.com/api/v1/applications"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "applications": [
    {
      "id": 1765253,
      "candidate_id": 1148,
      "job_id": 25668,
      "job_title": "Parts Manager - Automotive",
      "first_name": "Jake",
      "last_name": "Joseph",
      "email": "jj@talentnest.com",
      "application_step": "Review Candidate",
      "application_status": "Deselected",
      "application_url": "https://subdomain.talentnest.com/en/job/25668/candidate/1148",
      "status_changed_at": "2026-11-29T19:41:33Z",
      "completed_at": "2026-10-28T17:47:15Z",
      "created_at": "2026-09-23T20:31:53Z",
      "updated_at": "2026-12-01T07:00:10Z"
    },
    {
      "id": 1769005,
      "candidate_id": 876140,
      "job_id": 29696,
      "job_title": "General Agent",
      "first_name": "Lori",
      "last_name": "Ham",
      "email": "lori.ham@talentnest.com",
      "application_step": "Review Candidate",
      "application_status": "Deselected",
      "application_url": "https://subdomain.talentnest.com/en/job/29696/candidate/876140",
      "status_changed_at": "2026-11-11T15:16:25Z",
      "completed_at": "2026-09-26T17:20:27Z",
      "created_at": "2026-09-26T17:20:25Z",
      "updated_at": "2026-11-11T15:16:25Z"
    }
  ]
}

Returns job applications for the authenticated client.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/applications

Query string parameters

Parameter Description
per_page The requested number of results per page. Default is 50 and the allowed Maximum is 100.
page The specific page requested.
job_id Return only applications belonging to this job.
candidate_id Return only applications belonging to this candidate.
completed_after Return only applications that were completed after this timestamp. Timestamp must be ISO 8601 format.
updated_after Return only applications that were updated after this timestamp. Timestamp must be ISO 8601 format.
application_status Return only applications with this status. Allowed values are active, deselected, hired.
status_changed_after Return only applications whose status was changed after this timestamp. Timestamp must be ISO 8601 format.

GET: Specific Application

curl "https://subdomain.talentnest.com/api/v1/applications/{id}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{ 
  "application": {
    "id": 1765253,
    "candidate_id": 1148,
    "job_id": 25668,
    "job_title": "Parts Manager - Automotive",
    "first_name": "Jake",
    "last_name": "Joseph",
    "email": "jj@talentnest.com",
    "application_step": "Management Pro",
    "application_status": "Active",
    "application_url": "https://subdomain.talentnest.com/en/job/25668/candidate/1148",
    "status_changed_at": "2026-10-28T17:47:15Z",
    "completed_at": "2026-10-28T17:47:15Z",
    "created_at": "2026-09-23T20:31:53Z",
    "updated_at": "2026-12-01T07:00:10Z",
    "phone": "4167460444",
    "deselect_reason": null,
    "source": "Company Website",
    "reviewed": true,
    "passed_prescreen": true,
    "golden_eagle": false,
    "employee": false,
    "prescreen_answers": [
      {
        "question": "Are you legally eligible to work in the United States?",
        "answer": "Yes",
        "passed": true
      },
      {
        "question": "Do you have a good driving record and a valid driver’s license?",
        "answer": "Yes",
        "passed": true
      },
      {
        "question": "Would you be able to pass a drug screen? ",
        "answer": "Yes",
        "passed": true
      }
    ],
    "demographic_answers": [
      {
        "question": "If you were referred to our company by someone, who referred you:",
        "answer": "Friend",
        "type": "single"
      },
      {
        "question": "If you were referred by an employee of our company, please list the name here:",
        "answer": "",
        "type": "text"
      },
      {
        "question": "What days of the week are you available to work?",
        "answer": [
          "Tuesday",
          "Friday"
        ],
        "type": "multi"
      },
      {
        "question": "Are you available to work weekends?",
        "answer": "Yes",
        "type": "single"
      },
      {
        "question": "What date are you available to start work?",
        "answer": "",
        "type": "text"
      },
      {
        "question": "Are you available to travel on company business?  ",
        "answer": "Yes",
        "type": "single"
      },
      {
      "question": "What is the highest level of education you have completed?",
      "answer": "Trade School",
      "type": "single"
      },
      {
      "question": "List your computer skills.",
      "answer": "",
      "type": "text"
      }
    ],
    "resume_url": "https://subdomain.talentnest.com/en/documents/79944/download?hash=95ab65073cd38427eeb69e827c4806d32f716c95",
    "cover_url": null,
    "candidate_location": {
      "country": "Canada",
      "address": "3300 Bloor Street West",
      "postal": "M8X 2X3",
      "state": "Ontario",
      "city": "Toronto"
    },
    "future_consideration": false,
    "candidate_tags": [
      "automotive",
      "technician"
    ],
    "current_step":  {
      "id": 5,
      "sequence": 2,
      "step_name": "Management Pro",
      "status": "Completed",
      "rating": null,
      "activated_at": "2026-05-27T15:57:36Z",
      "completed_at": "2026-10-21T21:10:33Z",
      "invited_at": null,
      "deselected_at": null
    },
    "employment_process_history": [
      {
        "id": 13,
        "sequence": 1,
        "step_name": "Review Candidate",
        "status": "Completed",
        "rating": "4.0",
        "activated_at": "2026-05-27T15:54:31Z",
        "completed_at": "2026-05-27T15:57:32Z",
        "invited_at": null,
        "deselected_at": null
      },
      {
        "id": 5,
        "sequence": 2,
        "step_name": "Management Pro",
        "status": "Completed",
        "rating": null,
        "activated_at": "2026-05-27T15:57:36Z",
        "completed_at": "2026-10-21T21:10:33Z",
        "invited_at": null,
        "deselected_at": null
      },
      {
        "id": 8,
        "sequence": 3,
        "step_name": "Interview",
        "status": "Inactive",
        "rating": null,
        "activated_at": null,
        "completed_at": null,
        "invited_at": null,
        "deselected_at": null
      },
      {
        "id": 7,
        "sequence": 4,
        "step_name": "Employment Offer",
        "status": "Inactive",
        "rating": null,
        "activated_at": null,
        "completed_at": null,
        "invited_at": null,
        "deselected_at": null
      }
    ],
    "assessments": [
      {
        "id": 617257,
        "name": "ContactCenterScreen 2.0",
        "url": "https://assessment-report-url...",
        "scores": [
          {
            "type": "sales",
            "score": "2.8",
            "recommendation": "caution"
          },
          {
            "type": "service",
            "score": "3.1",
            "recommendation": "proceed"
          }
        ] 
      },
      {
        "id": 660573,
        "name": "POP Screen",
        "url": "https://assessment-report-url...",
        "scores": [
          {
            "type": "overall",
            "score": "2.38",
            "recommendation": "redirect"
          }
        ] 
      }
    ]
  }
}

Retrieve a specific application by its id.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/applications/{id}

URL Parameters

Parameter Description
id The ID of the application to retrieve

GET: An Application's Notes

curl "https://subdomain.talentnest.com/api/v1/applications/{id}/notes"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
    "notes": [
        {
            "id": 34118320,
            "title": "New application submitted",
            "body": "New application submitted",
            "created_at": "2026-01-31T17:41:59Z",
            "updated_at": "2026-01-31T17:41:59Z"
        },
        {
            "id": 34118408,
            "title": "Test",
            "body": "Had a great interview. ",
            "created_at": "2026-01-31T17:48:09Z",
            "updated_at": "2026-01-31T17:48:09Z"
        },
        {
            "id": 34147229,
            "title": "Review Candidate completed",
            "body": "Review Candidate completed",
            "created_at": "2026-02-02T20:19:05Z",
            "updated_at": "2026-02-02T20:19:05Z"
        },
        {
            "id": 34147230,
            "title": "Phone Interview started",
            "body": "Phone Interview started",
            "created_at": "2026-02-02T20:19:19Z",
            "updated_at": "2026-02-02T20:19:19Z"
        },
        {
            "id": 34147299,
            "title": "Phone Interview completed",
            "body": "Phone Interview completed",
            "created_at": "2026-02-02T20:19:31Z",
            "updated_at": "2026-02-02T20:19:31Z"
        },
        {
            "id": 34147300,
            "title": "Interview started",
            "body": "Interview started",
            "created_at": "2026-02-02T20:19:34Z",
            "updated_at": "2026-02-02T20:19:34Z"
        },
        {
            "id": 34147302,
            "title": "Interview completed",
            "body": "Interview completed",
            "created_at": "2026-02-02T20:19:42Z",
            "updated_at": "2026-02-02T20:19:42Z"
        },
        {
            "id": 34431535,
            "title": "Employment Offer started",
            "body": "Employment Offer started",
            "created_at": "2026-02-14T20:25:13Z",
            "updated_at": "2026-02-14T20:25:13Z"
        },
        {
            "id": 34431537,
            "title": "Employment Offer completed",
            "body": "Employment Offer completed",
            "created_at": "2026-02-14T20:25:16Z",
            "updated_at": "2026-02-14T20:25:16Z"
        },
        {
            "id": 34431538,
            "title": "This candidate has been hired",
            "body": "This candidate has been hired",
            "created_at": "2026-02-14T20:25:16Z",
            "updated_at": "2026-02-14T20:25:16Z"
        },
        {
            "id": 34431557,
            "title": "Onboarding process started",
            "body": "Onboarding process started",
            "created_at": "2026-02-14T20:25:44Z",
            "updated_at": "2026-02-14T20:25:44Z"
        }
    ]
}

Returns notes for an application.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/applications/{id}/notes

URL Parameters

Parameter Description
id The ID of the application to retrieve notes for

Query string parameters

Parameter Description
note_type Optional. Return only notes of this type. Omit to return all notes.

POST: Add a note

curl -X POST "https://subdomain.talentnest.com/api/v1/applications/{id}/notes"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

JSON body:

{
  "note": "Spoke with the hiring manager.",
  "note_type": "chat_transcript"
}

Adds a note on the application. note_type is optional; the only type accepted on create is chat_transcript.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/applications/{id}/notes

URL Parameters

Parameter Description
id The ID of the application

JSON Body Parameters

Parameter Required Type Description
note Yes String Note text. HTML is sanitized. For chat_transcript, a stricter sanitizer is used.
note_type No String Must be chat_transcript if set.
dry_run No Boolean If true, validate without saving. Default: false.

POST: Advance Application

curl -X POST "https://subdomain.talentnest.com/api/v1/applications/{id}/advance"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

The above command takes a JSON request, structured like this:

{
  "from_step_id": 2041,
  "rating": 5,
  "note": "Great first impression!"
}

The above returns JSON, structured like this:

{
  "application": {
    "id": 3060537,
    "current_step": {
      "id": 2042,
      "sequence": 3,
      "step_name": "POP7",
      "status": "Active",
      "rating": null,
      "activated_at": "2026-01-07T17:04:26Z",
      "completed_at": null,
      "invited_at": null,
      "deselected_at": null
    }
  }
}

Advances this application from the current_step to the next step in the employment process. Only Active applications can be advanced.

The current_step will be Completed and the next step will be Activated. This newly activated step becomes the new current_step. The response contains the new current_step's information.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/applications/{id}/advance

URL Parameters

Parameter Description
id The ID of the application to advance

JSON Body Parameters

Parameter Required Type Description
from_step_id Yes Integer The ID of the application's current_step.
rating No Integer Rating the candidate received at current_step. Range 1 to 5. Applies only to rated steps.
note No String Optional note to store when completing the current_step.
dry_run No Boolean If true, validate without committing. Default: false.

POST: Move Application

curl -X POST "https://subdomain.talentnest.com/api/v1/applications/{id}/move"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

The above command takes a JSON request, structured like this:

{
  "from_step_id": 2041,
  "to_step_id": 2044,
  "rating": 5,
  "note": "Completing this step and jumping few steps forward!"
}

The above returns JSON, structured like this:

{
  "application": {
    "id": 3060537,
    "current_step": {
      "id": 2044,
      "sequence": 4,
      "step_name": "Interview",
      "status": "Active",
      "rating": null,
      "activated_at": "2026-03-12T17:04:26Z",
      "completed_at": null,
      "invited_at": null,
      "deselected_at": null
    }
  }
}

Moves this application to an arbitrary step ahead in the employment process. The old current_step will be Completed and the new current_step will be Activated. The response contains the new current_step's information.

Only Active applications can be moved.

The move is not allowed if there are any required steps in-between the two steps.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/applications/{id}/move

URL Parameters

Parameter Description
id The ID of the application to move

JSON Body Parameters

Parameter Required Type Description
from_step_id Yes Integer The ID of the application's current_step.
to_step_id Yes Integer The ID of the step the application should be moved to.
rating No Integer Rating the candidate received at current_step. Range 1 to 5. Applies only to rated steps.
note No String Optional note to store when completing the current_step.
dry_run No Boolean If true, validate without committing. Default: false.

POST: Invite to assessment

curl -X POST "https://subdomain.talentnest.com/api/v1/applications/{id}/invite_to_assessment"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

Optional JSON body:

{
  "note": "Sending the assessment now.",
  "dry_run": false
}

The above returns JSON structured like this:

{
  "to": "jj@talentnest.com",
  "subject": "Please complete your assessment",
  "body": "...",
  "email_template_id": 12,
  "step_id": 2042,
  "assessment_url": "https://..."
}

Invites the candidate to the first assessment step on this application. The application must be Active. The candidate must have an email. The job's employment process must include an assessment step that is not already invited or completed. TalentNest picks the assessment email template from the job's business unit (then ancestors).

If the assessment step is not yet Active, it is activated first. dry_run returns a fake assessment_url and does not send email.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/applications/{id}/invite_to_assessment

URL Parameters

Parameter Description
id The ID of the application

JSON Body Parameters

Parameter Required Type Description
note No String Note stored when inviting.
dry_run No Boolean If true, do not send email or persist. Default: false.

POST: Deselect Application

curl -X POST "https://subdomain.talentnest.com/api/v1/applications/{id}/deselect"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

The above command takes a JSON request, structured like this:

{
  "send_deselect_email": true,
  "deselect_reason_id": 1001,
  "note": "Reasons for deselection"
}

The above returns JSON, structured like this:

{
  "application": {
    "id": 3060537,
    "application_status": "Deselected"
  }
}

Deselects the application at the current step. Only Active applications can be deselected.

The current_step will be Deselected and the application will also be marked as Deselected. If optional parameters are provided, TalentNest can process a deselection reason and custom note.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/applications/{id}/deselect

URL Parameters

Parameter Description
id The ID of the application to deselect

JSON Body Parameters

Parameter Required Type Description
send_deselect_email No Boolean If true, send the system deselection email to the candidate. Default: false.
deselect_reason_id No Integer Optional reason ID for why the candidate was deselected.
note No String Optional note to store why the candidate was deselected.

GET: Specific Step for Application

curl "https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "step": {
    "id": 2042,
    "application_id": 3060537,
    "sequence": 3,
    "step_name": "POP7",
    "status": "Active",
    "rating": null,
    "activated_at": "2026-01-07T17:04:26Z",
    "completed_at": null,
    "invited_at": null,
    "deselected_at": null
  }
}

Retrieve a specific step of an application.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}

URL Parameters

Parameter Description
id The ID of the application
step_id The ID of the step to retrieve

PUT: Activate Step for Application

curl -X PUT "https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/activate"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "step": {
    "id": 2042,
    "application_id": 3060537,
    "sequence": 3,
    "step_name": "Phone Interview",
    "status": "Active",
    "rating": null,
    "activated_at": "2026-01-07T17:04:26Z",
    "completed_at": null,
    "invited_at": null,
    "deselected_at": null
  }
}

Activate a specific step of an application. Preceding required steps must already be completed.

HTTP Request

PUT https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/activate

URL Parameters

Parameter Description
id The ID of the application
step_id Employment process step ID (same ids as GET /jobs/{id}/employment_process)

JSON Body Parameters

Parameter Required Type Description
dry_run No Boolean If true, validate without committing. Default: false.

PUT: Invite to an assessment step

curl -X PUT "https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/invite"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

JSON body:

{
  "email_template_id": 12
}

Sends an assessment invite for this step. The step must be an assessment step. The candidate must have an email. email_template_id is required.

Prefer this when you already know the step. Use POST /applications/{id}/invite_to_assessment to invite the first assessment step and let TalentNest choose the template.

HTTP Request

PUT https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/invite

URL Parameters

Parameter Description
id The ID of the application
step_id Employment process step ID

JSON Body Parameters

Parameter Required Type Description
email_template_id Yes Integer Email template to send.
dry_run No Boolean If true, do not send email or persist. Default: false.

PUT: Complete Step for Application

curl -X PUT "https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/complete"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "step": {
    "id": 2042,
    "application_id": 3060537,
    "sequence": 3,
    "step_name": "Phone Interview",
    "status": "Completed",
    "rating": null,
    "activated_at": "2026-01-07T17:04:26Z",
    "completed_at": "2026-01-08T13:07:36Z",
    "invited_at": null,
    "deselected_at": null
  }
}

Complete a specific step of an application.

HTTP Request

PUT https://subdomain.talentnest.com/api/v1/applications/{id}/step/{step_id}/complete

URL Parameters

Parameter Description
id The ID of the application
step_id Employment process step ID

JSON Body Parameters

Parameter Required Type Description
rating No Integer Rating 1 to 5. Only for rated steps.
note No String Note stored when completing the step.
dry_run No Boolean If true, validate without committing. Default: false.

Business Units

Business Units form the hierarchy of your company within TalentNest.

Attribute Description
parent_id The ID that this business unit belongs to.
major_unit_id if available If major divisions are setup, the ID of the major division that this business unit belongs to.

GET: All Business Units

curl "https://subdomain.talentnest.com/api/v1/business_units"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "business_units": [
    {
      "id": 2,
      "name": "XYZ Corp",
      "description": "XYZ Corp is a world leader in widgets.",
      "parent_id": null,
      "major_unit_id": null,
      "location": {
        "country": "Canada",
        "address": "3300 Bloor Street West",
        "postal": "M8X 2X3",
        "state": "Ontario",
        "city": "Toronto"
      }
    },
    {
      "id": 4,
      "name": "Finance",
      "description": null,
      "parent_id": 2,
      "major_unit_id": null,
      "location": {
        "country": "Canada",
        "address": "3300 Bloor Street West",
        "postal": "M8X 2X3",
        "state": "Ontario",
        "city": "Toronto"
      }
    },
    {
      "id": 5,
      "name": "Accounting",
      "description": null,
      "parent_id": 4,
      "major_unit_id": 4,
      "location": {
        "country": "Canada",
        "address": null,
        "postal": null,
        "state": null,
        "city": null
      }
    }
  ]
}

HTTP Request

GET https://subdomain.talentnest.com/api/v1/business_units

GET: Specific Business Unit

curl "https://subdomain.talentnest.com/api/v1/business_units/{id}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{ 
  "business_unit": {
    "id": 2,
    "name": "XYZ Corp",
    "description": "XYZ Corp is a world leader in widgets.",
    "parent_id": null,
    "major_unit_id": null,
    "location": {
      "country": "Canada",
      "address": "3300 Bloor Street West",
      "postal": "M8X 2X3",
      "state": "Ontario",
      "city": "Toronto"
    }
  }
}

HTTP Request

GET https://subdomain.talentnest.com/api/v1/business_units/{id}

URL Parameters

Parameter Description
id The ID of the business unit to retrieve

Candidates

GET: All Candidates

curl "https://subdomain.talentnest.com/api/v1/candidates"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{ 
  "candidates": [
    {
      "id": 11,
      "first_name": "Sakul",
      "middle_initial": "N",
      "last_name": "Noteab",
      "email": "snn@talentnest.com",
      "primary_phone": "4161234444",
      "created_at": "2026-05-11T20:08:44Z",
      "updated_at": "2026-09-01T20:31:30Z"
    },
    {
      "id": 12,
      "first_name": "Duncan",
      "middle_initial": null,
      "last_name": "Reith",
      "email": "dunr@talentnest.com",
      "primary_phone": "14164444444",
      "created_at": "2026-05-26T19:39:48Z",
      "updated_at": "2026-06-25T18:27:08Z"
    }
  ]
}

Returns candidates for the authenticated client.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/candidates

Query string parameters

Parameter Description
per_page The requested number of results per page. Default is 50 and the allowed Maximum is 100.
page The specific page requested.
created_after Return only candidates whose record was created after this timestamp. Timestamp must be ISO 8601 format.
updated_after Return only candidates that were updated after this timestamp. Timestamp must be ISO 8601 format.

GET: Specific Candidate

curl "https://subdomain.talentnest.com/api/v1/candidates/{id}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{ 
  "candidate": {
    "id": 12,
    "first_name": "Duncan",
    "middle_initial": null,
    "last_name": "Reith",
    "email": "dunr@talentnest.com",
    "primary_phone": "14164444444",
    "created_at": "2026-05-26T19:39:48Z",
    "updated_at": "2026-06-25T18:27:08Z",
    "location": {
      "country": "Canada",
      "address": "155 Rexdale Boulevard",
      "postal": "M9W 5Z8",
      "state": "Ontario",
      "city": "Toronto"
    },
    "resume_url": "https://subdomain.talentnest.com/resume...",
    "num_of_applications": 3
  }
}

Retrieve a specific candidate by its id.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/candidates/{id}

URL Parameters

Parameter Description
id The ID of the candidate to retrieve

POST: Email Candidate

curl -X POST "https://subdomain.talentnest.com/api/v1/candidates/{id}/email"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

The above command takes a JSON request, structured like this:

{
  "subject": "Test subject",
  "body":"Test body <br> <a href='https://talentnest.com'>https://talentnest.com</a>"
}

The above command returns JSON structured like this:

{
   "from":"notifications@talentnest.com",
   "to":"<candidate-email>",
   "subject":"<sanitized-subject>",
   "body":"<sanitized-body>"
}

Sends an email, using the client's brand, to the candidate.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/candidates/{id}/email

URL Parameters

Parameter Description
id The ID of the candidate to email

JSON Body Parameters

Parameter Required Type Description
subject Yes Text Subject line for email.
body Yes Text Body of email. Some HTML is allowed, no javascript.
job_id No Integer Include the ID of the job the candidate applied for if the email is related to their application.
dry_run No Boolean If true, validate the request without sending. Default: false.

POST: Send SMS to Candidate

curl -X POST "https://subdomain.talentnest.com/api/v1/candidates/{id}/sms"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

The above command takes a JSON request, structured like this:

{ "message": "Test message" }

The above command returns JSON structured like this:

{
   "message":"Test message",
   "to":"<candidate-phone-number>"
}

Sends an SMS to the candidate's primary phone number.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/candidates/{id}/sms

URL Parameters

Parameter Description
id The ID of the candidate to send SMS to

JSON Body Parameters

Parameter Required Type Description
message Yes Text UTF-8 encoded text message to send. Emojis are supported, no HTML.
job_id No Integer Include the ID of the job the candidate applied for if the SMS is related to their application.
dry_run No Boolean If true, validate the request without sending. Default: false.

Employees

GET: All Employees

curl "https://subdomain.talentnest.com/api/v1/employees"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

 {
   "employees": [
     {
       "id": 122345,
       "employee_number": null,
       "business_unit_id": 56,
       "manager_id": null,
       "hired_on": "2026-05-14",
       "started_on": "2026-05-14",
       "verified_on": "2026-05-14",
       "termination_date": "2026-07-17",
       "user": {
         "first_name": "Nadia",
         "middle_initial": "J",
         "last_name": "Smith",
         "email": "nadiasmith@talentnest.com",
         "primary_phone": "14167460444",
         "location": {
           "country": "Canada",
           "address": " 3300 Bloor Street West",
           "postal": "M8X 2X2",
           "state": "Ontario",
           "city": "Toronto"
         }
       },
       "current_position": null
     },
     {
       "id": 122354,
       "employee_number": null,
       "business_unit_id": 871,
       "manager_id": null,
       "hired_on": "2026-07-08",
       "started_on": "2026-07-08",
       "verified_on": "2026-07-08",
       "termination_date": "2026-07-16",
       "user": {
         "first_name": "Vanessa",
         "middle_initial": null,
         "last_name": "Squid",
         "email": "vsquid@talentnest.com",
         "primary_phone": "14167460444",
         "location": {
           "country": "Canada",
           "address": " 3300 Bloor Street West",
           "postal": "M8X 2X2",
           "state": "Ontario",
           "city": "Toronto"
         }
       },
       "current_position": null
     },
     {
       "id": 125458,
       "employee_number": null,
       "business_unit_id": 128,
       "manager_id": null,
       "hired_on": "2026-08-06",
       "started_on": "2026-08-06",
       "verified_on": "2026-08-06",
       "termination_date": null,
       "user": {
         "first_name": "Jake",
         "middle_initial": null,
         "last_name": "Williams",
         "email": "jake.williams@talentnest.com",
         "primary_phone": "14167460444",
         "location": null
       },
       "current_position": {
         "id": 115427,
         "status_id": 388,
         "job_title": "Full-Time Customer Support",
         "started_on": "2026-08-06",
         "ended_on": null,
         "position_end_reason_id": null,
         "business_unit_id": 10228,
         "application_id": 5179944
       },
       "other_position": {
         "id": 102427,
         "status_id": 312,
         "job_title": "Full-Time Front Desk",
         "started_on": "2026-01-31",
         "ended_on": "2026-08-06",
         "position_end_reason_id": 41,
         "business_unit_id": 10228,
         "application_id": 5079944
       }
     }
   ]
}

Returns employees for the authenticated client.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/employees

Query string parameters

Parameter Description
per_page The requested number of results per page. Default is 50 and the allowed Maximum is 100.
page The specific page requested.
business_unit_id Return employees belonging to this business unit or any of its sub-units. To exclude sub-unit employees, add sub_units=false.
hired_after Return only employees whose start/hire date is after this date (ISO 8601). Filters started_on.
sort Optional. hired_on or started_on (both sort on start date, descending). Default is created_at descending.

GET: A specific Employee

curl "https://subdomain.talentnest.com/api/v1/employees/{id}"
  -u "TALENTNEST_API_KEY:"


curl "https://subdomain.talentnest.com/api/v1/employees/{email}"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "employee": {
    "id": 113246,
    "employee_number": null,
    "business_unit_id": 119,
    "manager_id": null,
    "hired_on": "2026-07-08",
    "started_on": "2026-07-08",
    "verified_on": "2026-07-08",
    "termination_date": "2026-07-24",
    "user": {
      "first_name": "Dan",
      "middle_initial": null,
      "last_name": "Cooper",
      "email": "dcooper@talentnest.com",
      "primary_phone": "14167460444",
      "location": {
          "country": "Canada",
          "address": " 3300 Bloor Street West",
          "postal": "M8X 2X2",
          "state": "Ontario",
          "city": "Toronto"
        }
    },
    "current_position": null,
    "other_positions": [
      {
        "id": 123455,
        "status_id": 500,
        "job_title": "Associate",
        "started_on": "2026-07-08",
        "ended_on": "2026-07-24",
        "position_end_reason_id": 23,
        "business_unit_id": 119,
        "application_id": 5032461
      }
    ]
  }
}

Retrieve a specific employee by id or email.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/employees/{id}

GET https://subdomain.talentnest.com/api/v1/employees/{email}

URL Parameters

Parameter Description
id The ID of the employee to retrieve
email The email address of the employee to retrieve

POST: Create an employee

curl -X POST "https://subdomain.talentnest.com/api/v1/employees"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

JSON body:

{
  "employee": {
    "employee_number": "E-1001",
    "business_unit_id": 56,
    "manager_id": 98,
    "started_on": "2026-09-11",
    "verified_on": "2026-09-11",
    "user": {
      "first_name": "Sam",
      "last_name": "Edwards",
      "email": "sam.edwards@example.com",
      "primary_phone": "14165550100",
      "location": {
        "country": "Canada",
        "state": "Ontario",
        "city": "Toronto",
        "address": "3300 Bloor Street West",
        "postal": "M8X 2X2"
      }
    }
  }
}

Creates an employee. Wrap fields in employee. user is the person record (name, email, phone, location). Location country and state are names, not ids. started_on is the hire/start date (hired_on in responses is the same date).

HTTP Request

POST https://subdomain.talentnest.com/api/v1/employees

JSON Body Parameters

All keys sit under employee. Unknown keys are rejected.

Parameter Required Type Description
employee_number No String Client employee number.
business_unit_id No Integer Business unit.
manager_id No Integer Manager employee id.
started_on No Date Start/hire date (ISO 8601 date).
verified_on No Date Verified date.
terminated_at No Date If set, the employee is created already terminated.
user No Object first_name, middle_initial, last_name, email, primary_phone, location.
dry_run No Boolean If true, validate without saving. Default: false.

PUT: Replace an employee

curl -X PUT "https://subdomain.talentnest.com/api/v1/employees/{id}"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

Same employee object as create. PUT resets omitted loadable fields to defaults, then applies the body. You may also send business_unit_id and employee_status_id.

HTTP Request

PUT https://subdomain.talentnest.com/api/v1/employees/{id}

URL Parameters

Parameter Description
id The ID of the employee

PATCH: Update an employee

curl -X PATCH "https://subdomain.talentnest.com/api/v1/employees/{id}"
  -H 'Content-Type: application/json'
  -u "TALENTNEST_API_KEY:"

Partial update. Same employee wrapper; only included keys change.

HTTP Request

PATCH https://subdomain.talentnest.com/api/v1/employees/{id}

URL Parameters

Parameter Description
id The ID of the employee

GET: Employee Statuses

curl "https://subdomain.talentnest.com/api/v1/employees/statuses"
  -u "TALENTNEST_API_KEY:"

The above returns JSON, structured like this:

{
  "statuses": [
    {
      "id": 123,
      "status": "Active",
      "description": "Employment status for current employees."
    },
    {
      "id": 145,
      "status": "On Leave",
      "description": "Employment status for employees on leave"
    },
    {
      "id": 157,
      "status": "Terminated",
      "description": null
    },
    {
      "id": 176,
      "status": "Part-Time",
      "description": null
    },
    {
      "id": 135,
      "status": "Contract",
      "description": null
    }
  ]
}

Employee Statuses are client-defined phrases used to identify an employee's current status (e.g. Active or On Leave). Employee Statuses may contain translations.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/employees/statuses

GET: Employees for a Specific Status

curl "https://subdomain.talentnest.com/api/v1/employees/statuses/{id}"
  -u "TALENTNEST_API_KEY:"

The above returns JSON, structured like this:

{
  "statuses": [
    {
      "id": 123,
      "status": "Active",
      "description": "Employment status for current employees.",
      "employee_ids": [
          1234,
          4567,
          5482,
          7614,
          7751,
          7757,
          8015
      ]
    }
  ]
}

Returns details for a specific employee status and a list of employee IDs that have this status.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/employees/statuses/{id}

URL Parameters

Parameter Description
id The ID of the employee status to return

GET: Position End (Termination) Reasons

curl "https://subdomain.talentnest.com/api/v1/position_end_reasons"
  -u "TALENTNEST_API_KEY:"

The above returns JSON, structured like this:

{
  "position_end_reasons": [
    {
      "id": 55,
      "reason": "Voluntary Termination",
      "description": "Voluntary Termination"
    },
    {
      "id": 56,
      "reason": "Performance",
      "description": "Involuntary Termination"
    },
    {
      "id": 58,
      "reason": "Job Abandonment",
      "description": "Involuntary Termination"
    },
    {
      "id": 66,
      "reason": "Other Employment",
      "description": "Voluntary Termination"
    },
    {
      "id": 76,
      "reason": "Did Not Like Role",
      "description": "Voluntary Termination"
    },
    {
      "id": 88,
      "reason": "Medical - Personal or Family",
      "description": "Voluntary Termination"
    }
  ]
}

Returns position end (termination) reasons and their IDs. Translations are included when present.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/position_end_reasons

POST: Terminate an Employee

curl -X POST "https://subdomain.talentnest.com/api/v1/employees/{id}/terminate"
  -H 'Content-Type: application/json'
  -u 'TALENTNEST_API_KEY:'

The above command takes a JSON request, structured like this:

{
  "position_end_reason_id": 55,
  "termination_date": "2026-08-06"
}

The above returns JSON, structured like this:

{
  "employee": {
    "id": 109125,
    "employee_number": null,
    "business_unit_id": 257,
    "manager_id": null,
    "hired_on": "2026-03-23",
    "started_on": "2026-03-23",
    "verified_on": "2026-03-23",
    "termination_date": "2026-08-06",
    "user": {
      "first_name": "Sam",
      "middle_initial": null,
      "last_name": "Edwards",
      "email": "sedwards@talentnest.com",
      "primary_phone": "14167460444",
      "location": {
        "country": "Canada",
        "address": " 3300 Bloor Street West",
        "postal": "M8X 2X2",
        "state": "Ontario",
        "city": "Toronto"
      }
    },
    "current_position": null,
    "other_positions": [
      {
        "id": 2341231,
        "status_id": 372,
        "job_title": "Outbound Call Center Agent",
        "started_on": "2026-03-23",
        "ended_on": "2026-08-06",
        "position_end_reason_id": 55,
        "business_unit_id": 257,
        "application_id": 432425
      }
    ]
  }
}

Terminates the employee. Optional reason, status, and date.

HTTP Request

POST https://subdomain.talentnest.com/api/v1/employees/{id}/terminate

URL Parameters

Parameter Description
id The ID of the employee to terminate

JSON Body Parameters

Parameter Required Type Description
position_end_reason_id No Integer ID of a position end (termination) reason from GET /position_end_reasons.
status_id No Integer Employee status to apply after termination.
termination_date No Date Termination date (ISO 8601 date). Defaults to today if omitted. Must not be before the current position start date.

Employment process step statuses

GET: All step statuses

curl "https://subdomain.talentnest.com/api/v1/employment_process_step_statuses"
  -u "TALENTNEST_API_KEY:"

The above command returns JSON structured like this:

{
  "employment_process_step_statuses": [
    "Inactive",
    "Active",
    "Completed",
    "Invited",
    "Deselected"
  ]
}

Returns the status names used on employment-process steps (Inactive, Active, Completed, Invited, Deselected). Exact strings are those configured for the client.

HTTP Request

GET https://subdomain.talentnest.com/api/v1/employment_process_step_statuses

HTTP verbs

The API supports GET, POST, PUT, PATCH, and DELETE. Not every resource accepts every verb.

Verb Description
GET Requests a representation of the specified resource; requests using GET can only retrieve data
POST Submits data to a new resource
PUT Uploads data to an existing resource, overriding the existing data
PATCH Applies a partial modification to a resource
DELETE Deletes the specified resource

Response Codes

The HTTP response code can be used to determine if the API request has succeeded. The API returns the following codes with the given circumstances:

Code Meaning
200 OK -- Request was successful
201 Created -- POST request completed successfully
400 Bad Request -- The request was invalid or malformed
401 Unauthorized -- Your API key is invalid
403 Forbidden -- API Authentication failed
404 Not Found -- The resource requested does not exist
405 Method Not Allowed -- The resource requested does not support the request's HTTP verb

In all cases other than 401 Unauthorized, a JSON response will accompany the status code.

For 200 OK and 201 Created, the response will contain either the data requested for a GET request, the data deleted for a DELETE request, or the current state of the resource after a POST, PUT or PATCH request.

For all other status codes, the response will contain error details, which includes the error name, error description, and more specific details as applicable.

You should not receive 500 Internal Server Errors from the API. Please contact TalentNest support if this occurs.

Webhooks

TalentNest can POST JSON to a URL you provide when certain events occur.

To subscribe, contact support@talentnest.com. You will receive a secret key used to verify signatures.

Available events

X-Event-Name: applicant_hired
Event When
new_application A candidate successfully applies to a job.
applicant_hired A candidate is hired. The payload is the new employee record (use this for payroll / HRIS).
applicant_review_completed The New Application (review candidate) step is completed.
applicant_deselected An application is deselected.

The event name is sent in the X-Event-Name header.

Signature

X-Event-Signature: sha256 417a453d456ff29aabcdd5b68afdfbf8b2d160b8dd4818fdf34dc4940d509703

HMAC in Ruby:

digest = OpenSSL::Digest.new('sha256')
signature = OpenSSL::HMAC.hexdigest(digest, secret_key, body)

HMAC in PHP:

<?php
  $signature = hash_hmac('sha256', $body, $secret_key);
?>

Each request is signed with HMAC-SHA256 of the raw body and your secret. The header is:

X-Event-Signature: sha256 <hex digest>

Compute the digest the same way and compare it to the hex portion after the space. If they match, the POST came from TalentNest.

New application webhook

{
  "application_id": 1765253,
  "job": {
    "id": 25668,
    "name": "Parts Manager - Automotive",
    "employment_type": "Full time"
  },
  "candidate": {
    "email": "jj@talentnest.com",
    "first_name": "Jake",
    "last_name": "Joseph",
    "phone": "416-123-5555",
    "language_preference": "en",
    "location": {
      "address": "3300 Bloor Street West",
      "city": "Toronto",
      "state": "Ontario",
      "postal": "M8X 2X3",
      "country": "Canada"
    }
  }
}

Sent when a candidate finishes applying. Fetch the full application with GET /api/v1/applications/{application_id} if you need more than this payload.

Applicant hired webhook

{
  "employee_id": 3234124,
  "employee_number": null,
  "business_unit_id": 422342,
  "business_unit_name": "Marketing Department",
  "job_title": "Manager - Social Media",
  "hired_on": "2026-09-01",
  "manager_id": 98644,
  "first_name": "Samantha",
  "last_name": "Murphy",
  "email": "samantha.murphy@talentnest.com",
  "phone": "416-555-555",
  "location": {
    "address": "3300 Bloor St. West",
    "city": "Toronto",
    "state": "Ontario",
    "postal": "M8X 2X2",
    "country": "Canada"
  }
}

Sent when a candidate is hired. employee_id is the new employee. Fetch GET /api/v1/employees/{employee_id} for the full record.

Applicant review completed webhook

{
  "application_id": 1765253,
  "rating": 4.0,
  "note": "Strong communication skills.",
  "reviewed_by": {
    "email": "recruiter@example.com",
    "first_name": "Jane",
    "last_name": "Doe"
  },
  "reviewed_at": "2026-09-08T17:47:15Z"
}

Sent when the New Application (review candidate) step is completed — not when later interview steps complete. rating is present only if that step is rated. Fetch GET /api/v1/applications/{application_id} for the full application.

Applicant deselected webhook

{
  "application_id": 1765253
}

Sent when an application is deselected. The body is the application id. Fetch GET /api/v1/applications/{application_id} for status and deselect reason.

Support

Questions about the API, a webhook subscription, or an integration — email support@talentnest.com.

To learn more about TalentNest, visit www.talentnest.com.