Publish an artifact
const url = 'https://shareout.site/v1/publish';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"My App","slug":"my-app","entrypoint":"index.html","visibility":"public","files":[{"path":"index.html","content":"<!DOCTYPE html><h1>Hello</h1>","mime":"text/html","encoding":"utf8"}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://shareout.site/v1/publish \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "My App", "slug": "my-app", "entrypoint": "index.html", "visibility": "public", "files": [ { "path": "index.html", "content": "<!DOCTYPE html><h1>Hello</h1>", "mime": "text/html", "encoding": "utf8" } ] }'Create a new artifact or push a new version of an existing one.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
Display name.
URL slug. Auto-generated if omitted.
object
‘unlisted’ was retired 2026-07 — still accepted as input and treated as ‘public’.
object
Data URL or absolute URL to a PNG icon.
Row-level access policy for per-viewer data filtering.
object
Turns on the visitor chat agent.
object
Examples
Single HTML file
{ "name": "My App", "slug": "my-app", "entrypoint": "index.html", "visibility": "public", "files": [ { "path": "index.html", "content": "<!DOCTYPE html><h1>Hello</h1>", "mime": "text/html", "encoding": "utf8" } ]}Responses
Section titled “ Responses ”Published
object
object
object
object
Preferred share URL for workspace artifacts (https://{workspace}.shareout.site/{slug}/). Omitted for personal artifacts.
Advisory HTML editor-readiness profile (HTML artifacts only). Never blocks publishing.
object
object
object
object
object
Human-readable message when publish was adjusted (governance, caps, email gate).
Present when workspace policy requires teammate approval before going open.
object
Number of approvers the requester must nominate.
object
Example
{ "editor_readiness": { "manifest": "valid" }, "moderation": { "status": "approved" }}Invalid request
object
Human-readable message.
Machine-readable error code.
Example
{ "success": false}Authentication required
object
Human-readable message.
Machine-readable error code.
Example
{ "success": false}Slug taken or version conflict
object
Human-readable message.
Machine-readable error code.
Example
{ "success": false}