Family Office Registry API

Family Office Registry API as documented publicly: 6 operations. Contract generated from the documentation by API Evangelist (2026-11-07); not the provider's own document.

GitHub OpenAPI

Operations 6

GET /api/changes Every change to a published record, dated: officers registered and gone, role changes, firms new and withdrawn, reclassifications, renames, seat moves, websites, external investing #
GET /api/entity/{id} The full record: named roles with a source each, organisational contact channels, address, the register purpose, the classification source, external investing with its source and q #
POST /api/export Returns CSV. On the annual plan the monthly cap is the whole published set; every export is logged and every row carries the subscription's stamp. #
GET /api/mcp GET /api/mcp #
GET /api/me GET /api/me #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/familyofficeregistry-com:familyofficeregistry-com-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

familyofficeregistry-com-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Family Office Registry API
  version: '2026-11-07'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-07: 6 operation(s) read from 2 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; Family Office Registry has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 2
    documentation: 4
    pages-with-code: 2
    pages-read: 2
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-07'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://familyofficeregistry.com/developers
  - https://familyofficeregistry.com/mcp
paths:
  /api/changes:
    get:
      operationId: get_api_changes
      tags:
      - Api
      summary: 'Every change to a published record, dated: officers registered and gone, role changes, firms new and withdrawn, reclassifications,
        renames, seat moves, websites, external investing, AUM — each with it'
      x-source: https://familyofficeregistry.com/developers
      parameters:
      - name: since
        in: query
        required: false
        schema:
          type: string
        description: ISO date, default 30 days ago
      - name: until
        in: query
        required: false
        schema:
          type: string
        description: Optional upper bound ISO date
      - name: kind
        in: query
        required: false
        schema:
          type: string
        description: comma‑separated event kinds
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: 1‑based page number
      - name: size
        in: query
        required: false
        schema:
          type: integer
        description: Capped at 500
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiChangesResponse'
      x-evidence:
        kind: documentation
  /api/entity/{id}:
    get:
      operationId: get_api_entity_id
      tags:
      - Api
      summary: 'The full record: named roles with a source each, organisational contact channels, address, the register purpose, the classification
        source, external investing with its source and quote, the source lis'
      x-source: https://familyofficeregistry.com/developers
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiEntityIdResponse'
      x-evidence:
        kind: documentation
  /api/export:
    post:
      operationId: post_api_export
      tags:
      - Api
      summary: Returns CSV. On the annual plan the monthly cap is the whole published set; every export is logged and every row carries the subscription's
        stamp.
      x-source: https://familyofficeregistry.com/developers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiExportRequest'
      responses:
        '201':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostApiExportResponse'
      x-evidence:
        kind: documentation
  /api/mcp:
    get:
      operationId: get_api_mcp
      tags:
      - Api
      summary: GET /api/mcp
      x-source: https://familyofficeregistry.com/mcp
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s https://familyofficeregistry.com/api/mcp \n That returns the descriptor: what this server is, what the open tier includes,\
          \ and where the\n skill lives. Nothing there needs a key. \n What your assistant can then do \n search_registry Search by name, country,\
          \ canton or\n classification, one page of results at a time. Listing firms by whether they allocate to\n external funds needs a subscription\
          \ k"
  /api/me:
    get:
      operationId: get_api_me
      tags:
      - Api
      summary: GET /api/me
      x-source: https://familyofficeregistry.com/developers
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiMeResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -H \"Authorization: Bearer fo_live_…\" https://familyofficeregistry.com/api/me \n For an assistant rather than a script,\
          \ there is an MCP server and a\n setup page for it. Same records, same key. \n Endpoints \n GET /api/me The workspace: plan, term, the\
          \ export meter, the count of changes in the last 30 days, and the canton facet — shipped so a client never walks every page of search\
          \ to rebuild it. "
  /api/search:
    get:
      operationId: get_api_search
      tags:
      - Api
      summary: One page of rows and the total.
      x-source: https://familyofficeregistry.com/developers
      parameters:
      - name: q
        in: query
        required: false
        schema:
          type: string
        description: Free text over every field
      - name: country
        in: query
        required: false
        schema:
          type: string
        description: CH · LI · AT · DE · AE · US
      - name: canton
        in: query
        required: false
        schema:
          type: string
        description: Swiss canton code
      - name: type
        in: query
        required: false
        schema:
          type: string
        description: SFO · MFO · intermediary
      - name: alloc
        in: query
        required: false
        schema:
          type: string
        description: fund-allocator · mixed · direct-only · no-external-investing
      - name: page
        in: query
        required: false
        schema:
          type: integer
        description: 1‑based page number
      - name: size
        in: query
        required: false
        schema:
          type: integer
        description: Default 25, capped at 50
      - name: sort
        in: query
        required: false
        schema:
          type: string
        description: name · seat · class · verified · roles
      - name: dir
        in: query
        required: false
        schema:
          type: integer
        description: 1 · -1
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApiSearchResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    GetApiChangesResponse:
      type: object
      properties:
        since:
          type: string
        until:
          type: string
        total:
          type: integer
        page:
          type: integer
        size:
          type: integer
        has_more:
          type: boolean
        events:
          type: array
          description: list of change events
        kinds:
          type: object
          description: map of kind codes to descriptions
    GetApiEntityIdResponse:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        key_people:
          type: array
          description: list of people with role and source
        org_contact:
          type: object
          description: contact channels
        sources:
          type: array
          description: source list
        verification_notes:
          type: string
    PostApiExportRequest:
      type: object
      properties:
        ids:
          type: array
          description: array of record IDs, up to 500 per request
      required:
      - ids
    PostApiExportResponse:
      type: object
      properties:
        body:
          type: string
          description: text/csv content
    GetApiMeResponse:
      type: object
      properties:
        plan:
          type: string
        access_until:
          type: string
          format: date
        export:
          type: object
          properties:
            cap:
              type: integer
            spent:
              type: integer
            window:
              type: string
        changes_30d:
          type: integer
        cantons:
          type: array
          items:
            type: string
    GetApiSearchResponse:
      type: object
      properties:
        total:
          type: integer
        page:
          type: integer
        size:
          type: integer
        sort:
          type: string
          description: null if not sorted
        dir:
          type: integer
        records:
          type: array
          description: list of record objects
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api