{"openapi":"3.1.0","info":{"title":"deed.page API","version":"1.0.0","description":"Publish a folder or a few files to a live, permanent HTTPS URL with one PUT or POST. No account, no email code, no claim link, no 24-hour expiry. The agent chooses the slug. Use when asked to \"publish this\", \"host this\", \"deploy this\", \"share this on the web\", \"make a website\", \"put this online\", \"create a webpage\", or \"generate a URL\", or when a 24-hour anonymous link is not enough.","contact":{"name":"Avatar 8 LLC","email":"ops@avatar33.com"},"termsOfService":"https://deed.page/terms"},"servers":[{"url":"https://deed.page"}],"paths":{"/v1/sites":{"put":{"operationId":"publishSite","summary":"Publish files to a permanent URL","security":[{},{"bearer":[]}],"parameters":[{"name":"slug","in":"query","schema":{"type":"string"},"description":"Slug (also X-Slug header)."},{"name":"X-Slug","in":"header","schema":{"type":"string"}},{"name":"X-Merge","in":"header","schema":{"type":"string","enum":["1","0"]},"description":"Add files to the current version."},{"name":"X-Spa","in":"header","schema":{"type":"string","enum":["1","0"]}},{"name":"X-Ttl","in":"header","schema":{"type":"integer"},"description":"Opt-in expiry seconds. Default permanent."},{"name":"X-Client","in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/gzip":{"schema":{"type":"string","format":"binary"},"description":"gzip tarball"},"application/x-tar":{"schema":{"type":"string","format":"binary"}},"text/html":{"schema":{"type":"string"},"description":"single page, stored as index.html"},"multipart/form-data":{"schema":{"type":"object","additionalProperties":{"type":"string","format":"binary"}}},"application/json":{"schema":{"type":"object","required":["files"],"properties":{"slug":{"type":"string"},"files":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","properties":{"base64":{"type":"string"},"content":{"type":"string"}}}]}}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"400":{"description":"Bad body or slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unknown token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Quota","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Slug taken (see suggestion)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"publishSitePost","summary":"Publish files to a permanent URL","security":[{},{"bearer":[]}],"parameters":[{"name":"slug","in":"query","schema":{"type":"string"},"description":"Slug (also X-Slug header)."},{"name":"X-Slug","in":"header","schema":{"type":"string"}},{"name":"X-Merge","in":"header","schema":{"type":"string","enum":["1","0"]},"description":"Add files to the current version."},{"name":"X-Spa","in":"header","schema":{"type":"string","enum":["1","0"]}},{"name":"X-Ttl","in":"header","schema":{"type":"integer"},"description":"Opt-in expiry seconds. Default permanent."},{"name":"X-Client","in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/gzip":{"schema":{"type":"string","format":"binary"},"description":"gzip tarball"},"application/x-tar":{"schema":{"type":"string","format":"binary"}},"text/html":{"schema":{"type":"string"},"description":"single page, stored as index.html"},"multipart/form-data":{"schema":{"type":"object","additionalProperties":{"type":"string","format":"binary"}}},"application/json":{"schema":{"type":"object","required":["files"],"properties":{"slug":{"type":"string"},"files":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","properties":{"base64":{"type":"string"},"content":{"type":"string"}}}]}}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"400":{"description":"Bad body or slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unknown token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Quota","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Slug taken (see suggestion)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"listSites","summary":"List sites owned by the bearer token","security":[{"bearer":[]}],"responses":{"200":{"description":"Sites"},"401":{"description":"Missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/sites/{slug}":{"put":{"operationId":"publishToSlug","summary":"Publish files to a permanent URL","security":[{},{"bearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Merge","in":"header","schema":{"type":"string","enum":["1","0"]},"description":"Add files to the current version."},{"name":"X-Spa","in":"header","schema":{"type":"string","enum":["1","0"]}},{"name":"X-Ttl","in":"header","schema":{"type":"integer"},"description":"Opt-in expiry seconds. Default permanent."},{"name":"X-Client","in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/gzip":{"schema":{"type":"string","format":"binary"},"description":"gzip tarball"},"application/x-tar":{"schema":{"type":"string","format":"binary"}},"text/html":{"schema":{"type":"string"},"description":"single page, stored as index.html"},"multipart/form-data":{"schema":{"type":"object","additionalProperties":{"type":"string","format":"binary"}}},"application/json":{"schema":{"type":"object","required":["files"],"properties":{"slug":{"type":"string"},"files":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","properties":{"base64":{"type":"string"},"content":{"type":"string"}}}]}}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"400":{"description":"Bad body or slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unknown token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Quota","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Slug taken (see suggestion)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"publishToSlugPost","summary":"Publish files to a permanent URL","security":[{},{"bearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-Merge","in":"header","schema":{"type":"string","enum":["1","0"]},"description":"Add files to the current version."},{"name":"X-Spa","in":"header","schema":{"type":"string","enum":["1","0"]}},{"name":"X-Ttl","in":"header","schema":{"type":"integer"},"description":"Opt-in expiry seconds. Default permanent."},{"name":"X-Client","in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/gzip":{"schema":{"type":"string","format":"binary"},"description":"gzip tarball"},"application/x-tar":{"schema":{"type":"string","format":"binary"}},"text/html":{"schema":{"type":"string"},"description":"single page, stored as index.html"},"multipart/form-data":{"schema":{"type":"object","additionalProperties":{"type":"string","format":"binary"}}},"application/json":{"schema":{"type":"object","required":["files"],"properties":{"slug":{"type":"string"},"files":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"object","properties":{"base64":{"type":"string"},"content":{"type":"string"}}}]}}}}}}},"responses":{"200":{"description":"Updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResult"}}}},"400":{"description":"Bad body or slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unknown token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Quota","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Slug taken (see suggestion)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"getSite","summary":"Public metadata for a slug","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Site"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteSite","summary":"Delete a site you own","security":[{"bearer":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"},"403":{"description":"Not owner","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/whoami":{"get":{"operationId":"whoami","summary":"Plan and limits for the token","security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"}}}},"/api/v1/billing/checkout":{"post":{"operationId":"createCheckout","summary":"Stripe Checkout URL for a paid plan (a human pays)","security":[{"bearer":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plan":{"type":"string","enum":["hobby","pro"]}}}}}},"responses":{"200":{"description":"checkout_url"},"401":{"description":"Missing token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/billing/portal":{"post":{"operationId":"createPortal","summary":"Stripe billing portal URL","security":[{"bearer":[]}],"responses":{"200":{"description":"portal_url"}}}},"/api/v1/health":{"get":{"operationId":"health","summary":"Health","responses":{"200":{"description":"ok"}}}},"/mcp":{"post":{"operationId":"mcp","summary":"MCP JSON-RPC (Streamable HTTP)","responses":{"200":{"description":"JSON-RPC response"}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Token minted on first publish (deed_tok_...)."}},"schemas":{"Error":{"type":"object","required":["code","message","retry_after","docs_url"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retry_after":{"type":["number","null"]},"docs_url":{"type":"string"},"suggestion":{"type":"string"}}},"PublishResult":{"type":"object","required":["ok","url","path_url","slug","version","unchanged","permanent","bytes"],"properties":{"ok":{"type":"boolean"},"url":{"type":"string","format":"uri"},"path_url":{"type":"string","format":"uri"},"slug":{"type":"string"},"version":{"type":"string","examples":["v1"]},"unchanged":{"type":"boolean"},"permanent":{"type":"boolean"},"expires_at":{"type":["string","null"]},"bytes":{"type":"integer"},"files":{"type":"integer"},"plan":{"type":"string"},"token":{"type":"string","description":"Only on the first anonymous publish. Store it."}}}}}}