Skip to Content
InvyteDocs

Write a personal line for each person

One sentence per Talent Hub person or Sourcing prospect on why their background fits the Job, written from facts on their profile and checked against them, with those facts as its basis. A person whose profile is too thin gets null. At most 10 people a call. Lines for the same facts, Job and tone are reused for 30 days, so a retry pays nothing; new ones take one model call. AI clients and agents name Invyte Network people by the opaque key their anonymous card carries, and their lines are written only from that anonymous card (no name, employers, schools or highlights). Nothing is sent.

POST
/operations/outreach.personalLines

Authorization

bearer
headerAuthorizationBearer <API key or OAuth token>

An organization API key (ink_live_…, ADR-0124), or the OAuth access token a person's AI client gets from the Recruiter MCP sign-in. Only the Authorization header is accepted.

Header Parameters

Idempotency-Key?string

Makes a write safe to repeat: the same key and input return the first result. Required for agents' writes and for anything a person confirms.

Match^[A-Za-z0-9._:-]+$
Length8 <= length <= 128

Request Body

application/json
  1. body
input*
confirmation?string

The id from a confirm or awaiting_approval Outcome, sent with the same input and key to go ahead.

Response Body

Done. A replay of the same key and input omits output.

application/json
  1. response
status*unknown
output?
actionId*string
Example Request
curl -X POST 'https://www.invyte.ai/api/recruiter/v1/operations/outreach.personalLines' \  -H 'Content-Type: application/json' \  -d '{  "input": {    "jobId": "string",    "tone": "warm",    "targets": [      {        "personKey": "string"      }    ]  }}'
Example Response
{  "status": "done",  "output": {    "lines": [      {        "key": "string",        "text": "string",        "basis": [          {            "id": "string",            "text": "string"          }        ]      }    ]  },  "actionId": "string"}