Skip to main content
All API requests require authentication via a Bearer token in the Authorization header.

API keys

API keys are prefixed with leo_ and can be created in Settings > API in your Leonar dashboard.
curl -X GET "https://app.leonar.app/api/v1/contacts" \
  -H "Authorization: Bearer leo_your_api_key"
Keep your API keys secure. Never expose them in client-side code, public repositories, or URLs.

Scopes

Each API key has granular permissions controlled by scopes. When creating a key, select only the scopes your integration needs.
ScopeDescription
contacts:readList and view contacts
contacts:writeCreate and update contacts
contacts:deleteArchive contacts
companies:readList and view companies
companies:writeCreate and update companies
companies:deleteArchive companies
deals:readList and view deals and pipelines
deals:writeCreate, update, close, and reopen deals
deals:deleteArchive deals
notes:readList and view notes
notes:writeCreate and update notes
tags:readList tags
tags:writeCreate and manage tags
tasks:readList and view tasks
tasks:writeCreate, update, and delete tasks
enrichment:readView enrichment request status
enrichment:writeTrigger contact enrichment
messages:readList conversations and messages
messages:writeSend messages
projects:readList and view projects
projects:writeCreate and update projects
pipeline:readView pipeline entries
pipeline:writeAdd and move candidates in pipelines
sequences:readList sequences and enrollments
sequences:writeEnroll and unenroll contacts
sourcing:readSearch for candidates
sourcing:writeAdd profiles to projects

Scope bundles

For convenience, you can use scope bundles when creating API keys:
BundleIncludes
full_accessAll scopes
read_onlyAll :read scopes
crmCompanies, deals, contacts, notes, tags
automationSequences, contacts, pipeline, enrichment, tasks
sourcingContacts, projects, pipeline, sourcing

Error responses

If authentication fails, the API returns a 401 error:
{
  "error": {
    "code": "invalid_api_key",
    "message": "Invalid API key"
  }
}
If the API key lacks the required scope, a 403 is returned:
{
  "error": {
    "code": "insufficient_scope",
    "message": "This endpoint requires the 'contacts:write' scope"
  }
}