# LifeButler API

> Read and change your LifeButler workspaces from your own code, automations and AI assistants – REST API and MCP server.

Connect your own code, automations and AI assistants to LifeButler. The API reaches the same things you use in the app – **calendar, tasks, lists, documents, smart search and the butler** – for the workspaces you choose.

> The API and the MCP server come with **LifeButler Pro** (your personal space and 1 shared workspace) and **Premium** (your personal space and 5 shared workspaces). Only **owners and admins** of a workspace can use the API for it.

## What you can build

- **Home automation** – put "Milch" on the shopping list when the fridge sensor says so (Home Assistant, n8n, Make).
- **Calendar sync** – push appointments from a club or school system into the family calendar.
- **Paperless household** – upload scans from a folder; LifeButler files them and reads out amounts, deadlines and dates.
- **AI assistants** – let Claude, ChatGPT or Cursor read your week, add tasks and ask the butler, through the [MCP server](/developers/mcp).

## Quickstart

**1. Create a key.** In the app: *Settings → API & MCP → Create key*. Pick the workspaces and permissions, copy the key (`lb_live_…`). It is shown only once.

**2. Find your workspaces.**

```bash
curl https://api.lifebutler.io/v1/workspaces \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"
```

```json
{
  "data": [
    { "id": "Xk2pQ8sLr1", "name": "", "type": "personal", "personal": true, "role": "owner", "aiEnabled": true, "status": "active" },
    { "id": "f8Hn3wQz0a", "name": "Familie Berger", "type": "family", "personal": false, "role": "admin", "aiEnabled": true, "status": "active" }
  ]
}
```

**3. Do something useful.**

```bash
# What's on this week?
curl "https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a/events?from=2026-11-16&to=2026-11-22" \
  -H "Authorization: Bearer $LIFEBUTLER_KEY"

# Put two things on the shopping list
curl -X POST https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a/lists/L1st1d/items \
  -H "Authorization: Bearer $LIFEBUTLER_KEY" -H "Content-Type: application/json" \
  -d '{"items": ["Milch", "Eier (10)"]}'

# Ask the butler
curl -X POST https://api.lifebutler.io/v1/workspaces/f8Hn3wQz0a/butler \
  -H "Authorization: Bearer $LIFEBUTLER_KEY" -H "Content-Type: application/json" \
  -d '{"question": "Wann ist die nächste Elternversammlung?"}'
```

## Basics

| | |
|---|---|
| Base URL | `https://api.lifebutler.io/v1` |
| MCP server | `https://api.lifebutler.io/mcp` (Streamable HTTP) |
| Auth | `Authorization: Bearer lb_live_…` – see [Authentication](/developers/authentication) |
| Format | JSON in and out (documents: raw file bytes) |
| Times | ISO 8601 with the Europe/Berlin offset – see [Conventions](/developers/conventions) |
| Spec | [OpenAPI 3.1](/developers/openapi.json) |
| Limits | 120 requests per minute and key |
| Hosting | Germany (Frankfurt); AI only in the EU |

## Building with an AI coding assistant?

Give it the [LLM prompt](/developers/llm-prompt). Every page of these docs is also available as Markdown – add `.md` to the address (e.g. [/developers/authentication.md](/developers/authentication.md)) – and [/developers/llms.txt](/developers/llms.txt) lists them all.

## Next steps

- [Authentication & scopes](/developers/authentication)
- [Workspaces, roles & security](/developers/access)
- [Conventions: times, errors, paging, limits](/developers/conventions)
- [MCP server for Claude, ChatGPT, Cursor & co.](/developers/mcp)
- [Recipes](/developers/recipes)
- [API reference](/developers/reference)
