🤖 API Documentation

Agent-native REST API for managing contacts. Built for AI assistants.

Base URL
https://freecrm.pages.dev/api

Or your self-hosted instance URL

GET
/contacts
List all contacts with optional filtering

Query Parameters

  • search - Filter by name, email, or company
  • tags - Filter by tags (comma-separated)
  • limit - Max results (default: 100)
  • offset - Pagination offset

Example

curl "https://freecrm.pages.dev/api/contacts?search=john&limit=10"
POST
/contacts
Create a new contact

Request Body

{
  "name": "John Doe",        // required
  "email": "john@example.com", // required
  "phone": "+1234567890",    // optional
  "company": "Acme Inc",     // optional
  "tags": ["client", "vip"], // optional
  "customFields": {}         // optional
}

Example

curl -X POST "https://freecrm.pages.dev/api/contacts" \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com"}'
POST
/contacts/bulk
🤖 Agent Friendly
Bulk create/update contacts with automatic deduplication

Features

  • ✅ Upsert behavior - updates existing contacts by email
  • ✅ Process up to 100 contacts per request
  • ✅ Returns detailed results (created/updated/failed)

Example

curl -X POST "https://freecrm.pages.dev/api/contacts/bulk" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {"name": "Alice", "email": "alice@example.com"},
      {"name": "Bob", "email": "bob@example.com", "tags": ["new"]}
    ]
  }'

Response

{
  "success": true,
  "summary": {
    "created": 2,
    "updated": 0,
    "failed": 0,
    "total": 2
  },
  "results": { ... }
}
GET
/contacts/:id
Get a single contact by ID
curl "https://freecrm.pages.dev/api/contacts/abc-123"
PATCH
/contacts/:id
Update a contact
curl -X PATCH "https://freecrm.pages.dev/api/contacts/abc-123" \
  -H "Content-Type: application/json" \
  -d '{"company": "New Company"}'
DELETE
/contacts/:id
Delete a contact
curl -X DELETE "https://freecrm.pages.dev/api/contacts/abc-123"

Built with 🦀 by Crustacean Labs