curl --request POST \
--url https://api.orbita.melonn.com/seller-suppliers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": true,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT"
}
]
}
'import requests
url = "https://api.orbita.melonn.com/seller-suppliers"
payload = {
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": True,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT"
}
]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Main Supplier Co.',
id_type: 'NIT',
id_number: '900123456',
active: true,
phone_number: '+573001112233',
notifications_email: 'ops@example.com',
external_id: 'SUP-001',
warehouse_configurations: [{warehouse_id: 3, unpacking_type: 'IMMEDIATE', validation_type: 'STRICT'}]
})
};
fetch('https://api.orbita.melonn.com/seller-suppliers', 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.orbita.melonn.com/seller-suppliers",
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' => 'Main Supplier Co.',
'id_type' => 'NIT',
'id_number' => '900123456',
'active' => true,
'phone_number' => '+573001112233',
'notifications_email' => 'ops@example.com',
'external_id' => 'SUP-001',
'warehouse_configurations' => [
[
'warehouse_id' => 3,
'unpacking_type' => 'IMMEDIATE',
'validation_type' => 'STRICT'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.orbita.melonn.com/seller-suppliers"
payload := strings.NewReader("{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.orbita.melonn.com/seller-suppliers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbita.melonn.com/seller-suppliers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": true,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"id": 10,
"seller_id": 456,
"seller_supplier_id": 123,
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT",
"experience_type": "GUIDED",
"creation_date": "2025-01-15T10:30:00.000Z",
"last_update_date": "2025-01-15T10:30:00.000Z",
"last_update_user_email": "integrations@example.com"
}
]
}Create seller supplier
Creates a supplier for your account. Use the returned id (or your external_id) as
seller_supplier_id when creating supplier orders.
Required fields
name, id_type, id_number, active, phone_number and notifications_email.
Everything else is optional. Properties not declared in this schema are ignored (silently
dropped), not rejected. The supplier returns address is deprecated: it is no longer
accepted or returned.
id_type per country
id_type must be valid in a country where your account is active:
| Country | Allowed id_type |
|---|---|
| Colombia | CC, NIT, OTHER |
| Mexico | INE, CURP, RFC, OTHER |
external_id
Your own identifier for the supplier, unique per seller. If a supplier of yours already has
it, the request returns 409 with the id of the existing supplier in
errorDetails.seller_supplier_id, so you can update it instead of creating a duplicate. If
you don’t send external_id, every request creates a new supplier.
warehouse_configurations
Optional unpacking configuration per warehouse. It can only be sent under a negotiated
agreement with Melonn; otherwise the request returns 403, even when the values are the
defaults. An omitted unpacking_type defaults to DEFERRED and an omitted
validation_type to FREE. STRICT is only valid with IMMEDIATE.
The supplier is created before its configuration is saved. If the configuration is rejected
(422) the supplier already exists: retrying with the same external_id returns 409
with its id, and you can finish it with Update seller supplier.
curl --request POST \
--url https://api.orbita.melonn.com/seller-suppliers \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": true,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT"
}
]
}
'import requests
url = "https://api.orbita.melonn.com/seller-suppliers"
payload = {
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": True,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT"
}
]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Main Supplier Co.',
id_type: 'NIT',
id_number: '900123456',
active: true,
phone_number: '+573001112233',
notifications_email: 'ops@example.com',
external_id: 'SUP-001',
warehouse_configurations: [{warehouse_id: 3, unpacking_type: 'IMMEDIATE', validation_type: 'STRICT'}]
})
};
fetch('https://api.orbita.melonn.com/seller-suppliers', 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.orbita.melonn.com/seller-suppliers",
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' => 'Main Supplier Co.',
'id_type' => 'NIT',
'id_number' => '900123456',
'active' => true,
'phone_number' => '+573001112233',
'notifications_email' => 'ops@example.com',
'external_id' => 'SUP-001',
'warehouse_configurations' => [
[
'warehouse_id' => 3,
'unpacking_type' => 'IMMEDIATE',
'validation_type' => 'STRICT'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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.orbita.melonn.com/seller-suppliers"
payload := strings.NewReader("{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.orbita.melonn.com/seller-suppliers")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.orbita.melonn.com/seller-suppliers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Main Supplier Co.\",\n \"id_type\": \"NIT\",\n \"id_number\": \"900123456\",\n \"active\": true,\n \"phone_number\": \"+573001112233\",\n \"notifications_email\": \"ops@example.com\",\n \"external_id\": \"SUP-001\",\n \"warehouse_configurations\": [\n {\n \"warehouse_id\": 3,\n \"unpacking_type\": \"IMMEDIATE\",\n \"validation_type\": \"STRICT\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "Main Supplier Co.",
"id_type": "NIT",
"id_number": "900123456",
"active": true,
"phone_number": "+573001112233",
"notifications_email": "ops@example.com",
"external_id": "SUP-001",
"warehouse_configurations": [
{
"id": 10,
"seller_id": 456,
"seller_supplier_id": 123,
"warehouse_id": 3,
"unpacking_type": "IMMEDIATE",
"validation_type": "STRICT",
"experience_type": "GUIDED",
"creation_date": "2025-01-15T10:30:00.000Z",
"last_update_date": "2025-01-15T10:30:00.000Z",
"last_update_user_email": "integrations@example.com"
}
]
}Authorizations
Body
Supplier name. Cannot be blank.
\SWhether the supplier is active.
Identification type. Must be valid in a country where your account is active (see the table above).
CC, NIT, OTHER, INE, CURP, RFC Identification number. Cannot be blank.
\SEmail for supplier notifications. Must be a valid email.
Supplier phone number. Cannot be blank.
\SYour own identifier for the supplier. Unique per seller. Cannot be blank.
\SUnpacking configuration per warehouse. Requires a negotiated agreement with Melonn.
Show child attributes
Show child attributes
Response
Supplier created. Returns the supplier and all its warehouse_configurations
(an empty array when none were sent).
A supplier of your account.
Melonn id of the supplier.
Supplier name.
Identification type.
Identification number.
Whether the supplier is active. Supplier orders can only be created for active suppliers.
Supplier phone number.
Email for supplier notifications.
Your own identifier for the supplier, or null.
Show child attributes
Show child attributes