- File search through
client.files.search, including full-text, exact, metadata, tag, range, and image filters, sorting, highlights,include=appdata, and POST-aware pagination - Per-file tags through
client.file_tagswith list, replace, and atomic add/delete operations - Upload-time
tags:support for direct, batch, URL, and multipart uploads - The
tagsattribute on file resources returned by the REST API
v5 is stable.
No API changes since 5.0.0.rc1.
This cut removes the prerelease suffix, ports the relevant upstream release-readiness updates, and publishes the v5 line as stable.
Please review MIGRATING_V5.md before upgrading from v4.x.
- New client-first public API centered on
Uploadcare::Client - Full endpoint-parity access through
client.api.restandclient.api.upload - Canonical endpoint examples for the REST API and Upload API under
api_examples/ - Updated workflow-oriented examples under
examples/ - Context7 configuration tuned for the v5 client-first API and example layout
- Multi-account configuration support through client-scoped
Uploadcare::Configuration - Documented internal API surface through YARD for maintainers and integrators
- Ruby 4.0 support in the test matrix
- Replaced the older flatter API shape with a layered API:
- convenience layer for application code
- raw parity layer for exact endpoint access
- Replaced
dry-configurablewith a plain Ruby configuration object - Replaced legacy HTTP and autoloading patterns with Faraday and Zeitwerk
- Standardized resource and collection return types across the convenience layer
- Reworked README, migration docs, and examples to match the current v5 API
- Upload IO normalization for both path-backed files and generic readable streams
- Client/config scoping so resources do not silently fall back to the wrong account context
- Video conversion
storeparameter normalization - Document conversion boolean option normalization to match video conversion behavior
- REST request signing so the resolved
Content-Typeis the same value used for both signing and transmission - REST query signing to use the same parameter encoding style as request transmission
- Multipart upload retry semantics so
max_retriesmeans retries after the initial attempt - Multipart upload part retries/timeouts now honor configuration (
max_upload_retries,upload_timeout) - Multipart upload worker cancellation after first parallel upload error to avoid unnecessary in-flight uploads
- Multipart upload start payload no longer sends unsupported
part_sizeto/multipart/start/ - Upload-from-URL polling now supports exponential backoff with a configurable cap
- Example cleanup to avoid leaking temporary files and groups in the demo project
- Standalone example loading and script execution
- File metadata resource initialization now correctly assigns instance UUID
- Upload API batch uploads now avoid filename collisions without mutating caller-visible filenames
- REST authenticator now uses deterministic protocol-required digests (
MD5body digest andSHA1HMAC digest) - Upload API debug logger now avoids emitting request/response headers and bodies by default
- Thread-safe lazy memoization for client/accessor/API endpoint objects and CNAME cache internals
- Test fixture generation now closes source and destination file handles correctly
- Support for Ruby versions below
3.3 - Legacy configuration and transport patterns that were no longer aligned with the v5 architecture
- Ruby support baseline is now
>= 3.3; verify application/runtime images before upgrading. - Recommended rollout: wire explicit
Uploadcare::Clientinstances first, then migrate call sites incrementally. - Validate large-file uploads because multipart retry and cancellation behavior was hardened.
- Validate custom REST signing integrations if your app reimplements signing outside this gem.
- After deploy, monitor upload errors, multipart worker failures, and REST signing errors for 24-72 hours.
- Keep rollback simple by pinning to the latest v4 release if your app depends on removed internal APIs.
- CDN Subdomain Support: Added support for automatic subdomain generation to improve CDN performance and caching.
- New
CnameGeneratorclass for generating CNAME prefixes based on public key using SHA256 hashing - Configuration options:
use_subdomains- Enable automatic subdomain generation (default:false)cdn_base_postfix- Base domain for subdomain generation (default:https://ucarecd.net/)default_cdn_base- Original CDN base URL (default:https://ucarecdn.com/)cdn_base- Dynamic CDN base selection based on subdomain configuration
- New
cdn_urlmethod forFileandGroupentities to get CDN URLs using configured base - New
file_cdn_urlsmethod forGroupentities to get CDN URLs of all files in a group without API requests
- New
- New
Uploadcare::Exception::ConfigurationErrorfor configuration-related errors - Ruby 3.4 support added to test matrix
- Multi page conversion parameter (
save_in_group) added toDocumentConverter#convertoptions.
- Fixed that signed URLs now work with ~ in the path. This also fixes signed URLs with grouped file URLs.
- Fixed the
Uploadcare::File.remote_copymethod which raised anApiStruct::EntityError: {url} must be Hash. Now returns a string instead of aFileentity instance.
Document InfoAPI added inDocumentConverter.
- Added
AWS Rekognition ModerationAdd-On. - Added an optional
wildcardboolean parameter to thegenerate_urlmethod ofAkamaiGenerator.
- File attribute
datetime_storedis deprecated and will warn on usage fromFileobject properties.
- Throw
AuthErrorif current public key or secret key config are empty when accessing any of the APIs. AmakaiGeneratorhas been renamed toAkamaiGeneratorto fix typo in class name.
- Drop support of unmaintainable Ruby versions < 3.x.
- Update locations where Dry::Monads structure has changed.
- Sign URL uploads if configured (#139).
- Start returning proper error message when raising RequestError in poll_upload_response, to hint to users what is going on. Fixes #141.
- When polling, raise if an error is returned (#142).
- Fix documentation about original file url on simple file upload.
- Support params in Rest client and in file info method, to allow passing custom params like "include=appdata" in
Uploadcare::File.filecalls. Closes #132.
- Updated the version of the REST Api for conversion clients (closes #135).
- Updated behavior to exclude sending blank values in the
storeparam.
- Use
autoas the default value for thestoreparam.
- Use
file_inforequest after a file upload if the secret key is not provided.
- Add a new
file_infomethod to retreive file information without the secret key.
- Improved readme to look better at ruby-doc
- Update the gem description
- Allow ENV keys to be configured after the gem load
Add support of new ruby versions
- Drop support of unmaintainable Ruby versions (2.4, 2.5, 2.6).
- Replace unmaintainable
api_structwithuploadcare-api_struct
- Add support for Ruby 3+ (3.0, 3.1, 3.2).
This version supports latest Uploadcare REST API — v0.7, which introduces new file management features:
- For
Uploadcare::File#info- File information doesn't return
image_infoandvideo_infofields anymore - Removed
rekognition_infoin favor ofappdata - Parameter
add_fieldswas renamed toinclude
- File information doesn't return
- For
Uploadcare::FileList#file_list- Removed the option of sorting the file list by file size
- For
Uploadcare::Group#store- Changed response format
- For
Uploadcare::File- Removed method
copyin favor oflocal_copyandremote_copymethods
- Removed method
- For
Uploadcare::File#info- Field
content_infothat includes mime-type, image (dimensions, format, etc), video information (duration, format, bitrate, etc), audio information, etc - Field
metadatathat includes arbitrary metadata associated with a file - Field
appdatathat includes dictionary of application names and data associated with these applications
- Field
- Add Uploadcare API interface:
Uploadcare::FileMetadataUploadcare::Addons
- Added an option to delete a Group
- For
Uploadcare::Fileaddlocal_copyandremote_copymethods
- Fixes dry-configurable deprecation warnings
- Fixed README:
Uploadcare::URLGenerators::AmakaiGenerator>Uploadcare::SignedUrlGenerators::AmakaiGenerator - Autoload generators constants
- Added
Uploadcare::URLGenerators::AmakaiGenerator. Use custom domain and CDN provider to deliver files with authenticated URLs
- Added option
signing_secretto theUploadcare::Webhook - Added webhook signature verifier class
Uploadcare::Param::WebhookSignatureVerifier
- Fixed
Uploadcare::File#store - Fixed
Uploadcare::File#delete
- Added documents and videos conversions
- Added new attributes to the Entity class (
variations,video_info,source,rekognition_info) - Added an option to add custom logic to large files uploading process
- Replace Travis-CI with Github Actions
- Automate gem pushing
- Added better pagination methods for
GroupList&FileList - Improved documentation and install instructions
- Added CI
- Added better pagination and iterators for
GroupList&FileList
- Expanded
FileandGroupentities - Changed user agent syntax
- Added Upload/group functionality
- Added user API
- Added user agent
- Isolated clients, entities and concerns
- Expanded documentation
- Rewrote gem from scratch
- Client wrappers for REST API
- Serializers for REST API
- Client wrappers for Upload API
- Serializers for Upload API
- rdoc documentation