---
title: "Update Or Create Service"
method: POST
path: "/admin/services/update-or-create"
tags: ["provider", "admin"]
---

# Update Or Create Service

`POST /admin/services/update-or-create`

## Headers

- `TENANT` string, required
- `API-KEY` string, required

## Request body

- ServiceEdit
  - `id` string, required
  - `name` string, nullable
  - `duration` integer, nullable
  - `description` string, nullable
  - `price` integer, nullable
  - `displayPrice` integer, nullable
  - `costOfService` integer
  - `estimated` boolean, nullable
  - `bookingFee` integer, nullable
  - `bookingFeeText` string, nullable
  - `reminderDaysBefore` integer, nullable
  - `cancellationCost` integer, nullable
  - `hoursBeforeCancellingCosts` integer, nullable
  - `bookingFeePercentage` integer, nullable
  - `cancellationFeePctWithin24h` integer, nullable
  - `cancellationFeePctWithin48h` integer, nullable
  - `refundBookingFeeBefore48h` boolean, nullable
  - `hoursBeforeBookingFeeRefundable` integer, nullable
  - `followUpDaysAfter` integer, nullable
  - `followUpSmsTemplate` string, nullable
  - `reminderSmsTemplate` string, nullable
  - `locationIds` string[], nullable
  - `providerIds` string[], nullable
  - `createdDate` string, date-time, nullable
  - `updatedDate` string, date-time, nullable
  - `formIds` string[], nullable
  - `confirmationSmsTemplate` string, nullable
  - `cancellationSmsTemplate` string, nullable
  - `noShowSmsTemplate` string, nullable
  - `overrideNoticeSmsTemplate` string, nullable
  - `selfSchedulingBufferTime` integer, nullable
  - `visibility` 'ALL' | 'NEW' | 'EXISTING' | 'NO'
  - `minutesBeforeRebookingAllowed` integer, nullable
  - `color` string, nullable
  - `allowIndividualProviderBooking` boolean, nullable
  - `displayOrder` integer, nullable
  - `reservedTimeMinutes` integer, nullable
  - `category` string, nullable
  - `isDoubleBookable` boolean, nullable
  - `isPopular` boolean, nullable
  - `creditCardRequired` boolean, nullable
  - `collectCreditCard` boolean, nullable
  - `autoGfeTreatments` string[], nullable
  - `brandName` string, nullable
  - `unit` 'AMPOULES' | 'APPLICATORS' | 'BOTTLES' | 'BOXES' | 'CAPSULES' | 'CUPS' | 'DOSES' | 'G_PER_ML' | 'GRAMS' | 'IU' | 'IU_PER_ML' | 'OUNCES' | 'FLUID_OUNCES' | 'KG' | 'KITS' | 'LITERS' | 'MCG' | 'MG' | 'MG_PER_ML' | 'ML' | 'MMOL' | 'MICROGRAM_PER_ML' | 'PACKS' | 'PAIRS' | 'PATCHES' | 'PERCENTAGE' | 'PIECES' | 'POUCHES' | 'ROLLS' | 'SACHETS' | 'SHEETS' | 'SPRAYS' | 'STRIPS' | 'SYRINGES' | 'TABLETS' | 'TABLETS_PER_DAY' | 'TESTS' | 'TUBES' | 'UNITS' | 'VIALS' | 'TREATMENTS' | 'SESSIONS' | 'PULSES' | 'JOULES' | 'CENTIMETERS' | 'THREAD_COUNT' | 'INJECTIONS' | 'WRINKLE_UNITS' | 'POUNDS' | 'FEET' | 'INCHES'
  - `internalNotes` string, nullable
  - `sortOrder` integer, nullable
  - `taxable` boolean, nullable
  - `allowCustomPricing` boolean, nullable

## Response `200`

Successful Response

- ServiceEdit
  - `id` string, required
  - `name` string, nullable
  - `duration` integer, nullable
  - `description` string, nullable
  - `price` integer, nullable
  - `displayPrice` integer, nullable
  - `costOfService` integer
  - `estimated` boolean, nullable
  - `bookingFee` integer, nullable
  - `bookingFeeText` string, nullable
  - `reminderDaysBefore` integer, nullable
  - `cancellationCost` integer, nullable
  - `hoursBeforeCancellingCosts` integer, nullable
  - `bookingFeePercentage` integer, nullable
  - `cancellationFeePctWithin24h` integer, nullable
  - `cancellationFeePctWithin48h` integer, nullable
  - `refundBookingFeeBefore48h` boolean, nullable
  - `hoursBeforeBookingFeeRefundable` integer, nullable
  - `followUpDaysAfter` integer, nullable
  - `followUpSmsTemplate` string, nullable
  - `reminderSmsTemplate` string, nullable
  - `locationIds` string[], nullable
  - `providerIds` string[], nullable
  - `createdDate` string, date-time, nullable
  - `updatedDate` string, date-time, nullable
  - `formIds` string[], nullable
  - `confirmationSmsTemplate` string, nullable
  - `cancellationSmsTemplate` string, nullable
  - `noShowSmsTemplate` string, nullable
  - `overrideNoticeSmsTemplate` string, nullable
  - `selfSchedulingBufferTime` integer, nullable
  - `visibility` 'ALL' | 'NEW' | 'EXISTING' | 'NO'
  - `minutesBeforeRebookingAllowed` integer, nullable
  - `color` string, nullable
  - `allowIndividualProviderBooking` boolean, nullable
  - `displayOrder` integer, nullable
  - `reservedTimeMinutes` integer, nullable
  - `category` string, nullable
  - `isDoubleBookable` boolean, nullable
  - `isPopular` boolean, nullable
  - `creditCardRequired` boolean, nullable
  - `collectCreditCard` boolean, nullable
  - `autoGfeTreatments` string[], nullable
  - `brandName` string, nullable
  - `unit` 'AMPOULES' | 'APPLICATORS' | 'BOTTLES' | 'BOXES' | 'CAPSULES' | 'CUPS' | 'DOSES' | 'G_PER_ML' | 'GRAMS' | 'IU' | 'IU_PER_ML' | 'OUNCES' | 'FLUID_OUNCES' | 'KG' | 'KITS' | 'LITERS' | 'MCG' | 'MG' | 'MG_PER_ML' | 'ML' | 'MMOL' | 'MICROGRAM_PER_ML' | 'PACKS' | 'PAIRS' | 'PATCHES' | 'PERCENTAGE' | 'PIECES' | 'POUCHES' | 'ROLLS' | 'SACHETS' | 'SHEETS' | 'SPRAYS' | 'STRIPS' | 'SYRINGES' | 'TABLETS' | 'TABLETS_PER_DAY' | 'TESTS' | 'TUBES' | 'UNITS' | 'VIALS' | 'TREATMENTS' | 'SESSIONS' | 'PULSES' | 'JOULES' | 'CENTIMETERS' | 'THREAD_COUNT' | 'INJECTIONS' | 'WRINKLE_UNITS' | 'POUNDS' | 'FEET' | 'INCHES'
  - `internalNotes` string, nullable
  - `sortOrder` integer, nullable
  - `taxable` boolean, nullable
  - `allowCustomPricing` boolean, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/decodahealth/apis/decoda-api.md) · [All operations](https://skmtc.dev/decodahealth/apis/decoda-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/decodahealth/decoda-api/revisions/4939a65a89d2/schema)
