---
title: "Create a patient care plan"
method: POST
path: "/ext/v2/patient-care-plans/"
tags: ["Care Plans"]
---

# Create a patient care plan

`POST /ext/v2/patient-care-plans/`

## Request

- Base URL: `https://connect.vetcove.com`
- URL: `https://connect.vetcove.com/ext/v2/patient-care-plans/`
- Auth: HTTP bearer

Enrolls a clinic patient into a care plan by creating a new patient care plan with an initial status of `CLIENT_CREATED`. You must specify a core care plan and may optionally include add-on plans.

If the patient has a pending `CLIENT_CREATED` core plan that was never paid, it is automatically cancelled and removed — along with its enrollment invoice and any payment links for that invoice — before the new enrollment is created. A patient with any other in-progress or upcoming core plan cannot be enrolled again and the request is rejected.

The specified care plans must be active, match the patient's species, and be available at the patient's clinic. The start date must be in the future (relative to the clinic's timezone).

## Request body

- ExternalPatientCarePlanCreateSchema: Schema for creating a patient care plan via the external API.
  - `add_on_care_plan_ids` integer[]: Optional list of add-on Care Plan IDs to enroll alongside the core plan
  - `clinic_client_id` integer, required: The clinic client ID who will be billed for these care plans
  - `clinic_patient_id` integer, required: The clinic patient ID to enroll into care plans
  - `core_plan_id` integer, required: The core Care Plan ID to enroll the patient into
  - `is_billed_monthly` boolean, required: Whether billing is monthly (True) or upfront (False)
  - `next_plan_id` integer, nullable: Optional next core Care Plan ID for automatic renewal
  - `should_renew` boolean, required: Whether the plan should automatically renew at the end of term
  - `start_date` string, date, required: Start date for the enrollment

## Response `201`

Created

- ExternalPatientCarePlanWithAddOnPlansSchema
  - `add_on_plans` ExternalPatientCarePlanSchema[], required: Add-on patient care plans created alongside the core plan
    - `care_plan_id` integer, required: The ID of the Care Plan this patient-specific plan is linked to
    - `care_plan_kind` 'CORE' | 'ADD_ON' | 'SERVICE_PACKAGE', required
    - `care_plan_name` string, required: The name of the care plan this patient care plan is linked to
    - `clinic_client_id` integer, required: The ID of the clinic client this patient care plan is associated with
    - `clinic_id` integer, required: The ID of the clinic this patient care plan is associated with
    - `clinic_patient_id` integer, required: The ID of the clinic patient this care plan is associated with
    - `core_plan_id` integer, nullable, required: The ID of the core patient care plan this one is linked to, if this is an add-on plan
    - `deactivated_at` string, date-time, nullable, required: When this care plan was deactivated, if applicable
    - `deactivated_by` string, nullable, required: The name of the user who deactivated the care plan, if applicable
    - `end_date` string, date, required: End date for the care plan (YYYY-MM-DD). This is non-inclusive, meaning a plan ending on 2/1/2026 would not be considered active/usable on 2/1/2026.
    - `enrollment_fee` integer, required: The enrollment fee of the care plan
    - `id` integer, required: The unique identifier for the patient care plan
    - `is_billed_monthly` boolean, required: Whether the care plan is billed monthly or upfront
    - `monthly_cost` integer, nullable, required: The monthly cost of the care plan, in cents. Only applicable to monthly billed care plans.
    - `next_payment_date` string, date, nullable, required: The date of the next payment for the care plan, if applicable
    - `next_plan_id` integer, nullable, required: The ID of the next care plan, if applicable
    - `payment_method_id` integer, nullable, required: The ID of the payment method associated with this care plan
    - `plan_cost` integer, required: The cost of the care plan
    - `remaining_balance` integer, required: The remaining balance of the care plan, in cents
    - `should_renew` boolean, required: Whether this care plan will automatically be renewed
    - `start_date` string, date, required: The start date of the care plan
    - `status` union, required: The status of the patient care plan
      - 'IMPORTED' | 'CLIENT_CREATED' | 'CLINIC_CREATED' | 'ACTIVE' | 'TERMINATED' | 'PAYMENT_FAILED' | 'SUSPENDED'
      - ''
  - `care_plan_id` integer, required: The ID of the Care Plan this patient-specific plan is linked to
  - `care_plan_kind` 'CORE' | 'ADD_ON' | 'SERVICE_PACKAGE', required
  - `care_plan_name` string, required: The name of the care plan this patient care plan is linked to
  - `clinic_client_id` integer, required: The ID of the clinic client this patient care plan is associated with
  - `clinic_id` integer, required: The ID of the clinic this patient care plan is associated with
  - `clinic_patient_id` integer, required: The ID of the clinic patient this care plan is associated with
  - `core_plan_id` integer, nullable, required: The ID of the core patient care plan this one is linked to, if this is an add-on plan
  - `deactivated_at` string, date-time, nullable, required: When this care plan was deactivated, if applicable
  - `deactivated_by` string, nullable, required: The name of the user who deactivated the care plan, if applicable
  - `end_date` string, date, required: End date for the care plan (YYYY-MM-DD). This is non-inclusive, meaning a plan ending on 2/1/2026 would not be considered active/usable on 2/1/2026.
  - `enrollment_fee` integer, required: The enrollment fee of the care plan
  - `id` integer, required: The unique identifier for the patient care plan
  - `invoice_id` integer, required: The ID of the invoice created for the care plan enrollment
  - `is_billed_monthly` boolean, required: Whether the care plan is billed monthly or upfront
  - `monthly_cost` integer, nullable, required: The monthly cost of the care plan, in cents. Only applicable to monthly billed care plans.
  - `next_payment_date` string, date, nullable, required: The date of the next payment for the care plan, if applicable
  - `next_plan_id` integer, nullable, required: The ID of the next care plan, if applicable
  - `payment_method_id` integer, nullable, required: The ID of the payment method associated with this care plan
  - `plan_cost` integer, required: The cost of the care plan
  - `remaining_balance` integer, required: The remaining balance of the care plan, in cents
  - `should_renew` boolean, required: Whether this care plan will automatically be renewed
  - `start_date` string, date, required: The start date of the care plan
  - `status` union, required: The status of the patient care plan
    - 'IMPORTED' | 'CLIENT_CREATED' | 'CLINIC_CREATED' | 'ACTIVE' | 'TERMINATED' | 'PAYMENT_FAILED' | 'SUSPENDED'
    - ''

---

[API](https://skmtc.dev/vetcove/apis/ninjaapi.md) - [All operations](https://skmtc.dev/vetcove/apis/ninjaapi/llms.txt) - [OpenAPI document](https://skmtc.dev/vetcove/apis/ninjaapi/revisions/4ceaed956e15?raw)
