Bulk create listings
curl --request POST \
--url https://api.managem.co.uk/seller/listings/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"listings": [
{
"condition": "<string>",
"price": 123,
"language": "<string>",
"urn": "<string>",
"quantity": 1,
"variants": [],
"comment": "<string>",
"gradingProvider": "<string>",
"gradingScore": "<string>",
"gradingNumber": "<string>",
"hidden": false,
"notes": "<string>",
"reference": "<string>"
}
]
}
'import requests
url = "https://api.managem.co.uk/seller/listings/bulk"
payload = { "listings": [
{
"condition": "<string>",
"price": 123,
"language": "<string>",
"urn": "<string>",
"quantity": 1,
"variants": [],
"comment": "<string>",
"gradingProvider": "<string>",
"gradingScore": "<string>",
"gradingNumber": "<string>",
"hidden": False,
"notes": "<string>",
"reference": "<string>"
}
] }
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({
listings: [
{
condition: '<string>',
price: 123,
language: '<string>',
urn: '<string>',
quantity: 1,
variants: [],
comment: '<string>',
gradingProvider: '<string>',
gradingScore: '<string>',
gradingNumber: '<string>',
hidden: false,
notes: '<string>',
reference: '<string>'
}
]
})
};
fetch('https://api.managem.co.uk/seller/listings/bulk', 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.managem.co.uk/seller/listings/bulk",
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([
'listings' => [
[
'condition' => '<string>',
'price' => 123,
'language' => '<string>',
'urn' => '<string>',
'quantity' => 1,
'variants' => [
],
'comment' => '<string>',
'gradingProvider' => '<string>',
'gradingScore' => '<string>',
'gradingNumber' => '<string>',
'hidden' => false,
'notes' => '<string>',
'reference' => '<string>'
]
]
]),
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.managem.co.uk/seller/listings/bulk"
payload := strings.NewReader("{\n \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\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://api.managem.co.uk/seller/listings/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.managem.co.uk/seller/listings/bulk")
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 \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"successful": [
"<string>"
],
"failed": [
"<string>"
]
}Management
Bulk create listings
Create many listings in one request with per-record success tracking.
Use this endpoint for high-volume listing ingestion from seller tools or migration flows.
Request limits and validation:
- Accepts up to
200listing payloads per call. - Each listing uses the same schema and validation rules as single listing creation.
- Optional
referencemetadata is accepted per listing and normalized the same way as single-create. - Duplicate URNs in the request are allowed but each array entry is still processed independently.
Processing model:
- Listings are processed one by one; one failure does not stop other records.
- Missing items, validation failures, or persistence errors are captured per listing.
- Empty-string
referencevalues are treated as a clear request (nullin storage). - The response always returns two URN arrays:
successfulandfailed.
Seller and listing rules:
- Caller must be an active seller.
- Item URNs must exist in the catalog index to create a listing.
- Listing validity follows the same photo requirement logic as single-create:
- price
>= 2000or grading metadata requires at least one attachment to become valid.
- price
Side effects:
- Emits
LISTING_CREATEDwebhook events for each successfully created listing. - Invalidates seller stats cache tags as successful records are written.
- Writes per-listing analytics events.
POST
/
seller
/
listings
/
bulk
Bulk create listings
curl --request POST \
--url https://api.managem.co.uk/seller/listings/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"listings": [
{
"condition": "<string>",
"price": 123,
"language": "<string>",
"urn": "<string>",
"quantity": 1,
"variants": [],
"comment": "<string>",
"gradingProvider": "<string>",
"gradingScore": "<string>",
"gradingNumber": "<string>",
"hidden": false,
"notes": "<string>",
"reference": "<string>"
}
]
}
'import requests
url = "https://api.managem.co.uk/seller/listings/bulk"
payload = { "listings": [
{
"condition": "<string>",
"price": 123,
"language": "<string>",
"urn": "<string>",
"quantity": 1,
"variants": [],
"comment": "<string>",
"gradingProvider": "<string>",
"gradingScore": "<string>",
"gradingNumber": "<string>",
"hidden": False,
"notes": "<string>",
"reference": "<string>"
}
] }
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({
listings: [
{
condition: '<string>',
price: 123,
language: '<string>',
urn: '<string>',
quantity: 1,
variants: [],
comment: '<string>',
gradingProvider: '<string>',
gradingScore: '<string>',
gradingNumber: '<string>',
hidden: false,
notes: '<string>',
reference: '<string>'
}
]
})
};
fetch('https://api.managem.co.uk/seller/listings/bulk', 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.managem.co.uk/seller/listings/bulk",
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([
'listings' => [
[
'condition' => '<string>',
'price' => 123,
'language' => '<string>',
'urn' => '<string>',
'quantity' => 1,
'variants' => [
],
'comment' => '<string>',
'gradingProvider' => '<string>',
'gradingScore' => '<string>',
'gradingNumber' => '<string>',
'hidden' => false,
'notes' => '<string>',
'reference' => '<string>'
]
]
]),
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.managem.co.uk/seller/listings/bulk"
payload := strings.NewReader("{\n \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\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://api.managem.co.uk/seller/listings/bulk")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.managem.co.uk/seller/listings/bulk")
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 \"listings\": [\n {\n \"condition\": \"<string>\",\n \"price\": 123,\n \"language\": \"<string>\",\n \"urn\": \"<string>\",\n \"quantity\": 1,\n \"variants\": [],\n \"comment\": \"<string>\",\n \"gradingProvider\": \"<string>\",\n \"gradingScore\": \"<string>\",\n \"gradingNumber\": \"<string>\",\n \"hidden\": false,\n \"notes\": \"<string>\",\n \"reference\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"successful": [
"<string>"
],
"failed": [
"<string>"
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Request payload for bulk listing creation
Listings to create or update
Maximum array length:
200Show child attributes
Show child attributes