# Apparently my coffee order needed an API.

Source: https://aaronmakelky.com/tools/personal-api
Last updated: 2026-09-03

Aaron Makelky's Personal API gives people and AI agents public JSON for booking a 30-minute intro or one-hour AI consultation, ordering his coffee, checking gift ideas, and asking API questions.

Personal 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.

Base URL

`/api/personal`

No login required. If a fact is missing, don't guess.

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`

[Open JSON](/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`

[Open JSON](/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`

[Open JSON](/api/personal/coffee-order)

GET

### Gift ideas

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

`/api/personal/gift-ideas`

[Open JSON](/api/personal/gift-ideas)

GET

### Contact

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

`/api/personal/contact`

[Open JSON](/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.

[Open the full API](/api/personal) [Ask me about it](mailto:aaron+api@aaronmakelky.com)

```
{
  "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.

[Book a 1-hour AI consultation](https://cal.com/aaron-makelky/1-hour-ai) [Book a 30-minute intro](https://cal.com/aaron-makelky/intro)
