Really Fast CRM
EN
Try the demo Start free trial

Developers

The Really Fast CRM API

Add leads from your forms, sync deals with other tools, or script your own reports. A plain REST API with JSON, and a key per workspace.

Keys

  • Make a key in the app: Integrations → REST API, give it a name (for example “Zapier”), and copy it. It’s shown once.
  • Send it in every request: Authorization: Bearer rfc_…
  • A key acts as you, in that workspace only. Changes show in each record’s history under your name.
  • A key can’t delete anything, send email, or change settings, members or billing.
  • It stops working at once when you revoke it, when you leave the workspace, or when the workspace is deleted. Owners can revoke any key in their workspace.
  • Up to 120 requests a minute per key. When the free trial ends without a subscription, reads still work and writes return 403.

Base address

https://app.reallyfastcrm.com/api/v1

Example

curl -X POST https://app.reallyfastcrm.com/api/v1/deals \
  -H "Authorization: Bearer $RFCRM_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Website redesign", "value": 12000, "currency": "USD"}'

Endpoints

MethodPathWhat it does
GET/meThe key’s workspace and member. Use it to test a key.
GET/peoplePeople, newest first. ?limit= up to 50.
POST/peoplename, optional email, phone, job_title, company_id.
GET/people/{id}A person with their company, deals, open tasks and latest notes.
GET/companiesCompanies, newest first.
POST/companiesname, optional domain.
GET/companies/{id}A company with its people, deals, open tasks and latest notes.
GET/dealsDeals, newest first.
POST/dealstitle, optional value, currency (ISO code, default EUR), stage_id, person_id, company_id, expected_close (YYYY-MM-DD). Without a stage, it goes to the first stage of the first pipeline.
GET/deals/{id}A deal with its person, company, open tasks and latest notes.
PATCH/deals/{id}Any of stage_id, status (open, won, lost), lost_reason, value, expected_close.
GET/tasksTasks, newest first.
POST/taskstitle, optional type (call, meeting, email, todo), due_date, due_time (HH:MM), description, record_type and record_id, assignee_id.
POST/tasks/{id}/completeMarks a task done.
POST/notesrecord_type (person, company, deal), record_id, body (Markdown).
GET/pipelinesPipelines and their stages, with stage ids and open deals per stage.
GET/membersThe workspace’s members, with the ids to use as assignee_id.
GET/search?q=People, companies and deals whose name contains the text.
GET/todayYour day, as on the Today page: overdue tasks, tasks due today, deals that need something.

Errors and limits

Errors come back as JSON with a status code: {"error": "invalid", "message": "…"}, where the message says what to fix. 401: no valid key. 403: the trial has ended, or no access. 404: no such record in this workspace. 429: too many requests.

Using ChatGPT or Claude instead? They connect without a key: Use it from ChatGPT and Claude.

Try it on your own pipeline

Bring in your Pipedrive, HubSpot or spreadsheet export, and check the preview before anything is saved. Or try the live demo first, with no sign-up.

Start free trial Try the live demo

14 days free, no card. Then $5 per user a month, billed yearly.