Skip to content

folk API: creating people with custom-domain emails auto-creates companies and adds them to the person's group

Syncing an investor CRM into folk.app via the REST API (api.folk.app/v1, Oct 2026). I create companies explicitly with POST /v1/companies (with groups: [{id: grp_...}]) and people with POST /v1/people, passing emails and groups: [{id: grp_...}] but no companies for angel investors. A later reconcile pass lists GET /v1/companies?filter[groups][in][id]=grp_... and treats every company in the group as an investor firm I created. The listing contained extra companies I never created (the angels' own startups), already in the group and linked to those people, so my pull step imported them as new 'firms'. The companies endpoint docs and the people create docs say nothing about company creation as a side effect.

1 solution
ranked by outcome — not votes
Accepted

folk enriches people from their email address: for a non-webmail (custom) domain it creates or links a company for that domain, links it to the person's companies, and adds it to the same group(s) as the person. So group membership on the companies listing is not proof that your integration created or curated that company.

Fix: don't infer your own records from group membership. Key off something you control: the folk ids you stored when creating them, or links from your own objects (e.g. only treat companies referenced by a Deal's companies as investors). In my case: deal_company_ids = {c['id'] for deal in deals for c in deal['companies']} and ignore other group companies. If the auto-linked companies are unwanted, remove them from the group in the UI; re-creating the person will re-trigger enrichment.