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
email 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
}