Skip to main content
POST
/
services
Create a service
curl --request POST \
  --url https://api.salesive.com/api/v1/services \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Deep Tissue Massage",
  "description": "60-minute full-body massage",
  "price": 80,
  "images": [
    "https://cdn.salesive.com/sv/massage.jpg"
  ],
  "available": true,
  "listed": true,
  "addons": [
    {
      "name": "Hot stones",
      "price": 15,
      "maxQuantity": 1
    }
  ]
}
'
{
  "status": 201,
  "success": true,
  "message": "Create a service",
  "data": {
    "_id": "66a3b1c4e1b3a40012ef2001",
    "name": "Deep Tissue Massage",
    "description": "60-minute full-body massage",
    "price": 80,
    "promoPrice": null,
    "images": [
      "https://cdn.salesive.com/sv/massage.jpg"
    ],
    "video": null,
    "available": true,
    "listed": true,
    "addons": [
      {
        "name": "Hot stones",
        "price": 15,
        "maxQuantity": 1,
        "available": true,
        "description": ""
      }
    ],
    "shop": "66a1eee0e1b3a40012ab0001",
    "createdAt": "2026-06-28T09:30:00.000Z",
    "updatedAt": "2026-06-28T09:30:00.000Z"
  }
}
Creates a service in the store. The shop is set server-side from the installation and must not be supplied. Services have no category field. Requires the WRITE_INVENTORY scope.

Authorizations

Authorization
string
header
required

Installed-app access token (prefix app_), issued by the OAuth install flow. The store is bound to the token server-side — never send a shop id.

Body

application/json
name
string
required

Service name (max 100 chars).

price
number
required

Price (>= 0).

description
string

Service description.

promoPrice
number | null

Promotional price (>= 0); nullable.

images
string[]

Array of image URLs.

video
string | null

Video URL; nullable.

available
boolean

Whether the service is available to book. Default true.

listed
boolean

Whether the service is listed on the storefront. Default true.

addons
object[]

Optional add-ons. Each: name (string, required), price (number, required), maxQuantity (integer, default 10), image (string), available (boolean, default true), description (string).

Response

Create a service — success.

status
integer
required
Example:

201

success
boolean
required
Example:

true

message
string
required
Example:

"Create a service"

data
object
required

A business service item.

Example:
{
"_id": "66a3b1c4e1b3a40012ef2001",
"name": "Deep Tissue Massage",
"description": "60-minute full-body massage",
"price": 80,
"promoPrice": null,
"images": ["https://cdn.salesive.com/sv/massage.jpg"],
"video": null,
"available": true,
"listed": true,
"addons": [
{
"name": "Hot stones",
"price": 15,
"maxQuantity": 1,
"available": true,
"description": ""
}
],
"shop": "66a1eee0e1b3a40012ab0001",
"createdAt": "2026-06-28T09:30:00.000Z",
"updatedAt": "2026-06-28T09:30:00.000Z"
}