Developers
Build on Fada
Fada is an all-in-one team productivity app — chat, meetings, calendar, CRM and Kanban tasks in one space. One REST API plus an MCP server let you automate all of it, and let AI agents drive your workspace.
REST · https://fadadz.com/api/v1 · Bearer auth · per-workspace, tenant-isolated keys
Quick start
Make your first authenticated request in three steps.
- 1
Create an API key
Open Admin → API & webhooks in your workspace and create a key. Grant only the scopes the integration needs — a key is conservative by default.
- 2
Authenticate
Send your key as a Bearer token on every request. Keys are prefixed
crew_sk_and are bound to one workspace. - 3
Call the API
All endpoints live under
/api/v1and return JSON. Here is a first call:
curl https://fadadz.com/api/v1/crm/clients \
-H "Authorization: Bearer crew_sk_…"{
"clients": [
{ "id": "cl_…", "name": "Acme Corp", "stage": "prospect", "leadStatus": null }
]
}Client libraries
Prefer a typed SDK over raw HTTP? Official client libraries wrap every endpoint in one idiomatic call — same scoped crew_sk_ keys, no boilerplate.
TypeScript / JavaScript
npmnpm install @fadadz/sdkimport { FadaClient } from '@fadadz/sdk'
const fada = new FadaClient({ apiKey: 'crew_sk_…' })
const { clients } = await fada.crm.listClients()PHP
Composercomposer require fadadz/sdkuse Fadadz\Sdk\FadaClient;
$fada = new FadaClient('crew_sk_…');
$clients = $fada->crm->listClients();Python
PyPIpip install fadadzfrom fada import FadaClient
fada = FadaClient(api_key="crew_sk_…")
clients = fada.crm.list_clients()Java
Maven Centralcom.fadadz:fada-sdk:0.1.0var fada = FadaClient.builder()
.apiKey("crew_sk_…").build();
var clients = fada.crm.listClients(null);Source, per-language READMEs and the OpenAPI spec live in the open-source SDK repo.
fada-api on GitHubAuthentication & scopes
Every request carries an API key as a Bearer token. Each key is bound to a single workspace and is fully tenant-isolated — it can never read or write another workspace's data.
Authorization: Bearer crew_sk_…Endpoints are gated by per-endpoint scopes. A read call needs the matching :read scope; a mutation needs :write. Grant only what an integration needs.
Messaging
channels:readchannels:writemessages:readmessages:writeMeetings & calendar
meetings:readmeetings:writeevents:readevents:writeCRM
crm:readcrm:writeKanban tasks
tasks:readtasks:writeFiles & users
files:readfiles:writeusers:readusers:writeMore
reminders:writepolls:writemembers:writeworkspaces:readRate limits
Limits scale with your plan. Writes are capped per minute per key (over-limit calls get an HTTP 429); list endpoints accept an optional ?limit= whose default and maximum scale by plan.
| Plan | Writes / min | Max list size |
|---|---|---|
| Free | 60 | 100 |
| Business | 300 | 500 |
| Enterprise | 1,200 | 1,000 |
API reference
All paths are relative to /api/v1 and require a Bearer key. Expand a group to see its endpoints; the full machine-readable contract lives in the OpenAPI spec.
CRMscopes: crm:read / crm:write
GET/crm/clientsList clients (query: stage, leadStatus, q, ownerUserId)POST/crm/clientsCreate a client (name required; description, phone, email, website, contacts, stage, tags, ownerUserId, leadStatus, source, priority)GET/crm/clients/{clientId}Get one clientPATCH/crm/clients/{clientId}Update a clientDELETE/crm/clients/{clientId}Archive a clientPOST/crm/clients/{clientId}/lead-moveMove a lead between new / contacted / qualified (leadStatus required, position)POST/crm/clients/{clientId}/convertConvert lead → prospect, optionally opening a deal (createDeal, dealValue)GET/crm/clients/{clientId}/activitiesList logged notes, calls and emailsPOST/crm/clients/{clientId}/activitiesLog a note / call / email (kind, body required, contactId, occurredAt)GET/crm/clients/{clientId}/dealsDeals for a clientGET/crm/clients/{clientId}/remindersList follow-up remindersPOST/crm/clients/{clientId}/remindersSchedule a follow-up (preset or remindAt, note, contactId)GET/crm/boardsProspection pipelines and their columnsGET/crm/dealsList deals (query: boardId, clientId)POST/crm/dealsCreate a deal (boardId & title required; columnId, clientId, yieldAmount, priority, closeDate, primaryContactId)PATCH/crm/deals/{dealId}Move or edit a dealPOST/crm/deals/{dealId}/outcomeMark won / lost / open (outcome required, lostReason)GET/crm/pipelinePipeline totals and per-stage breakdownGET/crm/membersWorkspace members for owner assignmentKanban tasksscopes: tasks:read / tasks:write
GET/tasks/boardsList boards (query: kind = tasks | project | prospection)POST/tasks/boardsCreate a board (name required; columns, kind, description, clientId)GET/tasks/boards/{boardId}Get a boardPATCH/tasks/boards/{boardId}Update a board (name, columns, kind, description)DELETE/tasks/boards/{boardId}Archive a boardGET/tasks/boards/{boardId}/tasksList the cards on a boardPOST/tasks/boards/{boardId}/tasksCreate a card (title required; description, columnId, priority, dueAt, remindAt, labels, assignees, subtasks)GET/tasks/{taskId}Get a cardPATCH/tasks/{taskId}Update a card / move lane (title, description, priority, columnId, dueAt, remindAt, labels, assignees, subtasks)DELETE/tasks/{taskId}Delete a cardPOST/tasks/{taskId}/moveDrag within / between lanes (columnId, prevId, nextId)POST/tasks/{taskId}/completeMark done / reopen (completed: true | false)Messaging, calendar, meetings, files & userssee the OpenAPI spec for full detail
- Messaging — channels, threads, messages, reactions, pins and forwards (channels:*, messages:*).
- Calendar — events and RSVPs (events:*).
- Meetings — schedule, invite and manage meetings (meetings:*).
- Files — upload and read files (files:*).
- Users — members, presence and the key's own status (users:*).
MCP & AI agents
Fada ships Model Context Protocol (MCP) servers, so AI agents like Claude and Cursor can drive your workspace directly — post messages, schedule meetings, move deals and update tasks — using the same scoped keys as the REST API.
mcp/index.mjsGeneral server — chat, meetings, calendar, files, reminders and polls.
mcp/crm.mjsCRM server — clients, leads, deals, activity and follow-ups.
Point your MCP client at a server with a workspace API key, then explore the tools. The same operations are described in the OpenAPI spec.
Start building
Create a workspace, generate a scoped API key, and automate your team's work in minutes.