Skip to main content
POST
/
contacts
Create a contact
curl --request POST \
  --url https://app.leonar.app/api/v1/contacts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "first_name": "Sophie",
  "last_name": "Martin",
  "title": "Senior Software Engineer",
  "current_company": "Doctolib",
  "location": "Paris, France",
  "emails": [
    {
      "email": "sophie@doctolib.com",
      "type": "work"
    }
  ],
  "linkedin_profile": "https://www.linkedin.com/in/sophie-martin",
  "skills": [
    "React",
    "TypeScript"
  ],
  "tags": [
    "frontend"
  ]
}
'
{
  "data": {
    "id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
    "first_name": "Sophie",
    "last_name": "Martin",
    "title": "Senior Software Engineer",
    "current_company": "Doctolib",
    "location": "Paris, France",
    "linkedin_profile": "https://www.linkedin.com/in/sophie-martin",
    "emails": [
      {
        "email": "sophie@doctolib.com",
        "type": "work"
      }
    ],
    "phones": [
      {
        "phone": "+33612345678",
        "type": "personal"
      }
    ],
    "tags": [
      "frontend",
      "senior"
    ],
    "global_status": "new",
    "source": "linkedin",
    "summary": null,
    "skills": [
      "React",
      "TypeScript",
      "Node.js"
    ],
    "languages": [
      "French",
      "English"
    ],
    "years_experience": 8,
    "do_not_contact": false,
    "created_at": "2025-01-15T10:30:00Z",
    "updated_at": "2025-01-20T14:00:00Z",
    "last_contacted_at": null,
    "archived_at": null
  }
}

Authorizations

Authorization
string
header
required

API key starting with leo_

Body

application/json
first_name
string
required
Maximum string length: 100
last_name
string
Maximum string length: 100
email
string<email>

Single email (convenience field). Use emails array for multiple.

emails
object[]
Maximum array length: 5
phone
string

Single phone (convenience field). Use phones array for multiple.

phones
object[]
Maximum array length: 5
title
string
current_company
string
location
string
linkedin_profile
string<uri>
contact_type
string[]
tags
string[]

Tag names to attach. Tags are created automatically if they don't exist.

source
string
company_id
string<uuid>
custom_data
object

Arbitrary key-value data stored on the contact

global_status
enum<string>
Available options:
new,
contacted,
replied,
qualified,
archived
do_not_contact
boolean
years_experience
integer
skills
string[]
languages
string[]

Response

Contact created

data
object
Example:
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"first_name": "Sophie",
"last_name": "Martin",
"title": "Senior Software Engineer",
"current_company": "Doctolib",
"location": "Paris, France",
"linkedin_profile": "https://www.linkedin.com/in/sophie-martin",
"emails": [
{
"email": "sophie@doctolib.com",
"type": "work"
}
],
"phones": [
{
"phone": "+33612345678",
"type": "personal"
}
],
"tags": ["frontend", "senior"],
"global_status": "new",
"source": "linkedin",
"summary": null,
"skills": ["React", "TypeScript", "Node.js"],
"languages": ["French", "English"],
"years_experience": 8,
"do_not_contact": false,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-20T14:00:00Z",
"last_contacted_at": null,
"archived_at": null
}