Developer API
API Documentation
Integrate background removal into your application with our simple REST API.
Getting Started
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| 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
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Account deactivated |
| 404 | Image not found |
| 410 | Image expired / cleaned up |
| 422 | Validation error (invalid file type/size) |
| 429 | Daily API limit reached |