curl --request POST \
--url https://api.salesive.com/api/v1/shipping/options \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": true
}
'import requests
url = "https://api.salesive.com/api/v1/shipping/options"
payload = {
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Standard Shipping',
description: '3-5 business day delivery',
type: 'manual',
price: 1500,
match: 'all',
triggers: [{type: 'totalAmount', operator: '>=', value: 10000}],
enabled: true
})
};
fetch('https://api.salesive.com/api/v1/shipping/options', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesive.com/api/v1/shipping/options",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Standard Shipping',
'description' => '3-5 business day delivery',
'type' => 'manual',
'price' => 1500,
'match' => 'all',
'triggers' => [
[
'type' => 'totalAmount',
'operator' => '>=',
'value' => 10000
]
],
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesive.com/api/v1/shipping/options"
payload := strings.NewReader("{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.salesive.com/api/v1/shipping/options")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.salesive.com/api/v1/shipping/options")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"success": true,
"message": "Create a shipping option",
"data": {
"_id": "6650a1f2c3d4e5f601020304",
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"couriers": [],
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": true,
"shop": "6630b2a1d4e5f60102030405",
"deleted": false,
"createdAt": "2026-06-28T09:00:00.000Z",
"updatedAt": "2026-06-28T09:00:00.000Z"
}
}{
"status": 401,
"success": false,
"message": "Authentication required",
"data": null
}{
"status": 403,
"success": false,
"message": "Insufficient scope",
"data": null
}Create a shipping option
Create a shipping option. Requires the WRITE_SHIPPING scope.
curl --request POST \
--url https://api.salesive.com/api/v1/shipping/options \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": true
}
'import requests
url = "https://api.salesive.com/api/v1/shipping/options"
payload = {
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Standard Shipping',
description: '3-5 business day delivery',
type: 'manual',
price: 1500,
match: 'all',
triggers: [{type: 'totalAmount', operator: '>=', value: 10000}],
enabled: true
})
};
fetch('https://api.salesive.com/api/v1/shipping/options', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.salesive.com/api/v1/shipping/options",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Standard Shipping',
'description' => '3-5 business day delivery',
'type' => 'manual',
'price' => 1500,
'match' => 'all',
'triggers' => [
[
'type' => 'totalAmount',
'operator' => '>=',
'value' => 10000
]
],
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.salesive.com/api/v1/shipping/options"
payload := strings.NewReader("{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.salesive.com/api/v1/shipping/options")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.salesive.com/api/v1/shipping/options")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Standard Shipping\",\n \"description\": \"3-5 business day delivery\",\n \"type\": \"manual\",\n \"price\": 1500,\n \"match\": \"all\",\n \"triggers\": [\n {\n \"type\": \"totalAmount\",\n \"operator\": \">=\",\n \"value\": 10000\n }\n ],\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"success": true,
"message": "Create a shipping option",
"data": {
"_id": "6650a1f2c3d4e5f601020304",
"name": "Standard Shipping",
"description": "3-5 business day delivery",
"type": "manual",
"price": 1500,
"match": "all",
"couriers": [],
"triggers": [
{
"type": "totalAmount",
"operator": ">=",
"value": 10000
}
],
"enabled": true,
"shop": "6630b2a1d4e5f60102030405",
"deleted": false,
"createdAt": "2026-06-28T09:00:00.000Z",
"updatedAt": "2026-06-28T09:00:00.000Z"
}
}{
"status": 401,
"success": false,
"message": "Authentication required",
"data": null
}{
"status": 403,
"success": false,
"message": "Insufficient scope",
"data": null
}auto options a validated pickup address and coordinates are required so live courier rates can be fetched. Requires the WRITE_SHIPPING scope.Authorizations
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
Display name of the shipping option.
Description shown to shoppers.
One of auto or manual. Defaults to custom.
Flat shipping price (minimum 0). Defaults to 0.
How triggers combine: all or any. Defaults to all.
Courier codes to restrict the option to. Defaults to [].
Eligibility rules. Each has type (totalAmount|country|state|city|zipCode|distance|custom), operator (=|!=|>|<|>=|<=|in|notIn|contains|notContains), value, and optional unit, source, coordinates, metadata. Defaults to [].
Whether the option is active. Defaults to true.
Pickup address string (required for auto options).
Pickup coordinates { lat, lng } (required for auto options).
Response
Create a shipping option.
Standard Salesive response envelope. The operation-specific payload is carried in data.
HTTP status code, echoed in the body.
Whether the request succeeded.
Human-readable result message.
A configured shipping option. For options of type auto, the store-level shipping configuration is merged into the object.
Show child attributes
Show child attributes
Was this page helpful?

