> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.slotflow.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.slotflow.dev/_mcp/server.

# API Overview

> Base URL, authentication, error format, and conventions for the Slotflow API.

The Slotflow API is a REST API that lets AI agents check availability, book appointments, and manage the full booking lifecycle.

## Base URL

All API requests should be made to:

```
https://api.slotflow.dev/v1
```

## Authentication

Every request requires an API key passed as a Bearer token:

```
Authorization: Bearer sk_live_your_api_key
```

Get your API key from the [Slotflow Dashboard](https://app.slotflow.dev). See the [Authentication guide](/authentication) for security best practices.

## Request format

* Use `Content-Type: application/json` for request bodies
* All timestamps are ISO 8601 UTC (e.g. `2026-03-15T14:00:00.000Z`)
* Dates are `YYYY-MM-DD` format (e.g. `2026-03-15`)

## Response format

Successful responses return JSON with the resource data:

```json
{
  "id": "bk_a1b2c3",
  "human_id": "hu_x1y2z3",
  "starts_at": "2026-03-15T14:00:00.000Z",
  "ends_at": "2026-03-15T14:30:00.000Z",
  "status": "confirmed"
}
```

## Error format

All errors follow a consistent structure:

```json
{
  "error": {
    "code": "SLOT_UNAVAILABLE",
    "message": "This time slot has already been booked.",
    "status": 409
  }
}
```

Always switch on `error.code` (stable), not `error.message` (may change).

| Code                    | Status | Meaning                                   |
| ----------------------- | ------ | ----------------------------------------- |
| `UNAUTHORIZED`          | 401    | Missing or invalid API key                |
| `LIMIT_REACHED`         | 402    | Booking or resource limit hit             |
| `NOT_FOUND`             | 404    | Resource does not exist                   |
| `SLOT_UNAVAILABLE`      | 409    | Time slot already booked                  |
| `OUTSIDE_WORKING_HOURS` | 422    | Requested time is outside availability    |
| `INVALID_DURATION`      | 422    | Duration not in allowed meeting durations |
| `SCHEDULE_BLOCKED`      | 422    | Time is blocked by a schedule override    |
| `VALIDATION_ERROR`      | 422    | Missing or invalid request fields         |

See [Error Handling](/error-handling) for detailed agent strategies for each error.

## SDKs

* [Node.js SDK](/sdk-node) — `npm install slotflow`
* [Python SDK](/sdk-python) — coming soon