Batch Create Products
curl --request POST \
--url https://{defaultHost}/v1/imports/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"import": {
"data": [
{
"name": "Test Product",
"slug": "test-product",
"prices": [
{
"amount": 1000,
"currency": "usd"
}
],
"product_medias": [
{
"url": "https://example.com/image.jpg"
}
]
}
]
}
}
'import requests
url = "https://{defaultHost}/v1/imports/products"
payload = { "import": { "data": [
{
"name": "Test Product",
"slug": "test-product",
"prices": [
{
"amount": 1000,
"currency": "usd"
}
],
"product_medias": [{ "url": "https://example.com/image.jpg" }]
}
] } }
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({
import: {
data: [
{
name: 'Test Product',
slug: 'test-product',
prices: [{amount: 1000, currency: 'usd'}],
product_medias: [{url: 'https://example.com/image.jpg'}]
}
]
}
})
};
fetch('https://{defaultHost}/v1/imports/products', 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://{defaultHost}/v1/imports/products",
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([
'import' => [
'data' => [
[
'name' => 'Test Product',
'slug' => 'test-product',
'prices' => [
[
'amount' => 1000,
'currency' => 'usd'
]
],
'product_medias' => [
[
'url' => 'https://example.com/image.jpg'
]
]
]
]
]
]),
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://{defaultHost}/v1/imports/products"
payload := strings.NewReader("{\n \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\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://{defaultHost}/v1/imports/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{defaultHost}/v1/imports/products")
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 \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "f4a2dbe1-db2d-4580-99ba-264e8eebb18b",
"object": "import",
"import_type": "product",
"live_mode": true,
"rows_imported": 0,
"rows_uploaded": 0,
"status": "pending",
"created_at": 1782485837,
"updated_at": 1782485837
}Imports
Batch Create Products
Creates multiple products in batch.
POST
/
v1
/
imports
/
products
Batch Create Products
curl --request POST \
--url https://{defaultHost}/v1/imports/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"import": {
"data": [
{
"name": "Test Product",
"slug": "test-product",
"prices": [
{
"amount": 1000,
"currency": "usd"
}
],
"product_medias": [
{
"url": "https://example.com/image.jpg"
}
]
}
]
}
}
'import requests
url = "https://{defaultHost}/v1/imports/products"
payload = { "import": { "data": [
{
"name": "Test Product",
"slug": "test-product",
"prices": [
{
"amount": 1000,
"currency": "usd"
}
],
"product_medias": [{ "url": "https://example.com/image.jpg" }]
}
] } }
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({
import: {
data: [
{
name: 'Test Product',
slug: 'test-product',
prices: [{amount: 1000, currency: 'usd'}],
product_medias: [{url: 'https://example.com/image.jpg'}]
}
]
}
})
};
fetch('https://{defaultHost}/v1/imports/products', 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://{defaultHost}/v1/imports/products",
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([
'import' => [
'data' => [
[
'name' => 'Test Product',
'slug' => 'test-product',
'prices' => [
[
'amount' => 1000,
'currency' => 'usd'
]
],
'product_medias' => [
[
'url' => 'https://example.com/image.jpg'
]
]
]
]
]
]),
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://{defaultHost}/v1/imports/products"
payload := strings.NewReader("{\n \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\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://{defaultHost}/v1/imports/products")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{defaultHost}/v1/imports/products")
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 \"import\": {\n \"data\": [\n {\n \"name\": \"Test Product\",\n \"slug\": \"test-product\",\n \"prices\": [\n {\n \"amount\": 1000,\n \"currency\": \"usd\"\n }\n ],\n \"product_medias\": [\n {\n \"url\": \"https://example.com/image.jpg\"\n }\n ]\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "f4a2dbe1-db2d-4580-99ba-264e8eebb18b",
"object": "import",
"import_type": "product",
"live_mode": true,
"rows_imported": 0,
"rows_uploaded": 0,
"status": "pending",
"created_at": 1782485837,
"updated_at": 1782485837
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Show child attributes
Show child attributes
Response
200 - application/json
Success
The UUID of the specific object.
A string describing the object type returned.
The type of record imported – one of customer, product, coupon, purchase, or subscription.
A list of associated import rows.
The number of rows successfully imported.
The status of the import – one of completed, invalid, pending, or processing.
Time at which the object was created. Measured in seconds since the Unix epoch.
Time at which the object was last updated. Measured in seconds since the Unix epoch.
Was this page helpful?
⌘I