Personal API

Apparently my coffee order needed an API.

I made five small endpoints so people and AI agents don't have to guess how to book time with me, get hands-on AI help, order my coffee, check my shirt size, or send a question.

What it knows

Here are the five things it knows.

Book a quick intro or a one-hour working session, get my coffee right, check my shirt size, or ask about the API.

GET

Availability

See when I'm free and book a 30-minute intro.

/api/personal/availability

GET

1-hour AI consultation

One hour to work through an AI setup or workflow for you or your team.

/api/personal/ai-consultation

GET

Coffee order

A sugar-free breve, iced in summer if you want, and never after 1 p.m.

/api/personal/coffee-order

GET

Gift ideas

XL shirts and jackets, plus a few gifts I'd actually use.

/api/personal/gift-ideas

GET

Contact

Send questions or corrections here. You can also tell me what the API is missing.

/api/personal/contact

Under the hood

Open the full catalog.

The catalog lists every endpoint and the shape of each response. Open it if you want to connect an agent or build something with the data.

{
  "api": "personal-api",
  "version": "2026-09-03.1",
  "auth": {
    "required": false,
    "note": "No token is required. Everything returned by this API is public."
  },
  "endpoints": [
    {
      "id": "availability",
      "path": "/api/personal/availability",
      "dataSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "scope",
          "bookingUrl",
          "notes"
        ],
        "properties": {
          "scope": {
            "type": "string"
          },
          "bookingUrl": {
            "type": "string",
            "format": "uri"
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "id": "ai-consultation",
      "path": "/api/personal/ai-consultation",
      "dataSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "scope",
          "durationMinutes",
          "bookingUrl",
          "focusAreas",
          "notes"
        ],
        "properties": {
          "scope": {
            "type": "string"
          },
          "durationMinutes": {
            "type": "number"
          },
          "bookingUrl": {
            "type": "string",
            "format": "uri"
          },
          "focusAreas": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "id": "coffee-order",
      "path": "/api/personal/coffee-order",
      "dataSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "default",
          "seasonal",
          "hardRules"
        ],
        "properties": {
          "default": {
            "type": "string"
          },
          "seasonal": {
            "type": "string"
          },
          "hardRules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "id": "gift-ideas",
      "path": "/api/personal/gift-ideas",
      "dataSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "sizes",
          "likes"
        ],
        "properties": {
          "sizes": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "shirt",
              "jacket"
            ],
            "properties": {
              "shirt": {
                "type": "string"
              },
              "jacket": {
                "type": "string"
              }
            }
          },
          "likes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "id": "contact",
      "path": "/api/personal/contact",
      "dataSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "email",
          "purpose"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email"
          },
          "purpose": {
            "type": "string"
          }
        }
      }
    }
  ]
}

One response

Yes, the coffee cutoff is real.

This endpoint returns the order and the limits. Anything else is a guess.

{
  "api": "personal-api",
  "version": "2026-09-03.1",
  "endpoint": "coffee-order",
  "visibility": "public",
  "updatedAt": "2026-09-03",
  "humanUrl": "https://aaronmakelky.com/tools/personal-api",
  "source": "src/data/personalApi.js",
  "summary": "A sugar-free breve, iced in summer if you want, and never after 1 p.m.",
  "data": {
    "default": "sugar-free breve",
    "seasonal": "can be iced in the summer",
    "hardRules": [
      "never after 1 p.m."
    ]
  },
  "dataSchema": {
    "type": "object",
    "additionalProperties": false,
    "required": [
      "default",
      "seasonal",
      "hardRules"
    ],
    "properties": {
      "default": {
        "type": "string"
      },
      "seasonal": {
        "type": "string"
      },
      "hardRules": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    }
  }
}

Start here

Bring the AI job you want to get unstuck.

The one-hour consultation is for a personal setup or team workflow. Bring the real job, including any automation or agent tool already involved, and we'll work through what to try next.