<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: TheGlitch</title>
    <description>The latest articles on DEV Community by TheGlitch (@theglitchapp).</description>
    <link>https://dev.to/theglitchapp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3784372%2F3664b2d1-22a2-456d-9f4f-270863f251a0.jpg</url>
      <title>DEV Community: TheGlitch</title>
      <link>https://dev.to/theglitchapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/theglitchapp"/>
    <language>en</language>
    <item>
      <title>Image Processing in Your AI Workflow: TheGlitch MCP Integration</title>
      <dc:creator>TheGlitch</dc:creator>
      <pubDate>Thu, 05 Mar 2026 20:16:59 +0000</pubDate>
      <link>https://dev.to/theglitchapp/image-processing-in-your-ai-workflow-theglitch-mcp-integration-ng6</link>
      <guid>https://dev.to/theglitchapp/image-processing-in-your-ai-workflow-theglitch-mcp-integration-ng6</guid>
      <description>&lt;p&gt;If you've been following MCP (Model Context Protocol) adoption over the past few months, you've probably noticed a pattern: the most useful MCP servers are the ones that replace something you were already doing manually.&lt;/p&gt;

&lt;p&gt;TheGlitch just became one of those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Background
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://theglitch.app" rel="noopener noreferrer"&gt;TheGlitch&lt;/a&gt; is a stateless image processing API — REST endpoints for resize, format conversion, effects, AI background removal, optimization, and social media presets. Nothing stored, everything processed in memory and returned as binary.&lt;/p&gt;

&lt;p&gt;It's been on RapidAPI since February. What's new is that it's now available as an MCP server, which means you can call it from Claude Desktop, Claude Code, Cursor, VS Code, or any MCP-compatible client using natural language.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setup (90 Seconds)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Get a RapidAPI key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Free plan: 500 requests/month, no credit card.&lt;br&gt;
→ &lt;a href="https://rapidapi.com/theglitchapp/api/theglitch-image-processing" rel="noopener noreferrer"&gt;rapidapi.com/theglitchapp/api/theglitch-image-processing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Add MCP config&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"TheGlitch Image Processing"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"mcp-remote"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.rapidapi.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"x-api-host: theglitch-image-processing.p.rapidapi.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"--header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"x-api-key: YOUR_RAPIDAPI_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Config file location by client:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Desktop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.mcp.json&lt;/code&gt; (project root)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.cursor/mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VS Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.vscode/mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Node.js required (for &lt;code&gt;npx&lt;/code&gt;). No manual package installs — &lt;code&gt;npx&lt;/code&gt; fetches &lt;code&gt;mcp-remote&lt;/code&gt; automatically on first run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Restart your AI client&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Exposed
&lt;/h2&gt;

&lt;p&gt;Seven endpoints map directly to MCP tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;process&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full pipeline: resize + effects + format conversion in one call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;resize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resize to width, height, or both with a resize mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;convert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Convert between JPEG, PNG, WebP, GIF, BMP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effects&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Brightness, contrast, saturation, blur, sharpen, grayscale, sepia, rotate, flip&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;remove-bg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI background removal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;optimize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File size reduction with quality control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;preset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Social media presets (instagram-square, facebook-cover, youtube-thumbnail, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Prompt Examples
&lt;/h2&gt;

&lt;p&gt;These aren't hypothetical — these are real natural language prompts that map cleanly to API calls:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resize https://example.com/photo.jpg to 800x600 and convert to WebP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remove the background from this product image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Apply grayscale and increase contrast by 40 to this image
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Convert this image to instagram-square format
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Optimize this image for web — target 80% quality
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI resolves the intent, calls the correct endpoint with the correct parameters, and returns the result.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Workflow Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario 1: Documentation screenshots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You have 20 screenshots to prepare for docs. Instead of running them through an external tool:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Resize all images in &lt;code&gt;/docs/screenshots&lt;/code&gt; to 1280px wide and convert to WebP"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI iterates, calls the API for each file, handles the responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 2: Product image pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Take &lt;code&gt;product.png&lt;/code&gt;, remove the background, then create three versions: instagram-square, facebook-cover, and a 800x600 web version"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three sequential MCP calls, one instruction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario 3: Pre-commit image optimization&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Before I commit, optimize all images in &lt;code&gt;public/assets/&lt;/code&gt; to WebP at 85% quality"&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How Authentication Works
&lt;/h2&gt;

&lt;p&gt;MCP calls use the same RapidAPI key as direct REST calls. Same plan, same rate limits, same usage counter. No separate key management.&lt;/p&gt;

&lt;p&gt;Under the hood, &lt;code&gt;mcp-remote&lt;/code&gt; proxies through &lt;code&gt;mcp.rapidapi.com&lt;/code&gt;, which RapidAPI hosts. Your key authenticates both channels — you don't need to set up anything separately.&lt;/p&gt;




&lt;h2&gt;
  
  
  Available Plans
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Requests/month&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BASIC&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PRO&lt;/td&gt;
&lt;td&gt;15,000&lt;/td&gt;
&lt;td&gt;$12/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ULTRA&lt;/td&gt;
&lt;td&gt;75,000&lt;/td&gt;
&lt;td&gt;$39/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MEGA&lt;/td&gt;
&lt;td&gt;300,000&lt;/td&gt;
&lt;td&gt;$99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Background removal counts as GPU usage, tracked separately from regular CPU requests.&lt;/p&gt;




&lt;h2&gt;
  
  
  Full API Reference
&lt;/h2&gt;

&lt;p&gt;Everything is documented at &lt;a href="https://theglitch.app/docs" rel="noopener noreferrer"&gt;theglitch.app/docs&lt;/a&gt; — all parameters, response formats, error codes, and the complete MCP setup guide.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're building something with this or have questions about the integration, drop a comment.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>imageprocessing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Stateless Image Processing API — Here's How It Works</title>
      <dc:creator>TheGlitch</dc:creator>
      <pubDate>Sat, 21 Feb 2026 21:41:15 +0000</pubDate>
      <link>https://dev.to/theglitchapp/i-built-a-stateless-image-processing-api-heres-how-it-works-7ho</link>
      <guid>https://dev.to/theglitchapp/i-built-a-stateless-image-processing-api-heres-how-it-works-7ho</guid>
      <description>&lt;p&gt;Every web project eventually runs into the same problem: you need to resize an image, convert a format, maybe add some effects, or strip a background. You can set up ImageMagick, wrestle with Sharp, or build custom pipelines — or you can make one HTTP call.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;TheGlitch&lt;/strong&gt; — a stateless image processing API that handles everything in a single request.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Image processing infrastructure is surprisingly complex:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installing native dependencies on different OS targets&lt;/li&gt;
&lt;li&gt;Managing temporary files and disk cleanup&lt;/li&gt;
&lt;li&gt;Handling format quirks (AVIF support, GIF animation, color profiles)&lt;/li&gt;
&lt;li&gt;GPU acceleration for AI operations like background removal&lt;/li&gt;
&lt;li&gt;Scaling under load without leaking memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted an API where you send an image in and get a processed image out. Nothing stored, nothing cached on disk, no state between requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;TheGlitch processes images entirely in memory. The pipeline looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input (URL/base64/binary/form) 
  → Decode &amp;amp; Validate 
  → Resize &amp;amp; Crop 
  → Apply Effects 
  → Format Convert 
  → Return Binary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A single GET request can do everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://theglitch.p.rapidapi.com/api/v1/process?&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
url=https://picsum.photos/1000&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
width=800&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
format=webp&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
brightness=10&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
contrast=15&amp;amp;&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
sharpen=20"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-RapidAPI-Key: YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-RapidAPI-Host: theglitch.p.rapidapi.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; result.webp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Resize &amp;amp; Crop&lt;/strong&gt; — Four modes: fit (preserve aspect ratio), fill (crop to exact size), pad (add borders), stretch. Resolutions up to 8000x8000px.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Format Conversion&lt;/strong&gt; — Input/output: JPEG, PNG, WebP, GIF, BMP, TIFF. Quality control per format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7 Visual Effects&lt;/strong&gt; — Brightness, contrast, saturation, blur, sharpen, grayscale, sepia. All combinable in one request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Background Removal&lt;/strong&gt; — GPU-powered, takes about 3 seconds per image. Returns transparent PNG.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14 Social Media Presets&lt;/strong&gt; — Instagram square, Facebook cover, YouTube thumbnail, LinkedIn banner, and more. One parameter instead of remembering dimensions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Examples
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;JavaScript:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://theglitch.p.rapidapi.com/api/v1/process?url=IMAGE_URL&amp;amp;width=800&amp;amp;format=webp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-RapidAPI-Key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-RapidAPI-Host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theglitch.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;blob&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Python:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://theglitch.p.rapidapi.com/api/v1/process&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;IMAGE_URL&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;width&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;format&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;webp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;X-RapidAPI-Key&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;X-RapidAPI-Host&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;theglitch.p.rapidapi.com&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;result.webp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Stateless?
&lt;/h2&gt;

&lt;p&gt;Every image is processed in memory and discarded after the response is sent. This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GDPR compliant by design&lt;/strong&gt; — no user data stored, ever&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No disk I/O bottleneck&lt;/strong&gt; — everything happens in RAM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable scaling&lt;/strong&gt; — each request is independent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No cleanup jobs&lt;/strong&gt; — nothing to garbage collect&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Decisions
&lt;/h2&gt;

&lt;p&gt;A few things I learned while building this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SkiaSharp over ImageMagick&lt;/strong&gt; — Native performance, cross-platform, no external dependencies. The tradeoff is less format support (no real AVIF encoding yet), but WebP covers most use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Replicate for GPU ops&lt;/strong&gt; — Instead of running my own GPU server, I proxy AI operations through Replicate. Background removal costs about $0.0014 per image with BiRefNet. Cold starts are free for public models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Separate CPU and GPU rate limits&lt;/strong&gt; — CPU operations (resize, effects, format) are cheap. GPU operations (background removal) are expensive. Different limits per plan make pricing fair.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single VPS deployment&lt;/strong&gt; — Docker Compose with Caddy as reverse proxy, Cloudflare in front for CDN/DDoS/SSL. Total infrastructure cost: under $6/month.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  API Endpoints
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/process&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full pipeline — resize + effects + format&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/resize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Resize only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/convert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Format conversion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/effects&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Visual effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/remove-bg&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI background removal (GPU)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/optimize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Auto-optimize for web (WebP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/api/v1/preset/{name}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Social media presets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;The API is live with a free tier (500 requests/month). Check out the before/after examples on the website, or try it directly through RapidAPI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website with live examples: &lt;a href="https://theglitch.app" rel="noopener noreferrer"&gt;theglitch.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;API on RapidAPI: &lt;a href="https://rapidapi.com/theglitchapp/api/theglitch-image-processing" rel="noopener noreferrer"&gt;TheGlitch Image Processing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I'd love to hear what features you'd find useful. Background removal was the most requested during beta — what would you want next?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>api</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
