recruiter.startChat
Requires the Recruiter add-on. Calls return
TIER_NOT_ACTIVE(403) when the seat does not have this add-on active.
Start a Recruiter chat (InMail).
Signature
startChat(body: RecruiterStartChatBody): Promise<RecruiterStartChatResult>Example
import { Curviate } from "@curviate/sdk";
const curviate = new Curviate({
apiKey: "cvt_live_…",
baseUrl: "https://api.curviate.com",
});
const result = await curviate.account("acc_YOUR_ACCOUNT_ID").recruiter.startChat({ attendees_ids: ["YOUR_PROFILE_ID"], text: "Hi — saw your recent post and wanted to connect.", subject: "Quick question", signature: "…" });
console.log(`StartChat: ${result.chat_id}`);Parameters
| Name | Type | Required | Description |
|---|---|---|---|
attendees_ids | array | Yes | One or more Recruiter member IDs (AE… format) to include in the chat. |
text | string | Yes | Opening message text (1–8000 chars). Passed to the platform and discarded — never stored or logged. |
subject | string | Yes | Subject line — REQUIRED for Recruiter (InMail-based messaging), unlike the classic surface (≤ 200 chars). |
signature | string | Yes | Sender signature — REQUIRED for Recruiter. Not stored or logged. |
visibility | string | No | Visibility of the recruiter chat. |
intent | string | No | Whether this outreach is on behalf of a client or the operator's own company. |
send_as | string | No | Send the opening message as an InMail or as email. |
channel_type | string | No | Sourcing channel for tracking purposes (e.g. CAREER_SITE, MANUAL_IMPORT, INTERNAL_CANDIDATES, RECRUITER_SEARCH, REFERRAL — the vendor's own vocabulary is broader than this illustrative set, so any non-empty value is accepted rather than a closed enum). |
follow_up | object | No | Recruiter PRO only: schedule a follow-up message. subject/text are not stored or logged. |
attachments | Array<Buffer | File> | No | File field — sent as multipart/form-data. |
Returns
Resolves to RecruiterStartChatResult. Top-level fields: object, chat_id, message_id.
Error codes
UNAUTHORIZEDINVALID_REQUESTRATE_LIMIT_ACCOUNTRATE_LIMIT_TENANTPLATFORM_RATE_LIMITPLATFORM_ERRORACCOUNT_NOT_FOUNDACCOUNT_RESTRICTEDLINKEDIN_AUTH_FAILEDLINKEDIN_FEATURE_NOT_SUBSCRIBEDPAYLOAD_TOO_LARGERESOURCE_NOT_FOUNDTIER_NOT_ACTIVEUNSUPPORTED_MEDIA_TYPE
All error codes link to Error codes reference.
Notes
Note: The
account_idis injected automatically by the account-scoped accessor. Call ascurviate.account("acc_YOUR_ACCOUNT_ID").recruiter.startChat(...).