API Documentation
Build powerful integrations with the Leedo API
https://api.leedo.app/v1
v1
Introduction
The Leedo API allows you to programmatically manage your CRM data. You can create, read, update leads, accounts, contacts, and campaigns through a RESTful API.
Base URL:
https://api.leedo.app/v1
Authentication
All API requests require authentication using an API token. Include your token in the Authorization header using the Bearer scheme.
curl https://api.leedo.app/v1/leads \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Endpoints
Leads
Leads represent potential customers. Manage your sales pipeline by creating, updating, and tracking leads through various stages.
/leads
List all leads in your organization
Response
{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"status": "new",
"created_at": "2025-10-01T12:00:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}
/leads
Create a new lead
Request Body
{
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"phone": "+1234567890",
"status": "new"
}
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"phone": "+1234567890",
"status": "new",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
/leads/:id
Retrieve a specific lead
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"phone": "+1234567890",
"status": "new",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
/leads/:id
Update a lead
Request Body
{
"status": "qualified",
"phone": "+1234567890"
}
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"phone": "+1234567890",
"status": "qualified",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:10:00Z"
}
Accounts
Accounts represent companies or organizations. Convert qualified leads into accounts to maintain long-term business relationships.
/accounts
List all accounts
Response
{
"data": [
{
"id": "650e8400-e29b-41d4-a716-446655440000",
"name": "Acme Corporation",
"industry": "Technology",
"website": "https://acme.com",
"created_at": "2025-10-01T12:00:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}
/accounts
Create a new account
Request Body
{
"name": "Acme Corporation",
"industry": "Technology",
"website": "https://acme.com"
}
Response
{
"id": "650e8400-e29b-41d4-a716-446655440000",
"name": "Acme Corporation",
"industry": "Technology",
"website": "https://acme.com",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
/accounts/:id
Retrieve a specific account
Response
{
"id": "650e8400-e29b-41d4-a716-446655440000",
"name": "Acme Corporation",
"industry": "Technology",
"website": "https://acme.com",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
Contacts
Contacts are individuals associated with accounts. Store contact information, roles, and communication preferences for each person.
/contacts
List all contacts
Response
{
"data": [
{
"id": "750e8400-e29b-41d4-a716-446655440000",
"name": "Jane Smith",
"email": "jane@acme.com",
"role": "Product Manager",
"account_id": "650e8400-e29b-41d4-a716-446655440000",
"created_at": "2025-10-01T12:00:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}
/contacts
Create a new contact
Request Body
{
"name": "Jane Smith",
"email": "jane@acme.com",
"role": "Product Manager",
"account_id": "650e8400-e29b-41d4-a716-446655440000"
}
Response
{
"id": "750e8400-e29b-41d4-a716-446655440000",
"name": "Jane Smith",
"email": "jane@acme.com",
"role": "Product Manager",
"account_id": "650e8400-e29b-41d4-a716-446655440000",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
Campaigns
Campaigns track marketing initiatives and lead generation efforts. Monitor performance and manage lead capture forms for each campaign.
/campaigns
List all campaigns
Response
{
"data": [
{
"id": "850e8400-e29b-41d4-a716-446655440000",
"name": "Q4 2025 Launch",
"status": "active",
"leads_count": 42,
"created_at": "2025-10-01T12:00:00Z"
}
],
"meta": {
"total": 1,
"page": 1,
"per_page": 20
}
}
/campaigns/:id
Retrieve a specific campaign
Response
{
"id": "850e8400-e29b-41d4-a716-446655440000",
"name": "Q4 2025 Launch",
"status": "active",
"leads_count": 42,
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
Example: Create a Lead
curl -X POST https://api.leedo.app/v1/leads \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john@example.com"}'
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"email": "john@example.com",
"company": "Acme Corp",
"phone": "+1234567890",
"status": "new",
"created_at": "2025-10-01T12:00:00Z",
"updated_at": "2025-10-01T12:00:00Z"
}
Rate Limits
API requests are rate-limited to ensure fair usage and system stability:
- Free plan: 100 requests per hour
- Duo plan: 500 requests per hour
- Pro plan: 5,000 requests per hour
Rate limit information is included in response headers: X-RateLimit-Limit, X-RateLimit-Remaining,
X-RateLimit-Reset
Error Codes
| Status Code | Description |
|---|---|
200 |
OK - Request succeeded |
201 |
Created - Resource successfully created |
400 |
Bad Request - Invalid request parameters |
401 |
Unauthorized - Invalid or missing API token |
403 |
Forbidden - Insufficient permissions |
404 |
Not Found - Resource does not exist |
429 |
Too Many Requests - Rate limit exceeded |
500 |
Internal Server Error - Something went wrong on our end |
Need Help?
If you have questions or need assistance with the API, please contact our support team.
Contact Support