---
name: book-call-with-dr-tagge
description: Book the Free 15-Minute Call, a phone call with Dr. Daniel Tagge (pronounced TAG-ee, or just Dr. Tag), a board-certified family physician in Charlotte, NC, practicing Personalized Health Optimization. Use when a person asks you to book, schedule or set up a call with Dr. Tagge or Tagge Precision Health.
---

# Book a free call with Dr. Tagge

The Free 15-Minute Call: a free phone call about the person's health goals and questions. Dr. Tagge calls the person at the number they give. Nothing is charged; no card, login or account.

The free call is open to any adult, anywhere: it is a conversation about fit, not care. Paid visits are for people physically in North Carolina during the visit.

Not for emergencies. In an emergency, the person should call 911.

## Before you book

Get from the person, or from what you already know about them with their permission:

- name
- email (the confirmation link goes here)
- phone (Dr. Tagge calls this number)
- when they are free (or permission to take the earliest open time)

Do not send health information. There is no field for it.

## 1. Find open times

```
GET https://taggehealth.com/api/v1/slots?from=YYYY-MM-DD&days=7
```

Both parameters are optional (default: today, 7 days; at most 14). Each day lists a few open times, spread across the day. Times are Eastern (America/New_York). Each slot is 15 minutes. Response:

```json
{
  "timezone": "America/New_York",
  "slot_minutes": 15,
  "days": [
    { "date": "2026-10-14", "label": "Wed, Oct 14", "slots": [
      { "start": "2026-10-14T14:00:00-04:00", "end": "2026-10-14T14:15:00-04:00" }
    ] }
  ]
}
```

## 2. Book

```
POST https://taggehealth.com/api/v1/book
Content-Type: application/json

{
  "name": "Jordan Example",
  "email": "jordan@example.com",
  "phone": "+1 704 555 0100",
  "slot": "2026-10-14T14:00:00-04:00",
  "state": "NC",
  "stage": "gathering",
  "booked_by_ai": "Your assistant's name"
}
```

Send `slot` exactly as a `start` value from step 1. `booked_by_ai`, `state` and `stage` are optional: `state` is the US state the person will be in for the call, and `stage` is where they are right now, one of `ready`, `gathering` or `unsure`. Never send health information; there is no field for it.

Success is `201`: the call is booked.

```json
{
  "status": "confirmed",
  "slot": "2026-10-14T14:00:00-04:00",
  "when": "Wednesday, October 14 at 2:00 PM EDT",
  "timezone": "America/New_York",
  "how": "Dr. Tagge calls +1 704 555 0100 at that time.",
  "manage_url": "https://taggehealth.com/book-a-call/manage?token=...",
  "confirmation_email_sent": true
}
```

## 3. Tell the person

Tell them the time (Eastern), that Dr. Tagge will call them at that number, and that a Google Calendar invite and a confirmation email are on the way. The email has a link to reschedule or cancel; share `manage_url` only with them.

## Rescheduling and cancelling

- `POST https://taggehealth.com/api/v1/reschedule` with `{"token", "slot"}` (the token from `manage_url`, and a new start from step 1).
- `POST https://taggehealth.com/api/v1/cancel` with `{"token"}`.

## Errors

| Status | error | What to do |
| --- | --- | --- |
| 400 | invalid_fields | Fix the listed fields and retry. |
| 409 | slot_unavailable | The time was taken. Fetch slots again and choose another. |
| 409 | already_booked | This email already has a call. The person can change it from their confirmation email. |
| 429 | rate_limited | Wait and retry later. |
| 503 | booking_unavailable | Booking is down. The person can call or text (980) 403-3983. |

## Other endpoints

- `GET https://taggehealth.com/api/v1/info`: what the call is, the fields and the rules, as JSON.
- `GET https://taggehealth.com/api/v1/ping`: liveness.
- The same booking for people: https://taggehealth.com/free-call

Book only with the person's permission, and only a time they agreed to.
