Developer API

API Documentation

Integrate background removal into your application with our simple REST API.

Getting Started

1Create an account

2Go to your Dashboard → API Keys and generate a key

3Include the key in the X-API-Key header of every request

Base URL

https://www.rmove.net/api/v1

Authentication

All API requests require an API key sent via the X-API-Key header.

Header: X-API-Key: rmv_your_api_key_here

Endpoints

POST /api/v1/remove-bg

Upload an image and remove its background. Returns a job UUID for tracking.

Request

ParameterTypeRequiredDescription
image file Yes Image file (PNG, JPG, JPEG, WebP). Max 10 MB

Response (202)

{
    "success": true,
    "data": {
        "uuid": "a1b2c3d4-e5f6-...",
        "status": "pending",
        "status_url": "https://www.rmove.net/api/v1/status/a1b2c3d4-e5f6-..."
    }
}
GET /api/v1/status/{uuid}

Check the processing status of an image.

Response (200)

{
    "success": true,
    "data": {
        "uuid": "a1b2c3d4-e5f6-...",
        "status": "completed",
        "original_filename": "photo.jpg",
        "original_size": 245000,
        "processed_size": 180000,
        "processing_time": 2.45,
        "download_url": "https://www.rmove.net/api/v1/download/a1b2c3d4-e5f6-...",
        "created_at": "2024-01-15T10:30:00.000Z"
    }
}
GET /api/v1/download/{uuid}

Download the processed image as a transparent PNG.

Downloaded once and removed — Content-Type: image/png

GET /api/v1/usage

Get your current usage statistics and remaining quota.

{
    "success": true,
    "data": {
        "daily_limit": 100,
        "used_today": 15,
        "remaining_today": 85,
        "total_processed": 1250
    }
}

Code Examples

P PHP (cURL)

<?php

// Step 1: Upload image
$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://www.rmove.net/api/v1/remove-bg',
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: rmv_your_api_key_here',
    ],
    CURLOPT_POSTFIELDS => [
        'image' => new CURLFile('/path/to/image.jpg'),
    ],
]);

$response = json_decode(curl_exec($curl), true);
$uuid = $response['data']['uuid'];

// Step 2: Poll status
do {
    sleep(2);
    $status = json_decode(file_get_contents(
        "https://www.rmove.net/api/v1/status/{$uuid}",
        false,
        stream_context_create(['http' => [
            'header' => "X-API-Key: rmv_your_api_key_here"
        ]])
    ), true);
} while ($status['data']['status'] === 'pending');

// Step 3: Download result
if ($status['data']['status'] === 'completed') {
    $downloadUrl = $status['data']['download_url'];
    // Download the PNG...
}

JS JavaScript (Fetch)

const API_KEY = 'rmv_your_api_key_here';
const BASE = 'https://www.rmove.net/api/v1';

// Step 1: Upload
const form = new FormData();
form.append('image', fileInput.files[0]);

const { data } = await fetch(`${BASE}/remove-bg`, {
    method: 'POST',
    headers: { 'X-API-Key': API_KEY },
    body: form,
}).then(r => r.json());

// Step 2: Poll until done
let status;
do {
    await new Promise(r => setTimeout(r, 2000));
    status = await fetch(`${BASE}/status/${data.uuid}`, {
        headers: { 'X-API-Key': API_KEY },
    }).then(r => r.json());
} while (status.data.status === 'pending');

// Step 3: Download
if (status.data.status === 'completed') {
    const blob = await fetch(status.data.download_url, {
        headers: { 'X-API-Key': API_KEY },
    }).then(r => r.blob());
    // Use the blob...
}

Error Codes

CodeMeaning
401Missing or invalid API key
403Account deactivated
404Image not found
410Image expired / cleaned up
422Validation error (invalid file type/size)
429Daily API limit reached