<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>imgd.dev blog</title>
    <link>https://imgd.dev/blog/</link>
    <description>Practical image hosting guides for developers, automation tools, and AI agents.</description>
    <language>en</language>
    <lastBuildDate>Thu, 20 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>imgd.dev</title>
      <link>https://imgd.dev/</link>
      <guid isPermaLink="true">https://imgd.dev/</guid>
      <description>Image hosting for AI agents and developers.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>imgd.dev blog</title>
      <link>https://imgd.dev/blog/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/</guid>
      <description>Practical image hosting guides.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Add Hosted Images to Markdown and README Files</title>
      <link>https://imgd.dev/blog/host-images-markdown-readme/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/host-images-markdown-readme/</guid>
      <description>Upload one image, copy its public URL, and insert it with non-empty Markdown alt text in a README.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Host Images for HTML Email Without Base64</title>
      <link>https://imgd.dev/blog/host-images-html-email/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/host-images-html-email/</guid>
      <description>Upload the image before email delivery, then reference its public URL from an HTML img element instead of embedding base64 data.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Host Puppeteer Screenshots on a Public URL</title>
      <link>https://imgd.dev/blog/puppeteer-screenshot-upload/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/puppeteer-screenshot-upload/</guid>
      <description>Use Puppeteer Page screenshot with a file path, close the browser in finally, then upload the PNG with Node fetch.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How Actionable API Errors Help AI Agents Recover</title>
      <link>https://imgd.dev/blog/actionable-api-errors-ai-agents/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/actionable-api-errors-ai-agents/</guid>
      <description>Branch on both HTTP status and the stable error code. Show the server fix verbatim, and retry only transient failures.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Create a Temporary Image URL and Restore the Same Link</title>
      <link>https://imgd.dev/blog/temporary-image-url-api/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/temporary-image-url-api/</guid>
      <description>Upload with unpublish_after_hours, confirm the public URL becomes a 404, then publish the hash again to restore the same URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Generate Alt Text During an Image Upload</title>
      <link>https://imgd.dev/blog/image-upload-alt-text-api/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/image-upload-alt-text-api/</guid>
      <description>Upload the image, poll GET /v1/images/:hash for at most 20 attempts, and use alt_text only when the terminal status is live.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Let Claude Code, Codex, or Cursor Upload Screenshots</title>
      <link>https://imgd.dev/blog/ai-coding-agent-upload-screenshot/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/ai-coding-agent-upload-screenshot/</guid>
      <description>Expose IMGD_KEY through the host environment and give the coding agent a shell script that accepts one image path and prints one public URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Moderate Terminal Screenshots Without Treating Error Text as Violence</title>
      <link>https://imgd.dev/blog/moderate-terminal-screenshots-text-false-positives/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/moderate-terminal-screenshots-text-false-positives/</guid>
      <description>Judge what a terminal screenshot depicts, not the words it contains. Require independent confirmation before a destructive moderation action.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Turn a Screenshot Into a URL From the Command Line</title>
      <link>https://imgd.dev/blog/screenshot-to-url-command-line/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/screenshot-to-url-command-line/</guid>
      <description>Capture a PNG file, upload it as the multipart file field, and print the returned imgd.dev URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Upload an Image With cURL and Get a Public URL</title>
      <link>https://imgd.dev/blog/upload-image-curl-public-url/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-curl-public-url/</guid>
      <description>Send a POST request to https://imgd.dev/v1/upload with the file field, then read the public URL from the JSON response.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Upload Playwright Failure Screenshots From GitHub Actions</title>
      <link>https://imgd.dev/blog/playwright-screenshots-github-actions/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/playwright-screenshots-github-actions/</guid>
      <description>Set Playwright screenshots to only-on-failure, guard the upload by failure and file existence, and write the returned URL to GITHUB_STEP_SUMMARY.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Image Hosting APIs Without a Subscription</title>
      <link>https://imgd.dev/blog/image-hosting-api-without-subscription/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/image-hosting-api-without-subscription/</guid>
      <description>Use imgd.dev for one-time storage, img402 for free or per-image uploads, or a competitor free plan for a limited monthly quota.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Image Moderation Thumbnail Size: Cost Versus Readability</title>
      <link>https://imgd.dev/blog/image-moderation-thumbnail-size-cost-accuracy/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/image-moderation-thumbnail-size-cost-accuracy/</guid>
      <description>imgd.dev uses MODERATION_EDGE_PX = 768 in production. The old 256-pixel setting was cheaper but made a wide screenshot unreadable.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>imgd.dev vs Cloudinary: Simple Agent Uploads or a Full Media Platform?</title>
      <link>https://imgd.dev/blog/imgd-vs-cloudinary/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/imgd-vs-cloudinary/</guid>
      <description>Choose imgd.dev for a small public-image API with one-time storage. Choose Cloudinary for video, DAM, teams, and broad transformation workflows.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>imgd.dev vs img402: Reusable Storage or Per-Image Payment?</title>
      <link>https://imgd.dev/blog/imgd-vs-img402/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/imgd-vs-img402/</guid>
      <description>Choose img402 for no-account free uploads or $0.01 per-image payment. Choose imgd.dev for reusable storage, image management, and content-addressed URLs.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Imgur API Alternatives for Automated Screenshots</title>
      <link>https://imgd.dev/blog/imgur-api-alternatives-automation/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/imgur-api-alternatives-automation/</guid>
      <description>Imgur has an API and can remain best for its community and account workflows. Choose an alternative when direct automation is the main task.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Make Image Upload Retries Safe With Content-Addressed URLs</title>
      <link>https://imgd.dev/blog/image-upload-retry-content-hash/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/image-upload-retry-content-hash/</guid>
      <description>Retry only network failures, HTTP 429, and server failures. Reuse identical bytes so imgd.dev returns the same SHA-256 hash and public URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Post a Hosted CI Screenshot in a GitHub Pull Request Comment</title>
      <link>https://imgd.dev/blog/github-pr-screenshot-comment/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/github-pr-screenshot-comment/</guid>
      <description>Run untrusted pull request code with a read token, then upload and comment only from a separate trusted job.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Resize and Convert a Hosted Image to WebP or AVIF by URL</title>
      <link>https://imgd.dev/blog/resize-convert-image-webp-avif/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/resize-convert-image-webp-avif/</guid>
      <description>Add w and fmt query values to one public image URL to request resized WebP, AVIF, JPEG, or PNG output.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Store OpenAI-Generated Images on a Stable Public URL</title>
      <link>https://imgd.dev/blog/store-openai-generated-images/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/store-openai-generated-images/</guid>
      <description>Decode the image_generation_call result from base64, then upload the PNG bytes to imgd.dev for a content-addressed public URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload a Python Chart and Embed It in a Report</title>
      <link>https://imgd.dev/blog/python-chart-public-url/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/python-chart-public-url/</guid>
      <description>Save a fixed Matplotlib chart as PNG, upload it with Requests, then print a public URL with useful report markup.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With Go</title>
      <link>https://imgd.dev/blog/upload-image-go/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-go/</guid>
      <description>Create a multipart file part with its real image media type, send it with net/http, decode success or error JSON, and verify the result.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With JavaScript and Node.js</title>
      <link>https://imgd.dev/blog/upload-image-javascript-nodejs/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-javascript-nodejs/</guid>
      <description>Read the image with Node.js, append a typed Blob to FormData as file, send it with fetch, and validate HTTP 200 or 202.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With PHP cURL</title>
      <link>https://imgd.dev/blog/upload-image-php/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-php/</guid>
      <description>Use PHP CURLFile to post an image as the file form field, then validate the JSON response and public URL.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With Python Requests</title>
      <link>https://imgd.dev/blog/upload-image-python-requests/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-python-requests/</guid>
      <description>Open the image in binary mode, send it as the multipart file field with requests, surface the server fix, and verify the result.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With Ruby Net HTTP</title>
      <link>https://imgd.dev/blog/upload-image-ruby/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-ruby/</guid>
      <description>Use Ruby Net HTTP and set_form to upload an image without an external upload gem.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With Rust and reqwest</title>
      <link>https://imgd.dev/blog/upload-image-rust/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-rust/</guid>
      <description>Use reqwest to send a multipart file field to the imgd.dev upload endpoint and read the public URL from typed JSON.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Upload an Image With TypeScript</title>
      <link>https://imgd.dev/blog/upload-image-typescript/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/upload-image-typescript/</guid>
      <description>Model success and API-error JSON, parse the response as unknown, narrow it with type guards, and accept HTTP 200 or 202.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>What Is the Best Image Host for AI Agents?</title>
      <link>https://imgd.dev/blog/best-image-hosting-api-ai-agents/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/best-image-hosting-api-ai-agents/</guid>
      <description>There is no universal best image host for AI agents. Choose imgd.dev for simple paid public storage, or choose a competitor for its specific strength.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why imgd.dev Serves a Blurred Placeholder During Image Moderation</title>
      <link>https://imgd.dev/blog/blurred-placeholder-image-moderation/</link>
      <guid isPermaLink="true">https://imgd.dev/blog/blurred-placeholder-image-moderation/</guid>
      <description>imgd.dev returns the final public URL immediately, but it does not serve unreviewed recognizable bytes. Processing is temporary; review is terminal.</description>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
