> ## Documentation Index
> Fetch the complete documentation index at: https://build.practicehub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one of care_plans



## OpenAPI

````yaml /openapi.json get /care_plans/{id}
openapi: 3.0.3
info:
  title: PracticeHub API
  version: 1.0.0
  description: >
    The canonical PracticeHub REST API. Every clinic account is a tenant
    addressed by the host the practice signs in on:
    `https://{clinic}.{region}.practicehub.io` (region host `neptune` London,
    `mercury` Frankfurt, `vulcan` Ohio, `jupiter` Singapore, `apollo` Sydney).


    ## Filtering

    List endpoints accept `?attribute=operator:value` with operators `eq`, `ne`,
    `gt`, `gte`, `lt`, `lte`, `null`, `not-null`, `like`, `contains`, `in`,
    `not-in`, `between` (`null`/`not-null` take no value; `in`, `not-in`,
    `between` take comma-separated values; `contains` is a case-insensitive
    substring match with no wildcards to escape). A value with no operator is an
    equality match. Only attributes marked filterable may be filtered (422
    otherwise).


    ## Metadata

    Every record carries an integrator-owned `metadata` object of string, number
    or boolean values (max 50 keys). Send `metadata` on create/update to merge
    keys (`null` removes a key) and filter with `?metadata[key]=operator:value`.


    ## Sorting & pagination

    `?sort=attr[,attr]:asc|desc` on sortable attributes; `?page=` and
    `?page_size=` (max 100). List responses wrap rows in `data` with `links` and
    `meta`.
servers:
  - url: https://{clinic}.{region}.practicehub.io/v3/api
    description: PracticeHub API — the host the practice signs in on
    variables:
      clinic:
        default: your-clinic
        description: The clinic subdomain
      region:
        default: neptune
        enum:
          - neptune
          - mercury
          - vulcan
          - jupiter
          - apollo
        description: >-
          The region host from the practice login URL: neptune (London), mercury
          (Frankfurt), vulcan (Ohio), jupiter (Singapore), apollo (Sydney)
security:
  - bearerAuth: []
tags:
  - name: Utility
    description: Liveness, identity and discovery
  - name: Availability
    description: Free, bookable slots — check before creating an appointment
  - name: Appointments
    description: The appointments resource
  - name: Appointment Types
    description: The appointment_types resource
  - name: Practitioner Availabilities
    description: The practitioner_availabilities resource
  - name: Resources
    description: The resources resource
  - name: Patients
    description: The patients resource
  - name: Tags
    description: The tags resource
  - name: Patient Tags
    description: The patient_tags resource
  - name: Numbers
    description: The numbers resource
  - name: Addresses
    description: The addresses resource
  - name: Patient Logs
    description: The patient_logs resource
  - name: Patient Log Tags
    description: The patient_log_tags resource
  - name: Files
    description: The files resource
  - name: Care Plans
    description: The care_plans resource
  - name: Clinical Notes
    description: Clinical notes on the patient record
  - name: Form Templates
    description: The form_templates resource
  - name: Invoices
    description: The invoices resource
  - name: Line Items
    description: The line_items resource
  - name: Payments
    description: The payments resource
  - name: Refunds
    description: The refunds resource
  - name: Payment Allocations
    description: The payment_allocations resource
  - name: Payment Methods
    description: The payment_methods resource
  - name: Billable Items
    description: The billable_items resource
  - name: Locations
    description: The locations resource
  - name: Practitioners
    description: The practitioners resource
  - name: Modalities
    description: The modalities resource
  - name: Referral Sources
    description: The referral_sources resource
  - name: Deleted Entities
    description: The deleted_entities resource
paths:
  /care_plans/{id}:
    get:
      tags:
        - Care Plans
      summary: Get one of care_plans
      operationId: get_care_plans
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: The resource
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/CarePlans'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    CarePlans:
      type: object
      properties:
        id:
          type: integer
          description: Unique id of the care plan.
        patient_id:
          type: integer
          description: >-
            The patient the plan belongs to (the account holder). Patients who
            share the plan are listed in members.
        name:
          type: string
          maxLength: 255
          description: The plan's name as the team and the patient see it.
        status:
          type: string
          enum:
            - active
            - inactive
            - paused
            - completed
            - cancelled
            - expired
          description: >-
            Where the plan stands: `active`, `inactive`, `paused`, `completed`,
            `cancelled` or `expired`. Set by PracticeHub — the team pauses or
            cancels a plan, and the nightly billing job completes or expires it.
        template_id:
          type: integer
          nullable: true
          description: >-
            The clinic's plan template this plan was started from, when there
            was one. Templates themselves are not listed.
        notes:
          type: string
          nullable: true
          description: The team's free-text notes on the plan.
        reschedule_limit:
          type: integer
          nullable: true
          description: >-
            How many times an appointment booked on this plan may be
            rescheduled. Null = no limit.
        maximum_amendment_notice:
          type: integer
          nullable: true
          description: >-
            The notice, in hours, a patient must give to change an appointment
            booked on this plan. Null = the account's default.
        reactivated_at:
          type: string
          format: date-time
          pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$
          example: '2026-09-09T10:30:00Z'
          description: >-
            When a lapsed plan was last brought back to active, UTC,
            YYYY-MM-DDTHH:MM:SSZ. Null if it never was. UTC,
            YYYY-MM-DDTHH:MM:SSZ.
          nullable: true
        updated_at:
          type: string
          description: When the plan last changed, UTC, YYYY-MM-DDTHH:MM:SSZ.
        created_at:
          type: string
          description: When the plan was created, UTC, YYYY-MM-DDTHH:MM:SSZ.
        billing:
          type: object
          nullable: true
          properties:
            billing_type:
              type: string
              enum:
                - payg
                - membership
                - installment
                - third_party
                - prepayment
                - postpay
            status:
              type: string
              enum:
                - active
                - inactive
                - paused
                - completed
                - cancelled
                - expired
            start_date:
              type: string
              format: date
              nullable: true
              example: '2026-09-01'
            interval_unit:
              type: string
              enum:
                - week
                - month
                - year
              nullable: true
            interval_length:
              type: integer
              nullable: true
              example: 1
            number_of_intervals:
              type: integer
              nullable: true
              example: 12
            is_ongoing:
              type: boolean
            total_price:
              type: string
              nullable: true
              example: '1200.00'
            invoicing_type:
              type: string
              enum:
                - per_visit
                - single_invoice
                - reconcile_on_renewal
            periods:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: integer
                  period_number:
                    type: integer
                  start_date:
                    type: string
                    format: date
                  end_date:
                    type: string
                    format: date
                  status:
                    type: string
                    enum:
                      - upcoming
                      - due
                      - partial
                      - paid
                      - overdue
                      - processing
                      - failed
                  collection_method:
                    type: string
                    nullable: true
                  amount_due:
                    type: string
                    nullable: true
                    example: '100.00'
                  amount_paid:
                    type: string
                    nullable: true
                    example: '100.00'
                  visits_expected:
                    type: integer
                    nullable: true
                  visits_used:
                    type: integer
                    nullable: true
                  rollover_visits:
                    type: integer
                    nullable: true
          description: >-
            How the plan is paid for: `billing_type` (`payg`, `membership`,
            `installment`, `third_party`, `prepayment`, `postpay`), its own
            `status`, `start_date` (the account's calendar day), the billing
            interval (`interval_unit`, `interval_length`, `number_of_intervals`;
            `is_ongoing` when it renews until cancelled), `total_price` (a
            2-decimal string in the account's currency) and `invoicing_type`.
            Null on a plan with no billing set up. Saved cards and payment
            references are never exposed. On GET /care_plans/{id} it also
            carries `periods[]` — each billing period's `period_number`,
            `start_date`, `end_date`, `status` (`upcoming`, `due`, `partial`,
            `paid`, `overdue`, `processing`, `failed`), `collection_method`,
            `amount_due`, `amount_paid` (2-decimal strings) and the visit
            allowance (`visits_expected`, `visits_used`, `rollover_visits`).
        schedules:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              patient_id:
                type: integer
                nullable: true
              name:
                type: string
                nullable: true
              start_date:
                type: string
                format: date
                example: '2026-09-01'
              status:
                type: string
                enum:
                  - active
                  - paused
                  - completed
                  - cancelled
              schedule_mode:
                type: string
                enum:
                  - scheduled
                  - ad_hoc
              appointment_type_ids:
                type: array
                items:
                  type: integer
                description: Appointment types the schedule counts. Empty = every type.
              auto_sync:
                type: boolean
              sync_status:
                type: string
                enum:
                  - synced
                  - syncing
                  - off_schedule
                  - failed
                  - needs_config
                nullable: true
              phases:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                    order:
                      type: integer
                    phase_type:
                      type: string
                      enum:
                        - fixed
                        - recurring
                    duration:
                      type: integer
                      nullable: true
                      description: How many intervals the phase runs for.
                    visit_interval:
                      type: string
                      enum:
                        - daily
                        - weekly
                        - bi-weekly
                        - tri-weekly
                        - 4-weekly
                        - 6-weekly
                        - 8-weekly
                        - monthly
                      nullable: true
                    modalities:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                          modality_id:
                            type: integer
                          visits_per_interval:
                            type: integer
                            nullable: true
              tracking:
                type: object
                nullable: true
                properties:
                  tracking_mode:
                    type: string
                    enum:
                      - schedule
                  is_ad_hoc:
                    type: boolean
                  total_planned:
                    type: integer
                    nullable: true
                  total_completed:
                    type: integer
                  has_recurring:
                    type: boolean
                  is_on_track:
                    type: boolean
                  last_visit:
                    type: string
                    format: date
                    nullable: true
                  next_booked:
                    type: string
                    format: date
                    nullable: true
                  modalities:
                    type: array
                    items:
                      type: object
                      properties:
                        modality_id:
                          type: integer
                        name:
                          type: string
                        total_planned:
                          type: integer
                          nullable: true
                        total_completed:
                          type: integer
                        has_recurring:
                          type: boolean
                        is_on_track:
                          type: boolean
                        phases:
                          type: array
                          items:
                            type: object
                            properties:
                              phase_id:
                                type: integer
                              order:
                                type: integer
                              interval:
                                type: string
                                enum:
                                  - daily
                                  - weekly
                                  - bi-weekly
                                  - tri-weekly
                                  - 4-weekly
                                  - 6-weekly
                                  - 8-weekly
                                  - monthly
                              duration:
                                type: integer
                              planned:
                                type: integer
                                nullable: true
                              completed:
                                type: integer
                              is_complete:
                                type: boolean
                              status:
                                type: string
                                enum:
                                  - complete
                                  - active
                                  - not_started
                              phase_type:
                                type: string
                                enum:
                                  - fixed
                                  - recurring
                              visits_per_interval:
                                type: integer
                                nullable: true
                              start_date:
                                type: string
                                format: date
                              end_date:
                                type: string
                                format: date
                              periods:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    index:
                                      type: integer
                                    start_date:
                                      type: string
                                      format: date
                                    end_date:
                                      type: string
                                      format: date
                                    expected:
                                      type: integer
                                      nullable: true
                                    completed:
                                      type: integer
                                    scheduled:
                                      type: integer
                                    unscheduled:
                                      type: integer
                                    status:
                                      type: string
                                    is_extension:
                                      type: boolean
          description: >-
            The plan's visit schedules — one per patient on the plan: `id`,
            `patient_id`, `name`, `start_date` (the account's calendar day),
            `status` and `schedule_mode` (`scheduled` = PracticeHub books the
            visits, `ad_hoc` = visits are booked as they come). On GET
            /care_plans/{id} each schedule also carries `appointment_type_ids`
            (the types it counts; empty = all), `auto_sync`, `sync_status`, its
            `phases[]` (`order`, `phase_type`, `duration` in intervals,
            `visit_interval`, and the `modalities[]` each phase covers with
            `visits_per_interval`) and `tracking` — phase-by-phase progress as
            the care plan widget shows it: `is_on_track`, `total_planned`,
            `total_completed`, `last_visit`, `next_booked`, and per modality the
            phases with their periods (`expected`, `completed`, `scheduled`,
            `is_extension`). Dates are the account's calendar days; `tracking`
            is null when it could not be computed.
        members:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              patient_id:
                type: integer
              status:
                type: string
                enum:
                  - active
                  - inactive
                  - removed
              schedule_override:
                type: boolean
          description: >-
            Every patient on the plan, the account holder included: `id`,
            `patient_id`, `status` (`active`, `inactive`, `removed`) and
            `schedule_override` (the member follows their own schedule rather
            than the plan's).
        services:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              modality_id:
                type: integer
                nullable: true
              appointment_type_id:
                type: integer
                nullable: true
              billable_item_id:
                type: integer
                nullable: true
              quantity:
                type: integer
                nullable: true
              unit_price:
                type: string
                nullable: true
                example: '45.00'
          description: >-
            GET /care_plans/{id} only. The services the plan bundles:
            `modality_id`, `appointment_type_id`, `billable_item_id`, `quantity`
            and `unit_price` (a 2-decimal string) for each.
        products:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
              billable_item_id:
                type: integer
                nullable: true
              quantity_total:
                type: integer
                nullable: true
              unit_price:
                type: string
                nullable: true
                example: '20.00'
          description: >-
            GET /care_plans/{id} only. The products the plan bundles:
            `billable_item_id`, `quantity_total` and `unit_price` (a 2-decimal
            string) for each.
        tracking:
          type: object
          nullable: true
          properties:
            tracking_mode:
              type: string
              enum:
                - billing_period
                - total_visits
            total_completed:
              type: integer
            total_visits:
              type: integer
              nullable: true
            is_unlimited:
              type: boolean
            visits_remaining:
              type: integer
              nullable: true
            billing_type:
              type: string
              nullable: true
            current_period:
              type: object
              nullable: true
              properties:
                period_start:
                  type: string
                  format: date
                period_end:
                  type: string
                  format: date
                visits_expected:
                  type: integer
                visits_used:
                  type: integer
                rollover_visits:
                  type: integer
                total_available:
                  type: integer
                  nullable: true
                visits_remaining:
                  type: integer
                  nullable: true
                is_unlimited:
                  type: boolean
          description: >-
            GET /care_plans/{id} only, and only for a plan with no schedule (a
            scheduled plan is tracked per schedule — see
            `schedules[].tracking`): `tracking_mode` is `billing_period`
            (memberships: `current_period` with `visits_expected`,
            `visits_used`, `rollover_visits`, `visits_remaining`) or
            `total_visits` (`total_visits`, `total_completed`,
            `visits_remaining`; `is_unlimited` when the plan has no cap). Null
            when the plan has no billing set up, or when tracking could not be
            computed.
        metadata:
          $ref: '#/components/schemas/Metadata'
      example:
        id: 210
        patient_id: 340
        name: 12-week corrective care
        status: active
        template_id: 6
        notes: Review at visit 12
        reschedule_limit: 2
        maximum_amendment_notice: 24
        reactivated_at: null
        updated_at: '2026-09-01T14:31:00Z'
        created_at: '2026-08-18T09:12:44Z'
        billing:
          billing_type: membership
          status: active
          start_date: '2026-09-01'
          interval_unit: month
          interval_length: 1
          number_of_intervals: 12
          is_ongoing: true
          total_price: '1200.00'
          invoicing_type: per_visit
          periods:
            - id: 3101
              period_number: 1
              start_date: '2026-09-01'
              end_date: '2026-09-30'
              status: paid
              collection_method: card
              amount_due: '100.00'
              amount_paid: '100.00'
              visits_expected: 4
              visits_used: 3
              rollover_visits: 0
            - id: 3102
              period_number: 2
              start_date: '2026-10-01'
              end_date: '2026-10-31'
              status: upcoming
              collection_method: null
              amount_due: '100.00'
              amount_paid: '0.00'
              visits_expected: 4
              visits_used: 0
              rollover_visits: 1
        schedules:
          - id: 77
            patient_id: 340
            name: Corrective care
            start_date: '2026-09-01'
            status: active
            schedule_mode: scheduled
            appointment_type_ids:
              - 1
              - 4
            auto_sync: true
            sync_status: synced
            phases:
              - id: 501
                order: 1
                phase_type: fixed
                duration: 4
                visit_interval: weekly
                modalities:
                  - id: 901
                    modality_id: 7
                    visits_per_interval: 2
              - id: 502
                order: 2
                phase_type: fixed
                duration: 8
                visit_interval: bi-weekly
                modalities:
                  - id: 902
                    modality_id: 7
                    visits_per_interval: 1
            tracking:
              tracking_mode: schedule
              is_ad_hoc: false
              total_planned: 16
              total_completed: 5
              has_recurring: false
              is_on_track: true
              last_visit: '2026-09-15'
              next_booked: '2026-09-22'
              modalities:
                - modality_id: 7
                  name: Chiropractic
                  total_planned: 16
                  total_completed: 5
                  has_recurring: false
                  is_on_track: true
                  phases:
                    - phase_id: 501
                      order: 1
                      interval: weekly
                      duration: 4
                      planned: 8
                      completed: 5
                      is_complete: false
                      status: active
                      phase_type: fixed
                      visits_per_interval: 2
                      start_date: '2026-09-01'
                      end_date: '2026-09-28'
                      periods:
                        - index: 0
                          start_date: '2026-09-01'
                          end_date: '2026-09-07'
                          expected: 2
                          completed: 2
                          scheduled: 0
                          unscheduled: 0
                          status: complete
                          is_extension: false
                        - index: 1
                          start_date: '2026-09-08'
                          end_date: '2026-09-14'
                          expected: 2
                          completed: 2
                          scheduled: 0
                          unscheduled: 0
                          status: complete
                          is_extension: false
                        - index: 2
                          start_date: '2026-09-15'
                          end_date: '2026-09-21'
                          expected: 2
                          completed: 1
                          scheduled: 1
                          unscheduled: 0
                          status: current
                          is_extension: false
                        - index: 3
                          start_date: '2026-09-22'
                          end_date: '2026-09-28'
                          expected: 2
                          completed: 0
                          scheduled: 1
                          unscheduled: 1
                          status: upcoming
                          is_extension: false
        members:
          - id: 410
            patient_id: 340
            status: active
            schedule_override: false
          - id: 411
            patient_id: 352
            status: active
            schedule_override: true
        services:
          - id: 61
            modality_id: 7
            appointment_type_id: 1
            billable_item_id: 55
            quantity: 16
            unit_price: '45.00'
        products:
          - id: 12
            billable_item_id: 56
            quantity_total: 2
            unit_price: '20.00'
        tracking: null
    Metadata:
      type: object
      description: >-
        Integrator-owned key/value metadata (max 50 keys). Values are strings
        (≤500 chars), numbers or booleans and read back with the type they were
        written with. On write, a null value removes the key. Filter with
        metadata[key]=op:value; number operands compare numerically.
      additionalProperties:
        nullable: true
        oneOf:
          - type: string
            maxLength: 500
          - type: number
          - type: boolean
    Error:
      type: object
      required:
        - message
        - code
      properties:
        message:
          type: string
          description: Human-readable; may change — do not parse
        code:
          type: string
          description: >-
            Stable machine-readable code (snake_case), e.g. validation_failed,
            not_found, key_read_only, not_online_bookable, group_full,
            appointment_rule, billing_rule, idempotency_key_reused, rate_limited
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Present on validation failures, keyed by attribute
  responses:
    Unauthenticated:
      description: Missing or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: No such resource for this account
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key from Developers → API Keys, sent as Authorization: Bearer <key>.'

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.