Use cases

Built for ecommerce, media pipelines, and automated asset workflows

Removit API v1 is a strong fit for API backend integration when teams need a predictable image processing API with explicit upload and polling steps.

Ecommerce catalog production

Generate consistent output assets for product listings, marketplaces, and merchandising teams.

Automated developer integrations

Use the API documentation to build secure upload, polling, and result retrieval flows in backend services or workers.

Media and asset pipelines

Plug the API into DAM, PIM, CMS, or orchestration layers that already manage remote assets and job queues.

Product photo automation

Automate product image cleanup and output delivery for ecommerce listing workflows.

Clipping workflows

Trigger clipping jobs and recover final renders or intermediate variations for downstream pipelines.

CMS, DAM and PIM bridges

Use a backend or proxy layer to integrate Removit API into your catalog and asset systems.

Quick sample

Only two requests to understand the model

This API documentation example shows the two essential calls behind the asynchronous API contract: create the job, then poll the job status API.

cURLJavaScriptPHPPython
curl -X POST "https://api.removit.eu/api/v1/upload" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: <YOUR_API_KEY>" \
  -d '{
    "file_url": "https://example.com/image.jpg",
    "mode": "background"
  }'

curl "https://api.removit.eu/api/v1/status?job_id=<JOB_ID>" \
  -H "X-API-Key: <YOUR_API_KEY>"
const BASE_URL = "https://api.removit.eu";
const API_KEY = process.env.REMOVIT_API_KEY;

async function uploadAndPoll() {
  const uploadRes = await fetch(`${BASE_URL}/api/v1/upload`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-API-Key": API_KEY,
    },
    body: JSON.stringify({
      file_url: "https://example.com/image.jpg",
      mode: "background",
    }),
  });

  const upload = await uploadRes.json();
  const jobId = upload.job_id;

  return fetch(
    `${BASE_URL}/api/v1/status?job_id=${encodeURIComponent(jobId)}`,
    { headers: { "X-API-Key": API_KEY } },
  );
}
$baseUrl = "https://api.removit.eu";
$apiKey = getenv("REMOVIT_API_KEY");

$uploadCh = curl_init("{$baseUrl}/api/v1/upload");
curl_setopt_array($uploadCh, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "X-API-Key: {$apiKey}",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "file_url" => "https://example.com/image.jpg",
        "mode" => "background",
    ]),
]);

$upload = json_decode(curl_exec($uploadCh), true);
curl_close($uploadCh);

$statusCh = curl_init("{$baseUrl}/api/v1/status?job_id=" . rawurlencode($upload["job_id"]));
curl_setopt_array($statusCh, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: {$apiKey}"],
]);

$status = json_decode(curl_exec($statusCh), true);
curl_close($statusCh);
import os
import requests

base_url = "https://api.removit.eu"
api_key = os.environ["REMOVIT_API_KEY"]

upload = requests.post(
    f"{base_url}/api/v1/upload",
    headers={
        "Content-Type": "application/json",
        "X-API-Key": api_key,
    },
    json={
        "file_url": "https://example.com/image.jpg",
        "mode": "background",
    },
).json()

status = requests.get(
    f"{base_url}/api/v1/status",
    headers={"X-API-Key": api_key},
    params={"job_id": upload["job_id"]},
).json()