Skip to content
hideslop

Developers

HideSlop API and MCP server

Everything the studio does, over HTTP. Send a public file URL, get back a clean file with its AI metadata removed and a new fingerprint. The same credits work everywhere: 1 per image, 10 per video.

Quickstart

Create a key in your dashboard, then send your first request. By default the response arrives when the file is ready, usually within seconds for images and under a minute for video. If it takes longer than four minutes you get a 202 to poll instead, so use a client timeout of at least 300 seconds. For queues and serverless callers, send "async": true to get the 202 straight away. Every removal also has a page_url: a phone-friendly page with a Save to Photos button, handy to send to whoever posts it.

curl https://hideslop.com/api/v1/remove/video \
  -H "Authorization: Bearer hs_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://example.com/clip.mp4",
    "device": "random"
  }'

Authentication

Send your key as Authorization: Bearer hs_live_.... The X-API-Key header also works. Keys are shown once when created and stored only as a hash, so keep them in a secret manager. Revoke a key from the dashboard at any time.

Remove AI from a video

POST/api/v1/remove/video

Costs 10 credits. The source must be a publicly downloadable MP4, MOV or WebM file.

FieldTypeDescription
video_urlstringRequired. Public http(s) URL of the source video.
preset"auto" | "random" | "none"Defaults to "auto": fresh, invisible micro edits on every call. "random" uses the full range. "none" keeps neutral values and only rewrites metadata.
devicestringA device model from the list below, or "random" for a weighted realistic pick. Defaults to the preset's choice.
asyncbooleanAnswer 202 with the removal right away instead of waiting. Poll GET /api/v1/removals/{id}, which the Location header points to.
parametersobjectOptional overrides applied on top of the preset. See Parameters.

Remove AI from images

POST/api/v1/remove/images

Costs 1 credit per image, charged only for images that succeed. Send up to 20 images. Each image draws its own preset values.

FieldTypeDescription
image_urlsstring[]Public JPG, PNG or WebP URLs. Or use image_url for a single image.
imagesobject[]Alternative to image_urls with per-image overrides: [{ "image_url": "...", "quality": 97 }].
preset"auto" | "random" | "none"Defaults to "auto": fresh, invisible micro edits on every call. "random" uses the full range. "none" keeps neutral values and only rewrites metadata.
devicestringA device model from the list below, or "random" for a weighted realistic pick. Defaults to the preset's choice.
asyncbooleanAnswer 202 with the removal right away instead of waiting. Poll GET /api/v1/removals/{id}, which the Location header points to.
parametersobjectOptional overrides for every image. See Parameters.
curl https://hideslop.com/api/v1/remove/images \
  -H "Authorization: Bearer hs_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "image_urls": [
      "https://example.com/slide-1.png",
      "https://example.com/slide-2.png"
    ],
    "device": "iPhone 16 Pro Max"
  }'

Presets and devices

auto is what the studio uses by default: zoom between 1.02 and 1.08x for video and 1.01 to 1.05x for images, a few percent of color, gamma and speed variation, light grain and a weighted random phone. These values are invisible to viewers and different on every call.

Accepted values for device:

  • random
  • iPhone 17 Pro Max
  • iPhone 17 Pro
  • iPhone 17
  • iPhone 16 Pro Max
  • iPhone 16 Pro
  • iPhone 16
  • iPhone 15 Pro Max
  • iPhone 15 Pro
  • iPhone 15
  • iPhone 14 Pro Max
  • iPhone 14 Pro
  • iPhone 14
  • iPhone 13 Pro Max
  • iPhone 13 Pro
  • iPhone 13
  • Ray-Ban Meta Smart Glasses

Parameters

All parameters are optional. Values outside the ranges below are rejected with a 400 error.

Video

FieldTypeDescription
playbackSpeed0.5 to 2Tiny speed changes shift every frame timestamp.
volume0 to 2Changes the audio waveform fingerprint.
timeShift-5 to 5Offsets the start so frame-by-frame matching misaligns.
frameBlending0 to 1Blends neighbouring frames by a hair.
zoomFactor0.5 to 2A slight crop moves every pixel off its original grid.
blend0 to 1Mixes in a faint overlay layer.
brightness-1 to 1Keep within ±0.03 to stay invisible.
contrast0 to 21.00 is unchanged.
saturation0 to 21.00 is unchanged.
hueShift-180 to 180A few degrees changes color histograms.
gamma0.1 to 31.00 is unchanged.
temperature0.1 to 2Warms or cools the white balance.
noise0 to 1Sensor-like grain, like a real phone camera.
sharpness0 to 21.00 is unchanged.
hue-180 to 180Secondary hue rotation, separate from hueShift.
bilateVariation0 to 2Bilateral filter variation. 1 is unchanged.
removeAudiobooleanDrop the audio track entirely.
deviceModelstringSame as device, inside parameters.

Images

FieldTypeDescription
quality60 to 100JPEG quality. 92 to 97 matches real phone photos.
zoomFactor0.5 to 2A slight crop moves every pixel off its original grid.
brightness-1 to 1Keep within ±0.03 to stay invisible.
contrast0 to 21.00 is unchanged.
saturation0 to 21.00 is unchanged.
hueShift-180 to 180A few degrees changes color histograms.
gamma0.1 to 31.00 is unchanged.
temperature0.1 to 2Warms or cools the white balance.
noise0 to 0.5Sensor-like grain, like a real phone camera.
sharpness0 to 21.00 is unchanged.
flipHorizontalbooleanMirror the image left to right.
flipVerticalbooleanFlip the image upside down.
hue-180 to 180Alias of hueShift.

Responses and errors

Successful calls return a removal. Each output has a url on hideslop.com that redirects to a short-lived signed download, and a download_url that saves it with a clean filename. Files are deleted at expires_at, 24 hours after processing, so copy anything you want to keep. Errors use a stable code field.

{
  "id": "rmv_8fK2c9QwLm3Tn0aXvB7e",
  "kind": "video",
  "status": "succeeded",
  "billing": "credits",
  "credits_charged": 10,
  "credits_remaining": 290,
  "processing_ms": 41234,
  "created_at": "2026-10-12T14:03:11.000Z",
  "finished_at": "2026-10-12T14:03:52.000Z",
  "expires_at": "2026-10-13T14:03:52.000Z",
  "page_url": "https://hideslop.com/r/rmv_8fK2c9QwLm3Tn0aXvB7e",
  "output_url": "https://hideslop.com/api/files/rmv_8fK2c9QwLm3Tn0aXvB7e/0",
  "outputs": [
    {
      "input_url": "https://example.com/clip.mp4",
      "url": "https://hideslop.com/api/files/rmv_8fK2c9QwLm3Tn0aXvB7e/0",
      "download_url": "https://hideslop.com/api/files/rmv_8fK2c9QwLm3Tn0aXvB7e/0?download=1",
      "parameters": { "deviceModel": "iPhone 16 Pro", "zoomFactor": 1.043, "playbackSpeed": 0.991 }
    }
  ],
  "error": null
}
FieldTypeDescription
400 invalid_requestMissing or invalid fields. See error.details for each issue.
401 unauthorizedMissing, invalid or revoked API key.
402 insufficient_creditsNot enough credits. Nothing was charged.
429 rate_limitedMore than 60 requests a minute on one key. Retry after the Retry-After header.
502 upstream_failedProcessing failed. Credits were refunded automatically. Safe to retry.

Other endpoints

GET/api/v1/credits

Returns { "credits": 290, "lifetime_purchased": 1250, "lifetime_spent": 960 } for the key's account.

GET/api/v1/removals/{id}

Fetches a removal you created, including its status and outputs. Statuses are processing, succeeded and failed. A failed removal carries error.message, and its credits are already refunded.

GET/api/v1/devices

Lists device profiles and credit costs. No key required.

MCP server

HideSlop speaks the Model Context Protocol over Streamable HTTP at https://hideslop.com/api/mcp. Authenticate with the same API key as a bearer token. Tools: remove_ai_video, remove_ai_images, get_removal, get_credits and list_devices.

claude mcp add --transport http hideslop https://hideslop.com/api/mcp \
  --header "Authorization: Bearer hs_live_your_key"

Then ask your agent something like "remove the AI label from this video so I can repost it: https://..." and it will call the tool and return the download link.

Limits

  • 60 requests per minute per key.
  • Videos up to 150 MB, images up to 20 MB each, 20 images per call.
  • Source URLs must be publicly reachable over http or https.
  • Output files are deleted 24 hours after processing. Their links then answer 410.