Changelog
Changes to the realpng API and MCP server, newest first.
October 14, 2026
POST /audit checks voice clips. Calls with an image or a video work as before.
POST /audittakesaudio_urloraudio_upload_id, an MP3, WAV or M4A, andsecondswhen you know the clip's length. Check a voice clip covers it.- A voice check is a job, polled at
GET /audit/{id}. Its answer carriesmedia: "audio", avoicelane in place ofpixelsandwatermark, andaudio, each window's reading.decided_bycan bevoice. - A voice clip costs what a video check costs. Only as much of a clip as
secondscovers is read.POST /optimizerefuses a voice clip withunsupported_media. POST /uploadsandrequest_uploadtake MP3, WAV and M4A up to the video limit.- New error codes:
audio_too_long,audio_too_large,audio_unsupportedandaudio_unreachable, as Errors lists. - The MCP server adds
audit_audio.get_processing_resultresumes it.
October 8, 2026
Both endpoints take videos. Calls with an image work as before, and every answer now says which kind it holds.
POST /auditandPOST /optimizetakevideo_urlorvideo_upload_id, andseconds, the video's length, when you know it. Check and optimize a video covers them.- A video check is a job.
POST /auditanswers it with 202 and itsid, and the newGET /audit/{id}returns its verdict with each frame's reading. - A finished video optimization returns
file_url, the optimized MP4, andvideo, each frame's optimization score. The newGET /optimize/{id}/filedownloads either kind, andGET /optimize/{id}/imagestays as the same download. - Every answer from
POST /audit,POST /optimize,GET /optimize/{id}and the webhook carriesmedia,imageorvideo. A finished image optimization also carriesfile_url. The webhook's sample signatures in Verify the signature are new, since the bodies they sign changed. POST /uploadsandrequest_uploadtake MP4, MOV and WebM up to the video limit.- New error codes:
video_too_long,video_too_large,video_unsupportedandvideo_unreachable, as Errors lists. - The MCP server adds two tools,
audit_videoandprocess_video.get_processing_resultresumes either kind of job. - The spec adds the
Media,Check,CheckedVideo,OptimizedVideo,VideoFactsandLengthDetailschemas. Regenerate any client built from it.
October 7, 2026
A finished optimization returns optimization_score, 100 minus our detectors' AI reading of the optimized file, in place of audit. This is a breaking change, so update any code that reads audit from an optimization.
GET /optimize/{id}, the webhook and the MCP toolsprocess_imageandget_processing_resultreturnoptimization_score: ascorefrom 0 to 100 and azoneofhigh,goodorlow. Read the optimization score explains them.- An optimization no longer returns a check of the optimized image, and
GET /optimize/{id}no longer takesdetail=full.POST /auditand itsdetail=fulldo not change. - The webhook body is the job as
GET /optimize/{id}answers it, on one line with no space between JSON items. It is still signed over its raw bytes inRealPNG-Signature, so a receiver that verifies the raw body needs no change. The sample signatures are new. GET /optimize/{id}/imageanswers 200 with the PNG as an attachment, in place of a 302 redirect to storage. A client that follows redirects needs no change.- An error the engine reports, in a failed optimization or an error response, carries our own
message. Codes do not change, so keep branching oncode. - The spec's
Optimizationschema hasoptimization_scorein place ofaudit, described by the newOptimizationScoreschema. Regenerate any client built from it.
October 6, 2026
The optimizer endpoints move to new paths. The paths they had at launch no longer answer, so update any call to them. Request and response fields, credits and limits do not change.
POST /optimizestarts an optimization,GET /optimize/{id}returns its status andGET /optimize/{id}/imagedownloads the optimized image.- A webhook's
image_urlis the new download link, the same oneGET /optimize/{id}returns. - The spec names their operations
startOptimization,getOptimizationanddownloadOptimization, and the job schemaOptimization. Regenerate any client built from it. - While optimizing is paused,
POST /optimizeanswers 503 with the renamed codeoptimizations_disabled, as Errors lists. - The MCP tools
process_imageandget_processing_resultkeep their names and inputs.
September 25, 2026
Version 1.0.0 of the realpng API and MCP server, and the launch of these docs.
- The REST API.
POST /auditchecks an image. Three endpoints start an optimization, return its status and download the optimized image. October 6 moved them to their current paths.POST /uploadsreturns an upload URL. - The MCP server with four tools:
audit_image,process_image,get_processing_resultandrequest_upload. - Uploads. Send a local file straight to storage with
POST /uploadsorrequest_upload, including files too large forimage_base64. - Webhooks. Pass
callback_urlwhen you start an optimization to receive the finished one as a POST, signed in theRealPNG-Signatureheader. - The OpenAPI spec at
/api/v1/openapi.json.