Create Or Update Lead
Create a lead when no match exists, or update the existing lead matched by any unique identifier.
Create a lead when no match exists, or update the existing lead matched by any unique identifier.
When to use
Use this for idempotent lead writes when you have at least one unique identifier such as lead id, email, LinkedIn identity, custom id, or Sales Navigator identity.
Output notes
- Responses default to `full` mode through the public API and CLI.
- Use `compact` only when token savings matter more than prospecting quality. It can noticeably reduce prospecting quality.
Output schema
{
"type": "object",
"properties": {
"lead_id": {
"type": "string"
},
"lead": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"title": {
"type": "string"
},
"jobTitle": {
"type": "string"
},
"company": {
"type": "string"
},
"score": {
"type": "number"
},
"avatarUrl": {
"type": "string"
},
"linkedinUrl": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"New",
"Waiting",
"Contacted",
"Replied",
"MeetingBooked",
"Interested",
"NotInterested",
"DoNotContact"
]
},
"lastInteraction": {
"type": "string"
},
"description": {
"type": "string"
},
"linkedinProfileEnriched": {
"type": "boolean"
},
"location": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"timezone": {
"type": "string"
},
"companyWebsite": {
"type": "string"
},
"companyLogoUrl": {
"type": "string"
},
"companyLinkedinUrl": {
"type": "string"
},
"companyHeadline": {
"type": "string"
},
"personalWebsite": {
"type": "string"
},
"companyIndustry": {
"type": "string"
},
"companySize": {
"type": "string"
},
"experience": {
"type": "array",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"company": {
"type": "string"
},
"duration": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"role",
"company",
"duration"
],
"additionalProperties": false
}
},
"education": {
"type": "array",
"items": {
"type": "object",
"properties": {
"school": {
"type": "string"
},
"degree": {
"type": "string"
},
"year": {
"type": "string"
}
},
"required": [
"school",
"degree",
"year"
],
"additionalProperties": false
}
},
"skills": {
"type": "array",
"items": {
"type": "string"
}
},
"recentPosts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"content": {
"type": "string"
},
"date": {
"type": "string"
},
"likes": {
"type": "number"
},
"comments": {
"type": "number"
},
"url": {
"type": "string"
}
},
"required": [
"content",
"date",
"likes"
],
"additionalProperties": false
}
},
"mission": {
"type": "string"
},
"missions": {
"type": "array",
"items": {
"type": "string"
}
},
"sentMessages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"content": {
"type": "string"
},
"channel": {
"type": "string",
"enum": [
"EMAIL",
"LINKEDIN"
]
},
"date": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"senderName": {
"type": "string"
},
"isPending": {
"type": "boolean"
}
},
"required": [
"id",
"content",
"channel",
"date"
],
"additionalProperties": false
}
},
"receivedMessages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"content": {
"type": "string"
},
"channel": {
"type": "string",
"enum": [
"EMAIL",
"LINKEDIN"
]
},
"date": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"senderName": {
"type": "string"
},
"isPending": {
"type": "boolean"
}
},
"required": [
"id",
"content",
"channel",
"date"
],
"additionalProperties": false
}
},
"addedDate": {
"type": "string"
},
"isFlagged": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"title",
"company",
"score",
"avatarUrl",
"linkedinUrl",
"linkedin_url",
"status"
],
"additionalProperties": false
}
},
"required": [
"lead_id",
"lead"
],
"additionalProperties": false
}
CLI
salestouch commands run lead.upsert --input-json '{"lead_id":"<string>","prospect_id":"<string>","email":"<string>"}' --json
Payload
{
"lead_id": "<string>",
"prospect_id": "<string>",
"email": "<string>"
}
Runtime Command
lead.upsert is exposed through the shared SalesTouch runtime and stays available across API, CLI and MCP.
HTTP Reference
Use Authorization: Bearer <salestouch_api_key>.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://www.salestouch.io/api/v1/commands/string" \ -H "Content-Type: application/json" \ -d '{}'{
"ok": true,
"status": 0,
"data": {},
"error": {
"code": "string",
"message": "string"
},
"meta": {
"approval_required": true,
"approval_request_id": "string",
"command_hash": "string",
"warnings": [
"string"
]
}
}{
"ok": true,
"status": 0,
"data": {},
"error": {
"code": "string",
"message": "string"
},
"meta": {
"approval_required": true,
"approval_request_id": "string",
"command_hash": "string",
"warnings": [
"string"
]
}
}{
"error": {
"message": "string",
"code": "string"
}
}{
"error": {
"message": "string",
"code": "string"
}
}{
"ok": true,
"status": 0,
"data": {},
"error": {
"code": "string",
"message": "string"
},
"meta": {
"approval_required": true,
"approval_request_id": "string",
"command_hash": "string",
"warnings": [
"string"
]
}
}{
"ok": true,
"status": 0,
"data": {},
"error": {
"code": "string",
"message": "string"
},
"meta": {
"approval_required": true,
"approval_request_id": "string",
"command_hash": "string",
"warnings": [
"string"
]
}
}{
"ok": true,
"status": 0,
"data": {},
"error": {
"code": "string",
"message": "string"
},
"meta": {
"approval_required": true,
"approval_request_id": "string",
"command_hash": "string",
"warnings": [
"string"
]
}
}Schema Reference
Use Authorization: Bearer <salestouch_api_key>.
In: header
Path Parameters
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://www.salestouch.io/api/v1/commands/string/schema"{
"data": {
"command": {
"command_id": "string",
"title": "string",
"description": "string",
"summary": "string",
"visibility": "public",
"risk": "read",
"category": "linkedin",
"default_permission": "allow",
"when_to_use": "string",
"risk_notes": [
"string"
],
"output_notes": [
"string"
],
"related_commands": [
"string"
],
"related_resources": [
"string"
],
"examples": [
{
"title": "string",
"language": "string",
"code": "string"
}
],
"input_schema": {},
"output_schema": {},
"approval_output_schema": {}
}
}
}{
"error": {
"message": "string",
"code": "string"
}
}{
"error": {
"message": "string",
"code": "string"
}
}{
"error": {
"message": "string",
"code": "string"
}
}Related Resources
salestouch://prospects/{id}