Upload a screenshot
One screenshot of the company's software (PNG, JPEG or WebP, up to 5 MB; base64 or an https URL). Metadata is stripped; it is placed on the matching component and stored private and unverified. The same image twice is skipped.
/api/v1/workspaces/:slug/upload/screenshotWrite · editor keyAuthentication
Authorization: Bearer sa_… from the workspace owner or a member. Counts against the upload rate limit.
Parameters
Path
- slugstringrequired
Workspace slug
Body
- companystringoptional
Company slug; defaults to the workspace's own company
min 1 charmax 80 chars - imagestringrequired
The screenshot: base64 (or a data: URL) of a PNG, JPEG or WebP up to 5 MB, or an https URL to fetch it from
min 1 charmax 7200000 chars - titlestringrequired
What the screen is, in the product's words: 'Invoices list', 'Checkout: payment'
min 1 charmax 200 chars - urlstringoptional
The page or route the screen shows (https://app.example.com/invoices or /invoices)
max 1000 chars - componentstringoptional
The component it belongs to: its id, clientId or label. Omit and System Atlas matches it
min 1 charmax 200 chars - interfacestringoptional
A catalog interface id or label, if the screen is one
min 1 charmax 200 chars - flow_stepstring | numberoptional
Its place in a flow: a number, or 'checkout: payment'
Request
curl -X POST "https://systematlas.org/api/v1/workspaces/acme-builders/upload/screenshot" \
-H "Authorization: Bearer sa_…" \
-H "content-type: application/json" \
-d '{"image":"iVBORw0KGgo…","title":"Invoices list","url":"/invoices"}'Response
201 with the result in data (abbreviated here). Errors are listed in Errors and limits.
{
"data": {
"id": "5b1e…",
"duplicate": false,
"tier": "private",
"component": "Billing app"
}
}Over MCP
The same call as an MCP tool: upload_screenshot.