Changelog
Every notable change to the Raster REST API, by version.
This page tracks every notable change to the Raster REST API. The format follows Keep a Changelog.
REST versioning is per-request via the Api-Version header — date
strings, e.g. Api-Version: 2026-05-20. The header is required on every
request. Every response carries Vary: Api-Version so caches key bodies per
version. Pin a version in your client; existing integrations keep working
against their pinned version until they choose to migrate.
The REST API is in Alpha. Until the Beta release, new versions may include breaking changes — review this page before upgrading an integration.
2026-06-03 — Single-asset read, key context, library management
Added
GET /:orgId/libraries/:libraryId/assets/:assetId— fetch one asset by id, returning the sameAssetshape the list endpoint returns. Reads one asset's url, tags, description, and dimensions without pagingGET /assets. Returns404when the asset is missing, in another library, or trashed. Available over GraphQL as theassetquery and over MCP as theget_assettool. SeeGET /assets/:assetId.GET /me— resolve the organization and libraries your API key can act on, so a client holding only a key can discover theorganizationIdevery org-scoped endpoint needs. Mounted at/me. Available over GraphQL as theviewerquery and over MCP as thewhoamitool. Full parameters and response shape:GET /me.POST /libraries— create an organization, a starter library, and an API key with no account and no existing key, for clients (typically AI agents) creating a library on someone's behalf. Anonymous; available over both REST and MCP (thecreate_organizationtool). Full parameters, response, and limits:POST /libraries.POST /:orgId/libraries— create a new library inside an organization you already have an API key for. The new library is granted to your key (so the same key can upload to it immediately) and is shown to your team in the web app; this needs a key with write access. Optionalslugsets the URL. Available over MCP ascreate_library. SeePOST /:orgId/libraries.PATCH /:orgId/libraries/:libraryId— rename a library; the new name shows everywhere, including each team member's view. Available over MCP asrename_library. SeePATCH /libraries/:libraryId.
Changed
DELETE /:orgId/libraries/:libraryId/assetsnow moves assets to trash (soft delete) instead of deleting them immediately, matching the Raster app. Deleted assets leaveGET /assetsand search right away, stay recoverable from trash, and are permanently removed after 30 days. The request/response shape is unchanged; the success message now reads "Moved N assets to trash", andidsreturns the assets actually moved (soids.lengthequalsN). The call is idempotent — re-deleting ids already in trash returns"Moved 0 assets to trash",ids: [],success: true. Emptying trash for good stays in the app. Applies to MCPdelete_assetsand GraphQLdeleteAssetstoo.- The anonymous, no-account MCP tool was renamed
create_library→create_organization, because it mints a whole new organization. The new authenticated MCPcreate_librarytool creates a library in an organization you already have a key for.
2026-05-28 — Asset metadata mutations
Added
- Batch-tag, untag, transfer, and re-describe assets over REST. Four new
Write endpoints round out the metadata surface — agents and clients
can now keep tags, descriptions, and library organization in sync
without falling back to the web app:
POST /:orgId/libraries/:libraryId/assets/tag— apply up to 20 tags to up to 100 assets, returns{ taggedCount }. SeePOST /assets/tag.POST /:orgId/libraries/:libraryId/assets/untag— symmetric remove, returns{ untaggedCount }. SeePOST /assets/untag.PATCH /:orgId/libraries/:libraryId/assets/:assetId/description— replace a single asset's description verbatim (no trim, no AI rewrite), returns{ assetId, description }. SeePATCH /:assetId/description.POST /:orgId/libraries/:libraryId/assets/transfer— move up to 100 assets to another library in the same organization, returns{ transferredCount, sourceLibraryId, targetLibraryId }. SeePOST /assets/transfer.
2026-05-27 — Search API + Uploader cleanup
Added
GET /:orgId/search/assets— search assets across the libraries an API key authorizes. Organization-scoped; supportsq,libraries,page, andpageSize. ReturnsSearchResultwithhits,found, andpage; each hit is anAssetplus optionalhighlightsandscore. SeeGET /search/assets.- Objects reference page consolidating the wire shapes
(
Asset,Library,Tag,SearchHit,SearchResult,SearchHitHighlights,Uploader,AssetView). Endpoint pages now link here instead of inlining each type.
Removed
Uploader.integrationremoved from the wire. The source- identifier field is no longer returned onuploadedBy. Clients readinguploadedBy.integrationwill receiveundefined. The fullUploadershape is now{ name }. Allowed under the Alpha policy at the top of this page.
2026-05-20 — Initial Alpha release
Added
- REST transport at
https://api.raster.app/organizations/..., mirroring the GraphQL surface over the same data and the same API keys. Api-Versionrequest header (required) andVary: Api-Versionresponse header on every reply.{ data }/{ error: { code, message } }response envelope on every endpoint, including auth rejections and unknown-path404s.GET /:orgId/libraries— list libraries in an organization.GET /:orgId/libraries/:libraryId/assets— list assets, withpage,pageSize, andtagsfilters (repeatable or comma-separated).GET /:orgId/libraries/:libraryId/tags— list tags withlimit.POST /:orgId/libraries/:libraryId/assets— multipart upload (filesfield), returns each new asset including a permanent CDNurl.DELETE /:orgId/libraries/:libraryId/assets— batch delete by id.- Timestamps on the wire are unix milliseconds (
number).
Security
- Bearer-token authentication on every endpoint.
- Per-library access levels (Read / Write) enforced on every request before any data is read or written.