🤖 API Documentation
Agent-native REST API for managing contacts. Built for AI assistants.
Base URL
https://freecrm.pages.dev/apiOr your self-hosted instance URL
GET
/contacts
List all contacts with optional filtering
Query Parameters
search- Filter by name, email, or companytags- 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 FriendlyBulk 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