Create Fulfillment Service
curl --request POST \
--url https://api.launchmystore.io/api/v1/fulfillment_services.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"callbackUrl": "<string>",
"tracking_support": true,
"inventory_management": true,
"requires_shipping_method": true
}
'import requests
url = "https://api.launchmystore.io/api/v1/fulfillment_services.json"
payload = {
"name": "<string>",
"callbackUrl": "<string>",
"tracking_support": True,
"inventory_management": True,
"requires_shipping_method": 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: '<string>',
callbackUrl: '<string>',
tracking_support: true,
inventory_management: true,
requires_shipping_method: true
})
};
fetch('https://api.launchmystore.io/api/v1/fulfillment_services.json', 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.launchmystore.io/api/v1/fulfillment_services.json",
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' => '<string>',
'callbackUrl' => '<string>',
'tracking_support' => true,
'inventory_management' => true,
'requires_shipping_method' => 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.launchmystore.io/api/v1/fulfillment_services.json"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": 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.launchmystore.io/api/v1/fulfillment_services.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/fulfillment_services.json")
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\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": true\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"state": "success",
"message": null,
"data": {
"fulfillment_service": {
"serviceId": "5d0e8a2c-3f41-4b7a-9c6e-1a2b3c4d5e6f",
"appId": "2c8e4f1a-6b3d-4e9a-8f7c-0d1e2f3a4b5c",
"storeId": "ef10744c-5c4a-4f47-85fc-062ba44afb5f",
"name": "Acme Shipping",
"callbackUrl": "https://acme.example/api/fulfillment-request",
"trackingSupport": true,
"inventoryManagement": false,
"requiresShippingMethod": false,
"status": "active",
"createdAt": "2026-09-27T10:00:00.000Z",
"updatedAt": "2026-09-27T10:00:00.000Z"
}
}
}
Fulfillments
Create Fulfillment Service
Register your app as a fulfillment service for the store
POST
/
api
/
v1
/
fulfillment_services.json
Create Fulfillment Service
curl --request POST \
--url https://api.launchmystore.io/api/v1/fulfillment_services.json \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"callbackUrl": "<string>",
"tracking_support": true,
"inventory_management": true,
"requires_shipping_method": true
}
'import requests
url = "https://api.launchmystore.io/api/v1/fulfillment_services.json"
payload = {
"name": "<string>",
"callbackUrl": "<string>",
"tracking_support": True,
"inventory_management": True,
"requires_shipping_method": 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: '<string>',
callbackUrl: '<string>',
tracking_support: true,
inventory_management: true,
requires_shipping_method: true
})
};
fetch('https://api.launchmystore.io/api/v1/fulfillment_services.json', 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.launchmystore.io/api/v1/fulfillment_services.json",
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' => '<string>',
'callbackUrl' => '<string>',
'tracking_support' => true,
'inventory_management' => true,
'requires_shipping_method' => 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.launchmystore.io/api/v1/fulfillment_services.json"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": 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.launchmystore.io/api/v1/fulfillment_services.json")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.launchmystore.io/api/v1/fulfillment_services.json")
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\": \"<string>\",\n \"callbackUrl\": \"<string>\",\n \"tracking_support\": true,\n \"inventory_management\": true,\n \"requires_shipping_method\": true\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"state": "success",
"message": null,
"data": {
"fulfillment_service": {
"serviceId": "5d0e8a2c-3f41-4b7a-9c6e-1a2b3c4d5e6f",
"appId": "2c8e4f1a-6b3d-4e9a-8f7c-0d1e2f3a4b5c",
"storeId": "ef10744c-5c4a-4f47-85fc-062ba44afb5f",
"name": "Acme Shipping",
"callbackUrl": "https://acme.example/api/fulfillment-request",
"trackingSupport": true,
"inventoryManagement": false,
"requiresShippingMethod": false,
"status": "active",
"createdAt": "2026-09-27T10:00:00.000Z",
"updatedAt": "2026-09-27T10:00:00.000Z"
}
}
}
Registers your app as a fulfillment service for the store. Requires the
write_orders scope. The body can be flat or wrapped in
{ "fulfillment_service": { ... } }. See
Fulfillment Services for what a
service is used for.
Every call creates a new service, even with a name that already exists.
List the services first and
create yours only when it is missing.
Body Parameters
string
required
Display name, e.g.
"Acme Shipping".string
required
Public
https URL that receives
fulfillment requests.
Private, local and internal addresses are rejected.boolean
default:"true"
Whether your app provides tracking numbers.
boolean
default:"false"
Whether your app manages the store’s inventory levels.
boolean
default:"false"
Whether a shipping method must be chosen before you fulfill.
Response
201 Created with the service under data.fulfillment_service.
{
"status": 201,
"state": "success",
"message": null,
"data": {
"fulfillment_service": {
"serviceId": "5d0e8a2c-3f41-4b7a-9c6e-1a2b3c4d5e6f",
"appId": "2c8e4f1a-6b3d-4e9a-8f7c-0d1e2f3a4b5c",
"storeId": "ef10744c-5c4a-4f47-85fc-062ba44afb5f",
"name": "Acme Shipping",
"callbackUrl": "https://acme.example/api/fulfillment-request",
"trackingSupport": true,
"inventoryManagement": false,
"requiresShippingMethod": false,
"status": "active",
"createdAt": "2026-09-27T10:00:00.000Z",
"updatedAt": "2026-09-27T10:00:00.000Z"
}
}
}
Error Codes
| Status | Description |
|---|---|
422 | name or callbackUrl missing, or callbackUrl is not a URL |
400 | callbackUrl is not a public http(s) address |
401 | Invalid or missing access token |
403 | App doesn’t have the write_orders scope |