curl --request POST \
--url https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Manufacturing",
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contact_ids": [
501,
502
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}"
payload = {
"name": "Acme Manufacturing",
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contact_ids": [501, 502]
}
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: 'Acme Manufacturing',
description: 'Primary overseas supplier for apparel',
street_address: '123 Industrial Way',
city: 'Shenzhen',
state: 'Guangdong',
zip: '518000',
country: 'China',
factory_admin_id: 100,
bank_name: 'Bank of China',
routing_number: '021000021',
account_number: '1234567890',
swift_code: 'BKCHCNBJ',
default_payment_term: 'Net 30',
default_currency_code: 'USD',
contact_ids: [501, 502]
})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}', 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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}",
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' => 'Acme Manufacturing',
'description' => 'Primary overseas supplier for apparel',
'street_address' => '123 Industrial Way',
'city' => 'Shenzhen',
'state' => 'Guangdong',
'zip' => '518000',
'country' => 'China',
'factory_admin_id' => 100,
'bank_name' => 'Bank of China',
'routing_number' => '021000021',
'account_number' => '1234567890',
'swift_code' => 'BKCHCNBJ',
'default_payment_term' => 'Net 30',
'default_currency_code' => 'USD',
'contact_ids' => [
501,
502
]
]),
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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}"
payload := strings.NewReader("{\n \"name\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}")
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\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"status": 1,
"name": "Acme Manufacturing",
"created_at": "2026-04-20T14:30:00Z",
"updated_at": "2026-04-20T14:30:00Z",
"created_by": 100,
"updated_by": 100,
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"supplier_admin_id": 100,
"contact_name": "Jane Doe",
"contact_email": "jane@acme.example",
"contact_phone": "+86 755 1234 5678",
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contacts": [
{
"id": 501,
"name": "Jane Doe",
"email": "jane@acme.example",
"phone": "+86 755 1234 5678"
}
]
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}{
"error": "Not Found",
"message": "The requested resource could not be found",
"status_code": 404
}{
"message": "<string>",
"errors": {}
}Update a supplier
Update an existing supplier’s information.
curl --request POST \
--url https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Acme Manufacturing",
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contact_ids": [
501,
502
]
}
'import requests
url = "https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}"
payload = {
"name": "Acme Manufacturing",
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contact_ids": [501, 502]
}
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: 'Acme Manufacturing',
description: 'Primary overseas supplier for apparel',
street_address: '123 Industrial Way',
city: 'Shenzhen',
state: 'Guangdong',
zip: '518000',
country: 'China',
factory_admin_id: 100,
bank_name: 'Bank of China',
routing_number: '021000021',
account_number: '1234567890',
swift_code: 'BKCHCNBJ',
default_payment_term: 'Net 30',
default_currency_code: 'USD',
contact_ids: [501, 502]
})
};
fetch('https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}', 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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}",
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' => 'Acme Manufacturing',
'description' => 'Primary overseas supplier for apparel',
'street_address' => '123 Industrial Way',
'city' => 'Shenzhen',
'state' => 'Guangdong',
'zip' => '518000',
'country' => 'China',
'factory_admin_id' => 100,
'bank_name' => 'Bank of China',
'routing_number' => '021000021',
'account_number' => '1234567890',
'swift_code' => 'BKCHCNBJ',
'default_payment_term' => 'Net 30',
'default_currency_code' => 'USD',
'contact_ids' => [
501,
502
]
]),
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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}"
payload := strings.NewReader("{\n \"name\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\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://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{companyName}.api.joinluminous.com/external/api/v1/suppliers/{supplierId}")
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\": \"Acme Manufacturing\",\n \"description\": \"Primary overseas supplier for apparel\",\n \"street_address\": \"123 Industrial Way\",\n \"city\": \"Shenzhen\",\n \"state\": \"Guangdong\",\n \"zip\": \"518000\",\n \"country\": \"China\",\n \"factory_admin_id\": 100,\n \"bank_name\": \"Bank of China\",\n \"routing_number\": \"021000021\",\n \"account_number\": \"1234567890\",\n \"swift_code\": \"BKCHCNBJ\",\n \"default_payment_term\": \"Net 30\",\n \"default_currency_code\": \"USD\",\n \"contact_ids\": [\n 501,\n 502\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 42,
"status": 1,
"name": "Acme Manufacturing",
"created_at": "2026-04-20T14:30:00Z",
"updated_at": "2026-04-20T14:30:00Z",
"created_by": 100,
"updated_by": 100,
"description": "Primary overseas supplier for apparel",
"street_address": "123 Industrial Way",
"city": "Shenzhen",
"state": "Guangdong",
"zip": "518000",
"country": "China",
"factory_admin_id": 100,
"supplier_admin_id": 100,
"contact_name": "Jane Doe",
"contact_email": "jane@acme.example",
"contact_phone": "+86 755 1234 5678",
"bank_name": "Bank of China",
"routing_number": "021000021",
"account_number": "1234567890",
"swift_code": "BKCHCNBJ",
"default_payment_term": "Net 30",
"default_currency_code": "USD",
"contacts": [
{
"id": 501,
"name": "Jane Doe",
"email": "jane@acme.example",
"phone": "+86 755 1234 5678"
}
]
}
}{
"error": "Unauthorized",
"message": "Authentication credentials are missing or invalid",
"status_code": 401
}{
"error": "Forbidden",
"message": "You do not have permission to access this resource",
"status_code": 403
}{
"error": "Not Found",
"message": "The requested resource could not be found",
"status_code": 404
}{
"message": "<string>",
"errors": {}
}Authorizations
Authenticate using a bearer token. To create a token, navigate to /settings/api-tokens and click Create API Token.
Path Parameters
The unique identifier of the supplier
Body
Supplier name
255"Acme Manufacturing"
Supplier description
"Primary overseas supplier for apparel"
255"123 Industrial Way"
255"Shenzhen"
255"Guangdong"
255"518000"
255"China"
ID of the internal user to set as the primary admin for this supplier
100
255"Bank of China"
255"021000021"
255"1234567890"
255"BKCHCNBJ"
Default payment term name. Must match one of the payment term names configured in Luminous.
"Net 30"
Default ISO 4217 currency code for this supplier (3 letters). Auto-applied to new purchase orders created for the supplier.
3"USD"
IDs of existing contacts to link to this supplier
[501, 502]
Response
Supplier successfully updated
Show child attributes
Show child attributes