curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: your_api_key" \
-F "file=@dist/app.min.js.map" \
-F "url=https://example.com/assets/app.min.js" \
-F "release=1.2.3" \
-F "service_id=svc_abc123"
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('file', fs.createReadStream('dist/app.min.js.map'));
form.append('url', 'https://example.com/assets/app.min.js');
form.append('release', '1.2.3');
form.append('service_id', 'svc_abc123');
const response = await fetch('https://kodostatus.com/api/v1/sourcemaps', {
method: 'POST',
headers: {
'X-API-Key': process.env.KODO_API_KEY,
...form.getHeaders()
},
body: form
});
- name: Upload Source Maps to Kodo
run: |
for map in dist/*.map; do
js_file="${map%.map}"
curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: ${{ secrets.KODO_API_KEY }}" \
-F "file=@$map" \
-F "url=https://example.com/assets/$(basename $js_file)" \
-F "release=${{ github.ref_name }}" \
-F "service_id=svc_abc123"
done
{
"success": true,
"sourcemap": {
"id": "sm_abc123",
"url": "https://example.com/assets/app.min.js",
"release": "1.2.3",
"size_bytes": 245678,
"uploaded_at": "2024-01-15T10:00:00Z"
}
}
Source Maps
Upload Source Map
Upload source maps for readable stack traces in error reports
POST
/
sourcemaps
curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: your_api_key" \
-F "file=@dist/app.min.js.map" \
-F "url=https://example.com/assets/app.min.js" \
-F "release=1.2.3" \
-F "service_id=svc_abc123"
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('file', fs.createReadStream('dist/app.min.js.map'));
form.append('url', 'https://example.com/assets/app.min.js');
form.append('release', '1.2.3');
form.append('service_id', 'svc_abc123');
const response = await fetch('https://kodostatus.com/api/v1/sourcemaps', {
method: 'POST',
headers: {
'X-API-Key': process.env.KODO_API_KEY,
...form.getHeaders()
},
body: form
});
- name: Upload Source Maps to Kodo
run: |
for map in dist/*.map; do
js_file="${map%.map}"
curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: ${{ secrets.KODO_API_KEY }}" \
-F "file=@$map" \
-F "url=https://example.com/assets/$(basename $js_file)" \
-F "release=${{ github.ref_name }}" \
-F "service_id=svc_abc123"
done
{
"success": true,
"sourcemap": {
"id": "sm_abc123",
"url": "https://example.com/assets/app.min.js",
"release": "1.2.3",
"size_bytes": 245678,
"uploaded_at": "2024-01-15T10:00:00Z"
}
}
Source map uploads are available on Pro and Team plans.
Request
This endpoint acceptsmultipart/form-data for file uploads.
file
required
The source map file (.map)
string
required
The URL of the minified JavaScript file this map corresponds to (e.g., “https://example.com/assets/app.min.js”)
string
required
Release version this source map belongs to
string
required
Service ID
Response
Returns upload confirmation.curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: your_api_key" \
-F "file=@dist/app.min.js.map" \
-F "url=https://example.com/assets/app.min.js" \
-F "release=1.2.3" \
-F "service_id=svc_abc123"
const FormData = require('form-data');
const fs = require('fs');
const form = new FormData();
form.append('file', fs.createReadStream('dist/app.min.js.map'));
form.append('url', 'https://example.com/assets/app.min.js');
form.append('release', '1.2.3');
form.append('service_id', 'svc_abc123');
const response = await fetch('https://kodostatus.com/api/v1/sourcemaps', {
method: 'POST',
headers: {
'X-API-Key': process.env.KODO_API_KEY,
...form.getHeaders()
},
body: form
});
- name: Upload Source Maps to Kodo
run: |
for map in dist/*.map; do
js_file="${map%.map}"
curl -X POST "https://kodostatus.com/api/v1/sourcemaps" \
-H "X-API-Key: ${{ secrets.KODO_API_KEY }}" \
-F "file=@$map" \
-F "url=https://example.com/assets/$(basename $js_file)" \
-F "release=${{ github.ref_name }}" \
-F "service_id=svc_abc123"
done
{
"success": true,
"sourcemap": {
"id": "sm_abc123",
"url": "https://example.com/assets/app.min.js",
"release": "1.2.3",
"size_bytes": 245678,
"uploaded_at": "2024-01-15T10:00:00Z"
}
}
Build Tool Integration
Webpack
webpack.config.js
const KodoSourceMapPlugin = require('@kodo/webpack-plugin');
module.exports = {
devtool: 'source-map',
plugins: [
new KodoSourceMapPlugin({
apiKey: process.env.KODO_API_KEY,
serviceId: 'svc_abc123',
release: process.env.VERSION
})
]
};
Vite
vite.config.js
import { kodoSourcemaps } from '@kodo/vite-plugin';
export default {
build: { sourcemap: true },
plugins: [
kodoSourcemaps({
apiKey: process.env.KODO_API_KEY,
serviceId: 'svc_abc123',
release: process.env.VERSION
})
]
};
Source maps should not be served publicly as they expose your original source code. Upload them to Kodo and remove them from your production deployment.
⌘I