Docs / Recruiter

reject_recruiter_applicant

Reject one applicant in a hiring project, with a reason.

This action can change or spend something, and when it does it happens right away. Read “Good to know” first.

What you give it

InputWhat it isWhere to get it
applicantId
needed
A Recruiter id. The applicant's Recruiter id (AE…).Run search_linkedin_recruiter_people and use results[].id from its answer.
hiringProjectId
needed
A hiring project id. The hiring project (from list_hiring_projects).Run list_hiring_projects and use projects[].id from its answer.
2 more places to get it
reason
needed
One of: NOT_MEET_BASIC_QUALIFICATIONS, NOT_IN_DESIRED_LOCATION, MORE_QUALIFIED_CANDIDATES, WITHDREW_APPLICATION, NOT_CONSIDERED_OR_REASON_NOT_SPECIFIED. You write it.
notifyMessage
optional
Text, up to 4000 characters. Text of the rejection notice to send the applicant. Omit to reject without telling them.You write it.
notifyAt
optional
A date and time, like 2026-10-01T00:00:00.000Z. When to send the notice (ISO 8601 UTC). Default: now.You write it.
connectionId
optional
A connection id. Which of your LinkedIn accounts to act from (its id from list_linkedin_accounts). Omit to use your first live one.Run list_linkedin_accounts and use accounts[].id from its answer.
15 more places to get it

Call it

curl -X POST https://api.heyreagent.com/v1/actions/reject_recruiter_applicant \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "content-type: application/json" \
  -d '{"applicantId":"PASTE_RECRUITER_ID_HERE","hiringProjectId":"PASTE_HIRING_PROJECT_ID_HERE","reason":"NOT_MEET_BASIC_QUALIFICATIONS"}'
The same call in JavaScript
const response = await fetch("https://api.heyreagent.com/v1/actions/reject_recruiter_applicant", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "applicantId": "PASTE_RECRUITER_ID_HERE",
    "hiringProjectId": "PASTE_HIRING_PROJECT_ID_HERE",
    "reason": "NOT_MEET_BASIC_QUALIFICATIONS"
  }),
});
const answer = await response.json();
console.log(answer);
The same call in Python
import requests

response = requests.post(
    "https://api.heyreagent.com/v1/actions/reject_recruiter_applicant",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "applicantId": "PASTE_RECRUITER_ID_HERE",
        "hiringProjectId": "PASTE_HIRING_PROJECT_ID_HERE",
        "reason": "NOT_MEET_BASIC_QUALIFICATIONS",
    },
)
print(response.json())
The same call in n8n

Add an HTTP Request node and fill it in like this:

MethodPOST
URLhttps://api.heyreagent.com/v1/actions/reject_recruiter_applicant
Send HeadersOn. Name Authorization, Value Bearer YOUR_KEY
Send BodyOn. Body Content Type JSON, Specify Body Using JSON, then paste the body below
{
  "applicantId": "PASTE_RECRUITER_ID_HERE",
  "hiringProjectId": "PASTE_HIRING_PROJECT_ID_HERE",
  "reason": "NOT_MEET_BASIC_QUALIFICATIONS"
}

Put your own key where it says YOUR_KEY. Put your own value where it says PASTE_…_HERE: the table above says where each one comes from. New here? Start with your first call.

What you get back

When it worked, the answer is { "ok": true, "result": { … } }. Inside result:

rejected
applicantId
hiringProjectId
reason
notified
fromthe account it ran on
usedTodaynumber
dailyLimitnumber

A field that does not apply to an answer is left out, or is null.

When it did not work, the answer is { "ok": false, "error": "…", "message": "…" }. What each error means.

Good to know

In Claude or ChatGPT

Once connected, ask in your own words. The assistant sees this action as a tool with the same name, reject_recruiter_applicant, and the same inputs.