API v1REST

Integrations & API

Connect your website, forms, and external tools to Micro CRM. Automatically capture leads, sync data, and build custom integrations.

Quick Start
Get up and running in 3 steps
1
Create an API Key

Go to Settings → API Keys and create a new key with the permissions you need.

2
Add Authentication

Include your API key in the Authorization header.

3
Make Requests

Send requests to /api/v1/clients or /api/v1/deals.

Authentication
All API requests require authentication via Bearer token

Include your API key in the Authorization header:

Authorization: Bearer mcrm_your_api_key_here
⚠️
Keep your API keys secure. Never expose them in client-side code or public repositories. Use environment variables and server-side requests.
API Reference
Available endpoints and examples
POST/api/v1/clientsclients:write

Create a new client. Perfect for lead capture forms.

curl -X POST https://microcrm.picklellama.studio/api/v1/clients \
  -H "Authorization: Bearer mcrm_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "+1 555-0123",
    "company": "Acme Inc",
    "notes": "From website contact form"
  }'
Request body parameters

name (required) - Client name

email - Email address

phone - Phone number

company - Company name

notes - Additional notes


GET/api/v1/clientsclients:read

List all clients with pagination.

curl https://microcrm.picklellama.studio/api/v1/clients \
  -H "Authorization: Bearer mcrm_your_api_key"
Query parameters

limit - Max results (1-100, default 50)

offset - Skip results for pagination

search - Search by name, email, or company

Code Examples
Copy-paste examples for common use cases

Lead capture form integration

// Lead capture form submission
async function submitLeadForm(formData) {
  const response = await fetch('https://microcrm.picklellama.studio/api/v1/clients', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer mcrm_your_api_key',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: formData.name,
      email: formData.email,
      phone: formData.phone,
      company: formData.company,
      notes: `Source: ${formData.source || 'Website'}`,
    }),
  })

  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.error)
  }

  return response.json()
}
Rate Limits
Requests per minute100

Rate limit headers are included in all responses:

  • X-RateLimit-Limit - Total allowed
  • X-RateLimit-Remaining - Remaining
  • X-RateLimit-Reset - Reset timestamp
Error Responses
400Bad Request - Invalid parameters
401Unauthorized - Invalid API key
403Forbidden - Missing permission
404Not Found - Resource not found
409Conflict - Duplicate resource
429Too Many Requests - Rate limited

Ready to get started?

Create an API key and start integrating.

Create API Key