Zocdoc · Schema

Appointment

A Zocdoc appointment booking request body (AppointmentData). Represents the patient, provider-location, visit reason, and timeslot for a new appointment.

HealthcareAppointmentsBookingProvidersInsuranceTelehealthScheduling

Properties

Name Type Description
start_time string Date and time of the appointment in ISO-8601 format with timezone offset. Must be a valid start_time from /v1/provider_locations/availability.
visit_reason_id string Zocdoc visit reason ID. Must be accepted by the provider.
provider_location_id string Zocdoc composite provider-location ID.
patient_type string Whether the patient is new to or existing at the provider's practice.
notes string Optional patient notes. 100 character maximum.
patient object
View JSON Schema on GitHub

JSON Schema

zocdoc-appointment.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-developer.zocdoc.com/schemas/appointment",
  "title": "Appointment",
  "description": "A Zocdoc appointment booking request body (AppointmentData). Represents the patient, provider-location, visit reason, and timeslot for a new appointment.",
  "type": "object",
  "required": ["start_time", "visit_reason_id", "provider_location_id", "patient", "patient_type"],
  "properties": {
    "start_time": {
      "type": "string",
      "format": "date-time",
      "description": "Date and time of the appointment in ISO-8601 format with timezone offset. Must be a valid start_time from /v1/provider_locations/availability.",
      "example": "2022-04-27T09:00:00-04:00"
    },
    "visit_reason_id": {
      "type": "string",
      "description": "Zocdoc visit reason ID. Must be accepted by the provider.",
      "example": "pc_FRO-18leckytNKtruw5dLR"
    },
    "provider_location_id": {
      "type": "string",
      "description": "Zocdoc composite provider-location ID.",
      "example": "pr_abc123-def456_wxyz7890|lo_abc123-def456_wxyz7890"
    },
    "patient_type": {
      "type": "string",
      "enum": ["new", "existing"],
      "description": "Whether the patient is new to or existing at the provider's practice.",
      "example": "new"
    },
    "notes": {
      "type": "string",
      "maxLength": 100,
      "description": "Optional patient notes. 100 character maximum."
    },
    "patient": {
      "$ref": "#/$defs/Patient"
    }
  },
  "$defs": {
    "Patient": {
      "title": "Patient",
      "description": "Patient demographic and insurance information required to book an appointment.",
      "type": "object",
      "required": ["first_name", "last_name", "date_of_birth", "sex_at_birth", "phone_number", "email_address", "patient_address"],
      "properties": {
        "patient_id": {
          "type": "string",
          "description": "The Zocdoc ID of the patient (if returning)."
        },
        "developer_patient_id": {
          "type": "string",
          "description": "Third-party developer's own patient identifier."
        },
        "first_name": {
          "type": "string",
          "description": "Patient's first name."
        },
        "last_name": {
          "type": "string",
          "description": "Patient's last name."
        },
        "date_of_birth": {
          "type": "string",
          "format": "date",
          "description": "Patient's date of birth in YYYY-MM-DD format."
        },
        "sex_at_birth": {
          "type": "string",
          "enum": ["male", "female"],
          "description": "Patient's sex assigned at birth."
        },
        "phone_number": {
          "type": "string",
          "pattern": "^[2-9][0-9]{2}[2-9][0-9]{6}$",
          "description": "Unformatted 10-digit phone number. First and fourth digits cannot be 0 or 1.",
          "example": "9999999999"
        },
        "email_address": {
          "type": "string",
          "format": "email",
          "description": "Patient's email address.",
          "example": "test@example.com"
        },
        "patient_address": {
          "$ref": "#/$defs/PatientAddress"
        },
        "insurance": {
          "$ref": "#/$defs/PatientInsurance"
        },
        "gender": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "female_at_birth",
              "male_at_birth",
              "cisgender",
              "genderfluid",
              "genderqueer",
              "intersex",
              "non_binary",
              "transgender_man",
              "transgender_woman",
              "prefer_not_to_say",
              "none_apply"
            ]
          },
          "description": "Patient's self-identified gender(s). none_apply and prefer_not_to_say must be used independently."
        }
      }
    },
    "PatientAddress": {
      "title": "Patient Address",
      "type": "object",
      "required": ["address1", "city", "state", "zip_code"],
      "properties": {
        "address1": {
          "type": "string",
          "description": "Street address line 1."
        },
        "address2": {
          "type": "string",
          "description": "Street address line 2."
        },
        "city": {
          "type": "string",
          "description": "City."
        },
        "state": {
          "type": "string",
          "minLength": 2,
          "maxLength": 2,
          "description": "Two-letter US state code.",
          "example": "NY"
        },
        "zip_code": {
          "type": "string",
          "pattern": "^[0-9]{5}$",
          "description": "5-digit ZIP code.",
          "example": "36925"
        }
      }
    },
    "PatientInsurance": {
      "title": "Patient Insurance",
      "type": "object",
      "properties": {
        "insurance_plan_id": {
          "type": "string",
          "description": "Zocdoc insurance plan ID.",
          "example": "ip_2224"
        },
        "insurance_group_number": {
          "type": "string",
          "description": "Patient's insurance group number."
        },
        "insurance_member_id": {
          "type": "string",
          "description": "Patient's insurance card member ID."
        },
        "is_self_pay": {
          "type": "boolean",
          "description": "Indicates if the patient is self-paying."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/zocdoc-appointment"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.