Skip to main content
The source maps API stores the JavaScript source maps of a service release. Squasher uses them to resolve minified stack frames to the original file, line, column, and function. See Upload source maps for how Squasher matches a frame to a map.

Operations

Uploads should include the release value that the SDK sends. Keep release names stable between event capture and upload.

Upload source maps

Send a multipart form with these fields: Limits: at most 200 files, 32 MiB for each file, and 96 MiB for each request. A larger request gets status 413; send the files in more than one request. A file name must be a relative path without . or .. parts, and names must not contain control characters (status 400). Each upload is stored as a new object, so a new upload of the same file name does not change older uploads. The response has status 201:
debug_id is the debugId field of the map, or null when the bundler did not write one. A frame with this debug ID resolves to this map in any release. Each entry of sourcemaps.list also has debug_id.

Resolve stack frames

sourcemaps.symbolicate resolves up to 100 frames in one request. It changes no data.
The response lists the frames in request order:
matched_by is debug_id or filename. context is null when the map has no sourcesContent for the file. When the map does not name the function, original.function is the function name of the raw frame. A frame that keeps its minified location has status: "unchanged", a reason, and a hint:

CLI and MCP

squasher sourcemaps upload accepts .map files, bundle .js files, and directories. For a bundle, it uploads the map that the sourceMappingURL comment names, as <bundle>.map. squasher sourcemaps symbolicate takes frames as arguments, or a stack trace with --stack-file <file>. The hosted MCP server can list maps and resolve frames. Uploads need files, so they are an API or CLI task, not an MCP task.

Agent handoff

Related: Upload source maps.