---
title: "Create a Service Item"
method: POST
path: "/service-items"
tags: ["Service Items"]
---

# Create a Service Item

`POST /service-items`

Create a menu item. It can be added to a content collection later

## Request body

- object — Service Item
  - `title` string, required — Name of the service item as represented at the location
  - `description` string — A description of the service
  - `identifier` string — Required - A unique identifier for this service
  - `listName` string
  - `price` integer — Minimum price of the service item. Amounts must be provided in the smallest valid unit of the respective currency (e.g., USD - cents, 10.99 USD → 1099). See range interpretation rules under priceMax.
  - `currency` string — The currency of price and priceMax for this service (required when a price is given). Amounts for price fields must be expressed in the smallest valid unit of this currency (e.g., USD - cents).
  - `url` string — A valid page url with more details about the item.
  - `category` integer — Business category the service should be applied to - this is required when applying a Google structured service but not necessary for freeform services.
  - `country` string — The country where the locations providing this service are located - this is required when applying a Google structured service but not necessary for freeform services.
  - `googleService` string — The Google name for a structured service - this is required when applying a Google structured service but not necessary for freeform services.
  - `priceMax` integer — Maximum price for the item when using a price range. Amounts must be provided in the smallest valid unit of the respective currency (e.g., USD → cents). Range interpretation rules: - Exact: price == priceMax - Starts At: priceMax == null (only minimum known) - Range: price < priceMax (both known and different) - Not Interpreted: price is null (minimum unknown) Validation: if provided, priceMax must be a non-negative integer and greater than or equal to price.
  - `duration` integer — Minimum duration of the service in minutes. See range interpretation rules under durationMax.
  - `durationMax` integer — Maximum duration (in minutes) when using a duration range. Range interpretation rules: - Exact: duration == durationMax\n - Starts At: durationMax == null (only minimum known)\n - Range: duration < durationMax (both known and different)\n - Not Interpreted: duration is null (minimum unknown)\n Validation: if provided, durationMax must be a non-negative integer and greater than or equal to duration.

## Response `201`

Service Item successfully created

- object
  - `status` 'SUCCESS' | 'PENDING' | 'QUOTA_LIMIT_EXCEED' | 'NOT_AUTHORIZED' | 'FORBIDDEN' | 'BAD_ACCESS_TOKEN' | 'BAD_PRIVATE_KEY' | 'BAD_PUBLIC_KEY' | 'MISSING_PARAMETER' | 'INVALID_PARAMETER' | 'WRONG_PARAMETER_TYPE' | 'CONFLICT' | 'RESOURCE_LOCKED' | 'SERVER_ERROR' | 'ERROR' | 'NOT_FOUND' | 'BAD_REQUEST' | 'USER_ERROR' | 'PARTIAL_ERROR' | 'SERVICE_TEMPORARILY_UNAVAILABLE', required
  - `message` string — (optional) Holds further information about the response
  - `warnings` string[] — (optional) Holds further warnings
  - `response` object, required — The actual response object of the response

## Other responses

- `400` — Bad Request - The request was invalid or cannot be otherwise served
- `401` — Unauthorized - Authentication credentials are missing or invalid
- `403` — Forbidden - The request is understood, but has been refused or access is not allowed
- `404` — Not Found - The requested resource could not be found
- `409` — Conflict - The request conflicts with current state of the server

---

[API](https://skmtc.net/uberall/apis/uberall-api.md) · [All operations](https://skmtc.net/uberall/apis/uberall-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/uberall/uberall-api/versions/a506e82d7cbe/schema)
