Skip to main content
POST
/
bulk-operations
Create Bulk Operation
curl --request POST \
  --url https://api.loopreturns.com/api/v1/bulk-operations \
  --header 'Content-Type: multipart/form-data' \
  --header 'X-Authorization: <api-key>' \
  --form file='@example-file'
import requests

url = "https://api.loopreturns.com/api/v1/bulk-operations"

files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"X-Authorization": "<api-key>"}

response = requests.post(url, files=files, headers=headers)

print(response.text)
const form = new FormData();
form.append('file', '<string>');

const options = {method: 'POST', headers: {'X-Authorization': '<api-key>'}};

options.body = form;

fetch('https://api.loopreturns.com/api/v1/bulk-operations', 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.loopreturns.com/api/v1/bulk-operations",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--",
  CURLOPT_HTTPHEADER => [
    "Content-Type: multipart/form-data",
    "X-Authorization: <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.loopreturns.com/api/v1/bulk-operations"

	payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-Authorization", "<api-key>")

	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.loopreturns.com/api/v1/bulk-operations")
  .header("X-Authorization", "<api-key>")
  .body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.loopreturns.com/api/v1/bulk-operations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-Authorization"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001--"

response = http.request(request)
puts response.read_body
{
  "bulk_operation": {
    "id": 123,
    "pending_count": 123,
    "failed_count": 123,
    "success_count": 123,
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  }
}
{
  "errors": "<string>"
}
{
  "message": "<string>",
  "errors": {}
}

Authorizations

X-Authorization
string
header
required

API Scope: "Bulk Operations (write)"

Body

multipart/form-data
file
file
required

The JSONL file containing the data for the bulk operations.

Each line contains an individual operation, formatted as follows:

{"type": "{job type}", "parameters": {}, "payload": {}}

The following job types are supported:

For most job types, id is the only parameter. Product variant jobs require id to be the product variant ID and productId to be the product ID.

Payload details can be found in the documentation for each job, linked above.

Lines must be separated with \n.

There is no limit to the number of lines that can be included in a file, but bulk operation files are limited to 2 MB in size.

Response

Success

bulk_operation
object