{"openapi":"3.1.0","info":{"title":"StampSend API","description":"Upload a file, get a link, see who opened it, page by page.\n\nBase path `/v1`. Errors are `{ error: { code, message, details? } }`.\n\nAuthenticate with an API key (`Authorization: Bearer ac_stamp_...`, made at https://app.stampsend.com/settings/api-keys) or a Firebase ID token from the web app. A key never does more than the person who made it could do in the app; its scopes narrow that further (read, write, send, admin).\n\nAgents: the MCP server is at https://api.stampsend.com/mcp (manifest https://api.stampsend.com/.well-known/mcp.json); instructions at https://stampsend.com/agents.md.","version":"1.0.0","contact":{"name":"StampSend","url":"https://stampsend.com"}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"ac_stamp_<32 base62>","description":"An API key from https://app.stampsend.com/settings/api-keys."},"firebase":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A Firebase ID token, as the web app sends."}},"schemas":{}},"paths":{"/.well-known/mcp.json":{"get":{"summary":"MCP manifest","tags":["Agents"],"description":"Where the MCP server is, how to authenticate, and the tools it offers. The marketing site serves the same document.","security":[],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/comments":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/reactions":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs":{"post":{"summary":"Start a team","tags":["Teams"],"responses":{"200":{"description":"Default Response"}}},"get":{"summary":"Your teams","tags":["Teams"],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/item-defaults":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/invites":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/invites/{token}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/invites/{token}/signin-code":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/invites/{token}/resend":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/invites/{token}/accept":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/members/{userId}":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"userId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/billing-portal":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/checkout":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/interval/preview":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/interval":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/cancel":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/resume":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/seats/preview":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/seats":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/invites/{inviteId}":{"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"inviteId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/request-links":{"post":{"summary":"Create a request link","tags":["Request links"],"responses":{"200":{"description":"Default Response"}}},"get":{"summary":"List request links","tags":["Request links"],"responses":{"200":{"description":"Default Response"}}}},"/v1/request-links/{id}":{"patch":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/r/{token}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"token","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/device/codes":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/device/handoff":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/device/codes/{userCode}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"userCode","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/device/codes/{userCode}/decision":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"userCode","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/device/token":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/device/sessions":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/device/sessions/{id}":{"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/me":{"get":{"summary":"Who am I","tags":["Account"],"responses":{"200":{"description":"Default Response"}}},"patch":{"summary":"Change your name or theme","tags":["Account"],"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}}},"/v1/me/default-org":{"put":{"summary":"Set the team you work in by default","tags":["Account"],"responses":{"200":{"description":"Default Response"}}}},"/v1/me/item-defaults":{"get":{"responses":{"200":{"description":"Default Response"}}},"put":{"responses":{"200":{"description":"Default Response"}}}},"/v1/me/avatar":{"put":{"responses":{"200":{"description":"Default Response"}}},"delete":{"responses":{"200":{"description":"Default Response"}}}},"/v1/me/onboarded":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/me/deletion":{"get":{"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/branding":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/branding/logo":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/branding/domain":{"put":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/orgs/{id}/branding/domain/verify":{"post":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/api-keys":{"post":{"summary":"Create an API key","tags":["API keys"],"description":"Makes a key for the signed-in person. The secret (`ac_stamp_...`) is in the response once and never again. Scopes narrow what the key may do; a key never does more than its owner could. Requires a session, not a key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"What this key is for: \"Claude Desktop\", \"nightly report\"."},"scopes":{"type":"array","items":{"type":"string","enum":["read","write","send","admin"]},"description":"Defaults to [\"read\"]."},"expiresInDays":{"type":"integer","minimum":1,"maximum":3650,"description":"Omit for a key that lasts until revoked."},"orgId":{"type":["string","null"],"description":"The team the key is made on and works in by default. Omit for the X-Org-Id header or your default team; \"personal\" or null for your own library."}}}}}},"responses":{"201":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string","description":"The first characters of the secret, for telling keys apart."},"scopes":{"type":"array","items":{"type":"string","enum":["read","write","send","admin"]}},"orgId":{"type":["null","string"]},"userId":{"type":"string"},"owner":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":["null","string"]}}},"lastUsedAt":{"type":["null","string"],"format":"date-time"},"expiresAt":{"type":["null","string"],"format":"date-time"},"revokedAt":{"type":["null","string"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}},"secret":{"type":"string","description":"Shown once."}}}}}}}},"get":{"summary":"List API keys","tags":["API keys"],"description":"Your own live keys, or with ?orgId= the live keys made by everyone on a team you administer.","parameters":[{"schema":{"type":"string"},"in":"query","name":"orgId","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string","description":"The first characters of the secret, for telling keys apart."},"scopes":{"type":"array","items":{"type":"string","enum":["read","write","send","admin"]}},"orgId":{"type":["null","string"]},"userId":{"type":"string"},"owner":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":["null","string"]}}},"lastUsedAt":{"type":["null","string"],"format":"date-time"},"expiresAt":{"type":["null","string"],"format":"date-time"},"revokedAt":{"type":["null","string"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"}}}}}}}}}}}},"/v1/api-keys/{id}":{"delete":{"summary":"Revoke an API key","tags":["API keys"],"description":"The key stops working at once. Its owner, or an admin of the team it was made on. Requires a session, not a key.","parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"204":{"description":"Default Response"}}}},"/v1/documents":{"post":{"summary":"Create a document and get an upload URL","tags":["Documents"],"responses":{"200":{"description":"Default Response"}}},"get":{"summary":"List documents","tags":["Documents"],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/versions":{"post":{"summary":"Upload a new version behind the same link","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/upload-parts":{"post":{"summary":"Sign one or more parts of a multipart upload","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/upload-complete":{"post":{"summary":"Assemble a multipart upload from its signed parts","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/complete":{"post":{"summary":"Finish an upload","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}":{"get":{"summary":"Get a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"summary":"Change a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"summary":"Delete a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/tags":{"post":{"summary":"Tag a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/tags/{tagId}":{"delete":{"summary":"Take a tag off a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true},{"schema":{"type":"string"},"in":"path","name":"tagId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/star":{"put":{"summary":"Star a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"summary":"Unstar a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/archive":{"post":{"summary":"Archive a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/unarchive":{"post":{"summary":"Unarchive a document","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/bulk":{"post":{"summary":"Star, unstar, archive or unarchive several documents","tags":["Documents"],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/shares":{"get":{"summary":"The invited list","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"put":{"summary":"Set the invited list","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/analytics":{"get":{"summary":"Who opened it, which pages, for how long","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/last-open":{"get":{"summary":"When it was last opened, and by whom","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/views":{"get":{"summary":"How many times it was viewed","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/documents/{id}/viewers.csv":{"get":{"summary":"Viewers as a CSV (team plan)","tags":["Documents"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/spaces":{"get":{"summary":"List spaces","tags":["Spaces"],"responses":{"200":{"description":"Default Response"}}},"post":{"summary":"Create a space","tags":["Spaces"],"responses":{"200":{"description":"Default Response"}}}},"/v1/spaces/{id}":{"get":{"summary":"Get a space and its documents","tags":["Spaces"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"summary":"Change a space","tags":["Spaces"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}":{"get":{"summary":"Resolve a share link","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/vanity/{orgSlug}/{linkSlug}":{"get":{"summary":"Resolve a custom share address","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"orgSlug","required":true},{"schema":{"type":"string"},"in":"path","name":"linkSlug","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/gate":{"post":{"summary":"Answer the gate","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/beacon":{"post":{"summary":"Record a page view","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/theme":{"get":{"summary":"The visitor's theme, as their cookie holds it","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}},"post":{"summary":"Keep the visitor's theme in a cookie","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/share/{shareId}/file":{"get":{"summary":"The file, for a viewer holding a token","tags":["Share"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/items/{id}/send":{"post":{"summary":"Email the share link to one or more addresses","tags":["Items"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/items/{id}/sends":{"get":{"summary":"Who the share link was sent to, and who opened it","tags":["Items"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/items/{id}/sends/remind":{"post":{"summary":"Remind one address that has not opened it","tags":["Items"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/v1/alerts":{"get":{"summary":"Open alerts emailed to you, newest first","tags":["Alerts"],"responses":{"200":{"description":"Default Response"}}}},"/v1/alerts/settings":{"get":{"summary":"Your default for open alerts","tags":["Alerts"],"responses":{"200":{"description":"Default Response"}}},"put":{"summary":"Set your default for open alerts","tags":["Alerts"],"responses":{"200":{"description":"Default Response"}}}},"/mcp":{"get":{"summary":"MCP server (Streamable HTTP)","tags":["Agents"],"description":"StampSend over the Model Context Protocol. POST JSON-RPC messages here with a Bearer credential; the tools are listed at /.well-known/mcp.json and by tools/list. Stateless: no sessions to resume, so GET and DELETE answer 405.","security":[{"apiKey":[]},{"firebase":[]}],"responses":{"200":{"description":"Default Response"}}},"post":{"summary":"MCP server (Streamable HTTP)","tags":["Agents"],"description":"StampSend over the Model Context Protocol. POST JSON-RPC messages here with a Bearer credential; the tools are listed at /.well-known/mcp.json and by tools/list. Stateless: no sessions to resume, so GET and DELETE answer 405.","security":[{"apiKey":[]},{"firebase":[]}],"responses":{"200":{"description":"Default Response"}}},"delete":{"summary":"MCP server (Streamable HTTP)","tags":["Agents"],"description":"StampSend over the Model Context Protocol. POST JSON-RPC messages here with a Bearer credential; the tools are listed at /.well-known/mcp.json and by tools/list. Stateless: no sessions to resume, so GET and DELETE answer 405.","security":[{"apiKey":[]},{"firebase":[]}],"responses":{"200":{"description":"Default Response"}}}},"/v1/feature-requests/uploads":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/v1/feature-requests":{"post":{"responses":{"200":{"description":"Default Response"}}}},"/d/{shareId}":{"get":{"parameters":[{"schema":{"type":"string"},"in":"path","name":"shareId","required":true}],"responses":{"200":{"description":"Default Response"}}}}},"servers":[{"url":"https://api.stampsend.com","description":"production"}],"security":[{"apiKey":[]},{"firebase":[]}],"tags":[{"name":"API keys","description":"Make, list and revoke the keys that let an agent or a script act as you."},{"name":"Agents","description":"The Model Context Protocol server and its manifest."},{"name":"Account","description":"The signed-in person."},{"name":"Documents","description":"A document behind a link: create, read, change, delete, its versions and invited list."},{"name":"Spaces","description":"Several documents under one link."},{"name":"Share","description":"What a viewer holding a link gets. Public; the link is the credential."},{"name":"Request links","description":"Standing invitations: \"send me a file\"."},{"name":"Teams","description":"Organizations, members, invites, seats, billing."}],"externalDocs":{"url":"https://stampsend.com/agents.md","description":"StampSend for agents"}}