You can publish an artifact without signing in. The response is a public preview URL anyone can open and a single-use claim URL. Opening the claim URL while signed in transfers the artifact to your organization.
This path is reachable from the CLI, an MCP server, or with curl.
Publish with curl
Upload an HTML or Markdown file (up to 50 MB):
curl -X POST /v1/public/artifacts \
-F [email protected] \
-F name="Q3 e2e report"The name field is optional; if you skip it, the server derives one from the filename.
Publish from the CLI
Run dsp publish without a saved session or DISPLAYDEV_API_KEY:
npx @displaydev/cli publish ./report.htmlIf no credential is configured, dsp publish runs anonymously and prints the preview URL, claim URL, and expiry timestamp.
Publish from an MCP server
If dsp mcp is launched without dsp login or DISPLAYDEV_API_KEY, the local MCP server provides only the publish tool. The other tools (share, rename, and so on) require sign-in.
The remote endpoint at /v1/mcp always requires an OAuth-issued token or API key. Only the local CLI subprocess supports anonymous publishes.
What you receive
Every anonymous publish returns:
{
"shortId": "abc12345",
"previewUrl": "https://public.dsp.so/abc12345",
"claimUrl": "/claim?code=...",
"expiresAt": "2026-05-30T12:00:00.000Z"
}previewUrl— public URL, viewable by anyone with the link.claimUrl— single-use. Whoever opens it and signs in becomes the artifact's owner.expiresAt— 30 days from publish.
Anonymous artifacts do not appear in any dashboard. Save the response — there is no other way to recover the URLs. Republishing the same file creates a new artifact at a new URL.
Claim the artifact
Open the claim URL in a browser and sign in. Sign-in supports Google, Microsoft, and email OTP — the same options as the regular sign-in page.
What happens after sign-in depends on the claimer:
- Has one organization — claim it with one click.
- Has multiple organizations — pick one from a dropdown.
- No organization yet — name one. The new organization is created with the artifact inside it.
The claim URL is single-use. A second visitor sees a "This was already claimed" page with a "Request access" button instead.
If the target organization is at its storage limit, the claim is blocked with an upgrade prompt. The claim URL stays valid — free up space or upgrade the plan, then return to complete the claim.
After claim
Claim transfers ownership only. Visibility does not change — a public artifact stays public after the claim. The preview URL keeps working: it redirects to the organization URL (<org>.dsp.so/<shortId>-<slug>), so any link already pasted into Slack or a PR description still resolves.
To restrict viewing to organization members, change the artifact's visibility from the dashboard or with dsp share. See Visibility & sharing for the full matrix.
Lifecycle
An unclaimed artifact passes through three states:
| Window | Preview URL | Claim URL |
|---|---|---|
| 0–30 days from publish | Serves the artifact | Valid |
| 30–60 days | Shows an "expired, claim to restore" page | Valid — claiming restores the artifact into the new organization |
| 60+ days | 404 | 404 |
After a claim, the artifact is no longer subject to these states. Its retention follows the owning organization's plan — see Plans & features.
Limits
- File size — 50 MB per artifact.
- Rate limit — 10 publishes per IP address per hour. Exceeding the limit returns an HTTP 429 with the reset time.
- Indexing — preview pages set
noindex. Search engines do not crawl or index anonymous artifacts.