AIM The American Institute for Michaels

Developer Reference

The Institute API.

The Institute maintains a small public JSON service for the programmatic determination of Michael status. The endpoint is offered free of charge and without registration, in keeping with the Institute's view that nomenclature ought not to be paywalled.

I Endpoints

The Institute presently exposes three stable JSON endpoints:

GET https://michaelinstitute.org/api/is-michael.json
GET https://michaelinstitute.org/api/chapters.json
GET https://michaelinstitute.org/api/leaders.json

Each endpoint accepts no parameters; the full corresponding roster is returned in a single response. Clients are expected to perform their own case-insensitive comparisons after Unicode normalization where the matter calls for it.

is-michael.json

The principal endpoint. Returns the standardized list of accepted variants of the canonical given name and the register of honorary forms.

chapters.json

The directory of chartered chapters, with coordinator, region, and cadence. Useful for building local listings, calendars, or chapter-finder utilities.

leaders.json

The current officers of the Institute, with role and biography. Portrait imagery is not exposed via the API; printed materials may request originals from the Recording Secretary.

II Example Request

$ curl -s https://michaelinstitute.org/api/is-michael.json | jq .

III Example Response

{
  "$schema": "https://michaelinstitute.org/api/is-michael.schema.json",
  "version": "1.0.0",
  "institute": "The American Institute for Michaels",
  "jurisdiction": "global",
  "authoritative": true,
  "revised": "2026-05-09",
  "accepted": [
    "Michael",
    "Mike",
    "Mikhail",
    "Michał",
    "Mihály",
    "Mikael",
    "Mícheál",
    "Miguel",
    "Michele",
    "Michel",
    ...
  ],
  "honorary": ["Mick", "Maya", ...],
  "notes": { ... }
}

IV Sample Implementations

JavaScript

const isMichael = async (name) => {
  const r = await fetch('https://michaelinstitute.org/api/is-michael.json');
  const { accepted } = await r.json();
  const norm = (s) => s.normalize('NFC').toLowerCase();
  return accepted.some((v) => norm(v) === norm(name));
};

await isMichael('Mihály'); // → true
await isMichael('Brad');    // → false

Python

import requests, unicodedata

def is_michael(name: str) -> bool:
    data = requests.get("https://michaelinstitute.org/api/is-michael.json").json()
    norm = lambda s: unicodedata.normalize("NFC", s).casefold()
    return any(norm(v) == norm(name) for v in data["accepted"])

is_michael("Mikhail")   # → True
is_michael("Geoffrey")  # → False

Shell

curl -s https://michaelinstitute.org/api/is-michael.json \
  | jq -r '.accepted[]' \
  | grep -i -x "$1" >/dev/null && echo "Michael." || echo "Not a Michael."

V Service-Level Statement

The endpoint is statically generated and served from the Institute's primary infrastructure. It is intended to be cacheable and is served with a one-hour cache header. The Institute does not log requests to this endpoint and does not impose a rate limit; however, clients making more than one hundred thousand requests per day are respectfully asked to maintain a local cache, in keeping with good engineering practice.

The endpoint's response shape is versioned. Breaking changes will be announced at least ninety days in advance via the quarterly bulletin. The current version is 1.0.0.

VI Disclaimer

The endpoint is provided for reference only. The Institute reserves the sole right to grant, withhold, or revoke membership status, and the Standing Committee on Notability shall in all cases supersede any automated determination. Bearing the canonical given name is necessary but not sufficient for fellowship; see the fellowship application for further detail.