Contacts
Manage your contacts: list them, get a contact by ID, or update its pipeline state.
GET
/api/contacts
Retrieves the collection of Contact resources.
Example request
curl -X GET "https://www.letsligo.com/api/contacts" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| page | integer | The collection page number | No |
| string (email) | Exact email match — used to find a contact | No |
Response example
{
"@context": "/api/contexts/Contact",
"@id": "/api/contacts",
"@type": "hydra:Collection",
"hydra:member": [
{
"@id": "/api/contacts/123e4567-e89b-12d3-a456-426614174000",
"@type": "Contact",
"name": "Marie Dubois",
"company": "Acme Corp",
"email": "[email protected]",
"phone": "+33123456789",
"status": "pending",
"pipelineState": {
"@id": "/api/pipeline_states/223e4567-e89b-12d3-a456-426614174000",
"name": "Nouveau contact"
}
}
],
"hydra:totalItems": 1
}
Response attributes
| Name | Type | Description |
|---|---|---|
| member[].name | string | Full name of the contact (required). |
| member[].position | string | Job title or professional position. |
| member[].email | string (email) | |
| member[].phone | string | |
| member[].website | string (uri) | Website URL. |
| member[].address | string | Physical address. |
| member[].linkedinUrl | string (uri) | LinkedIn profile URL. |
| member[].status | string: pending | enriched | contacted | qualified | converted | lost | Contact status in the pipeline: pending, enriched, contacted, qualified, converted, or lost. |
| member[].creationSource | string: letsligo | scan | linkedin_new_relation | null | |
| member[].tags | array | Array of tags for categorization. |
| member[].additionalInfo | string | Additional notes or information about the contact. |
| member[].meetingContext | string | Context of where/how you met (e.g. trade show, conference). |
| member[].lastContactAt | string (date-time) | Date and time of last contact (ISO 8601). |
| member[].pipelineState | string | Current pipeline state of the contact. |
| member[].id | string (uuid) | Unique identifier (UUID) of the resource. |
| member[].company | string | Returns the primary company name for display (profile, card, list). |
| member[].companyId | string | Returns the primary company UUID for API/MCP (e.g. to call company_get). |
| member[].companyIds | array | Returns all company UUIDs for active memberships. Use company_get with each id for full details. |
POST
/api/contacts
Create a contact
Example request
curl -X POST "https://www.letsligo.com/api/contacts" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Marie Dubois", "emails": [ "[email protected]", "[email protected]" ], "company": "Acme Corp" }'
Request body
{
"name": "Marie Dubois",
"emails": [
"[email protected]",
"[email protected]"
],
"company": "Acme Corp"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| name | string | Contact name (required) | Yes |
| emails | array | Email addresses only (one entry if there is a single address). | No |
| company | string | No | |
| position | string | No | |
| phones | array | Phone numbers only (one entry if there is a single number). | No |
| address | string | No | |
| website | string | No | |
| linkedinUrl | string | No | |
| additionalInfo | string | No | |
| meetingContext | string | No |
POST
/api/contacts/confirm
Confirm contact creation (wizard)
Example request
curl -X POST "https://www.letsligo.com/api/contacts/confirm" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| confirmationToken | string | Yes | |
| overrides | object | Last-minute field overrides | No |
POST
/api/contacts/prepare
Prepare contact creation (wizard)
Example request
curl -X POST "https://www.letsligo.com/api/contacts/prepare" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| text | string | Raw text (signature, vCard) to extract contact from | Yes |
| overrides | object | Field overrides to correct/extend extracted data | No |
PATCH
/api/contacts/{id}
Update a contact
Example request
curl -X PATCH "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "company": "Acme Corp", "position": "Directrice", "phones": [ "+33 6 00 00 00 00", "+33 1 00 00 00 00" ] }'
Request body
{
"company": "Acme Corp",
"position": "Directrice",
"phones": [
"+33 6 00 00 00 00",
"+33 1 00 00 00 00"
]
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. | Yes |
| name | string | No | |
| emails | array | Email addresses only (one entry if there is a single address). | No |
| company | string | No | |
| position | string | No | |
| phones | array | Phone numbers only (one entry if there is a single number). | No |
| address | string | No | |
| website | string | No | |
| linkedinUrl | string | No | |
| additionalInfo | string | No | |
| meetingContext | string | No |
POST
/api/contacts/{id}/emails/prepare
Prepare / generate email
Example request
curl -X POST "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/emails/prepare" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "message": "Rédige un email de relance après notre rencontre au salon" }'
Request body
{
"message": "Rédige un email de relance après notre rencontre au salon"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. | Yes |
| message | string | Instruction for email generation | Yes |
| sessionId | string (uuid) | Existing session ID for iterations | No |
| currentEmail | object | No |
POST
/api/contacts/{id}/emails/refine
Refine email
Example request
curl -X POST "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/emails/refine" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "instruction": "Raccourcis le paragraphe 2", "sessionId": "uuid-from-prepare" }'
Request body
{
"instruction": "Raccourcis le paragraphe 2",
"sessionId": "uuid-from-prepare"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. | Yes |
| instruction | string | e.g. "Shorten paragraph 2" | Yes |
| sessionId | string (uuid) | Required - from prepare | No |
| currentEmail | object | No |
POST
/api/contacts/{id}/emails/send
Send email
Example request
curl -X POST "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/emails/send" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "sessionId": "uuid-from-prepare" }'
Request body
{
"sessionId": "uuid-from-prepare"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. | Yes |
| emailData | object | No | |
| sessionId | string (uuid) | No |
POST
/api/contacts/{id}/extend
Extend contact with text
Example request
curl -X POST "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/extend" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN"
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. | Yes |
| text | string | Text to append | Yes |
| field | string: additionalInfo | meetingContext | No |
PATCH
/api/contacts/{id}/pipeline-state
Update contact pipeline state
Example request
curl -X PATCH "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/pipeline-state" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "stateId": "123e4567-e89b-12d3-a456-426614174000" }'
Request body
{
"stateId": "123e4567-e89b-12d3-a456-426614174000"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Contact UUID | Yes |
| stateId | string (uuid), nullable | Pipeline state UUID. Pass null or omit to remove contact from pipeline. | No |
Response example
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "Marie Dubois",
"company": "Acme Corp",
"status": "pending",
"pipelineState": {
"id": "223e4567-e89b-12d3-a456-426614174000",
"name": "Nouveau contact"
}
}
Response attributes
| Name | Type | Description |
|---|---|---|
| id | string (uuid) | Unique identifier (UUID) of the resource. |
| name | string | Full name of the contact (required). |
| company | string, nullable | Company or organization name. |
| status | string: pending | enriched | contacted | qualified | converted | lost | Contact status in the pipeline: pending, enriched, contacted, qualified, converted, or lost. |
| pipelineState | object, nullable | Current pipeline state of the contact. |
POST
/api/contacts/{id}/tasks
Create a task for a contact
Example request
curl -X POST "https://www.letsligo.com/api/contacts/123e4567-e89b-12d3-a456-426614174000/tasks" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "title": "Appeler pour suivi", "dueDate": "2025-03-20T10:00:00+00:00", "description": "Relance après notre rencontre au salon", "type": "call" }'
Request body
{
"title": "Appeler pour suivi",
"dueDate": "2025-03-20T10:00:00+00:00",
"description": "Relance après notre rencontre au salon",
"type": "call"
}
Request parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string (uuid) | Contact UUID | Yes |
| title | string | Task title (required) | Yes |
| dueDate | string (date-time) | Due date and time (ISO 8601, required) | Yes |
| description | string | Optional task description or notes | No |
| type | string: call | email | meeting | follow_up | proposal | quote | other | Optional task type | No |
Response example
{
"id": "323e4567-e89b-12d3-a456-426614174000",
"title": "Appeler pour suivi",
"type": "call",
"description": "Relance après notre rencontre au salon",
"dueDate": "2025-03-20T10:00:00+00:00",
"completed": false
}